
Vuln lab: MainWP Dashboard <= 3.1.2 인증되지 않은 저장형 XSS
CVE-2016-15041 취약점 실습: MainWP Dashboard WordPress 플러그인 <= 3.1.2에서 인증 없이 발생하는 저장형 XSS
docker compose up -d --build
자동 설정을 위해 약 30초 기다립니다. 준비가 완료되면 실습에서 배너를 출력합니다.
docker compose logs -f wordpress
| 리소스 | URL / 자격 증명 |
|---|---|
| WordPress | http://localhost:8088 |
| 관리자 로그인 | admin / admin123 |
| 취약한 엔드포인트 | http://localhost:8088/wp-admin/admin-post.php?page=mainwp-setup&step=purchase_extension |
Nuclei:
nuclei -t https://raw.githubusercontent.com/projectdiscovery/nuclei-templates/main/http/cves/2016/CVE-2016-15041.yaml -u http://localhost:8088
수동 PoC:
./scripts/poc.sh http://localhost:8088
docker compose down -v
| 필드 | 값 |
|---|---|
| CVE | CVE-2016-15041 |
| 심각도 | 높음 |
| 유형 | 저장형 XSS (인증 불필요) |
| 영향받는 버전 | MainWP Dashboard <= 3.1.2 |
| 수정된 버전 |
MainWP Dashboard 빠른 설정 마법사는 인증 없이 접근 가능합니다. 공격자는 mwp_setup_purchase_username 매개변수를 통해 JavaScript를 주입할 수 있습니다. 페이로드는 WordPress 옵션에 저장되며, 관리자가 확장 페이지를 볼 때 이스케이프 없이 렌더링됩니다.
GET /wp-admin/admin-post.php?page=mainwp-setup&step=purchase_extension → CSRF 논스 획득 (인증 불필요)POST XSS 페이로드 (논스 포함, 인증 불필요)취약한 플러그인(v3.1.2)은 WordPress SVN 리비전 r1394563(2016년 4월 14일)에서 가져왔습니다. 취약점에 영향을 미치지 않는 사소한 PHP 8 호환 패치가 적용되었습니다:
__autoload()를 spl_autoload_register()로 대체XSS 취약점은 view/view-mainwp-extensions-view.php의 74번째 줄에 있으며, $username이 esc_attr() 없이 출력됩니다.
| 3.1.3 |