Tengo una aplicación web ASP.Net MVC 4 que está alojada en un servidor Windows 2008. La aplicación está protegida por un proveedor de membresía ASP.Net personalizado. Solo los usuarios que tienen permiso del administrador tienen acceso. La aplicación contiene datos médicos confidenciales de individuos.
Recientemente, descubrí que 60 de los 320 usuarios registrados están enviando solicitudes sospechosas a mi sitio web. Estas solicitudes obtienen una respuesta HTTP de estado 404, ya que no existen en mi sitio y son inadecuadas. Como ejemplo, este es el subconjunto de URL que contienen 'admin':
/_vti_bin/_vti_adm/admin.dll
/admin.php
/admin/597ea5fc-0805-4b3c-8ab8-3d5320d8683c
/admin/chgpwd.php
/admin/default.asp
/AdminHTML/parse_xml.cgi
/admin-serv/authenticate
/admin-serv/config/admpw
/advwebadmin/adminsettings/browsewebalizerexe.asp
/advwebadmin/SQLServ/sqlbrowse.asp
/iisprotect/admin/GlobalAdmin.asp
/mailman/admin/mailman
/phpmyadmin/sql.php
/scripts/admin.cgi
/shop/admin.php
/shopscript/admin.php
/SiteServer/admin/
/store/admin.php
Se espera poco daño de una solicitud como /store/admin.php, ya que no hay archivos .php en el servidor. Todavía me molesta, porque mis usuarios han iniciado sesión cuando llegan las solicitudes. Es decir, las sesiones y las cookies de autenticación se envían con las solicitudes. Por lo tanto, si se enviara una solicitud válida, el servidor podría revelar información confidencial en la respuesta, ya que el servidor confía en que las solicitudes sean genuinas. Utilizo un token anti-falsificación para evitar la falsificación de solicitudes entre sitios, pero esto evitará solicitudes de obtención maliciosas. Estos son casi tan problemáticos, debido a los datos confidenciales en el sitio. Además, si las solicitudes sospechosas se originan en el navegador del usuario, no hay "sitios cruzados".
Hasta ahora, he podido confirmar que las solicitudes autenticadas llegan cuando el usuario realmente está usando la aplicación. Es decir, las solicitudes sospechosas llegan entre solicitudes válidas y mi registro también muestra que los usuarios han iniciado sesión. Ahora estoy intentando registrar solicitudes completas, incluidas direcciones IP de origen, encabezados HTTP y cookies. No es trivial, ya que mi aplicación está detrás de un servidor proxy inverso.
Mientras tanto, me pregunto cuál podría ser el origen de estas solicitudes, teniendo en cuenta que muchos de mis usuarios están involucrados. Podría ser:
- ¿Mucho malware presente en los navegadores de los usuarios?
- ¿Otro malware en los clientes?
- ¿Ataques de hombre en el medio?
- ¿Malware en el servidor web?
- Malware distribuido por mi aplicación web, javascript?
Además, la aplicación web se analiza regularmente con una herramienta de prueba de penetración de McAfee. Esta herramienta no inicia sesión. Descubrí que todas las URL en solicitudes sospechosas, hechas de sesiones de usuario, también las realiza McAfee (hasta ahora, 205 URL diferentes). Sin embargo, el propio McAfee también utiliza muchos otros (3300+). Esto me hace preguntarme si las solicitudes de los usuarios podrían mezclarse en algún lugar de la red, debido al almacenamiento en caché o lo que sea, por lo que realmente estoy viendo un problema. Por supuesto, tengo un problema mucho más grande si las solicitudes se mezclan. Por otro lado, las solicitudes están correlacionadas en el tiempo con las sesiones del usuario, no con los intervalos de ejecución de las pruebas de penetración y tal vez las URL son solo las vulnerabilidades que el malware está buscando.