
📦 Pluck CMS 4.7.18 - 인증된 RCE 익스플로잇 (CVE-2023-50564). 업로드 제한 우회 및 원격 실행. 🎯
exploit.py 🐍💥
⚠️ 법적/윤리적 경고: 이 스크립트는 승인된 환경(CTF, 랩, 허가된 펜테스팅)에서만 사용하세요 ✅. 허가 없이 시스템에 사용하지 마세요 ❌.
🧾 이 스크립트는 무엇을 하나요?
exploit_greenhorn.py는 웹 패널에서 일반적인 익스플로잇 체인을 자동화합니다:
✅ 패널에 로그인 (유효한 비밀번호 필요) ✅ 메모리에서 ZIP 생성 (로컬 파일 쓰지 않음) 📦 ✅ 내부에 리버스 셸이 있는 rev.php 포함 🔁🐚 ✅ ZIP을 "모듈"로 패널에 업로드 🧩⬆️ ✅ 업로드된 PHP의 URL을 열어 페이로드 "폭발" 🚀
📌 모듈 이름은 충돌을 피하기 위해 무작위로 생성됩니다 (예: abcdefg, xqpmzui 등) 🎲
🧰 요구 사항
Python 3.8+ 🐍
의존성: requests 📌
설치: pip로 requests 라이브러리 설치 (pip install requests) ✅
⚙️ 설정 (중요 🔧)
스크립트 내에 '당신의 데이터' 섹션이 있으며 조정해야 합니다:
RHOST_DOMAIN 🌐 → 대상 URL (http:// 또는 https:// 포함)
LHOST_IP 🧭 → 셸을 받을 자신의 IP (일반적으로 VPN/tun0)
LHOST_PORT 🔌 → 수신할 포트
PASSWORD 🔑 → 패널 비밀번호 (스크립트는 무차별 대입을 하지 않음)
✅ 팁: 가장 흔히 실패하는 부분은 LHOST_IP입니다 (VPN 인터페이스의 올바른 IP를 입력하세요) 😅
🎧 리스너 (실행 전)
익스플로잇을 실행하기 전에 리버스 셸을 받을 리스너를 여세요 👂🐚
예: netcat을 LHOST_PORT에 설정한 포트(예: 4444)에서 듣기. 듣고 있지 않으면 아무것도 도착하지 않습니다 📭.
▶️ 사용법
RHOST_DOMAIN, LHOST_IP, LHOST_PORT 및 PASSWORD를 설정하세요 ✅
리스너를 여세요 🎧
Python으로 스크립트 실행 🐍
일반적으로 볼 수 있는 출력:
[] Objetivo: http://greenhorn.htb
[] Creando modulo limpio: xqpmzui [] Logueando... [+] Login OK. [] Subiendo payload... [*] Detonando en: http://greenhorn.htb/data/modules/xqpmzui/rev.php
[+] ¡Timeout! (Buena señal, revisa tu netcat)
😎 참고: 'Timeout! (좋은 신호)'는 일반적으로 정상입니다 ✅ PHP가 리버스 셸을 열면 웹 요청이 대화형 세션이 살아있는 동안 '멈춰' 있을 수 있기 때문입니다 🔁
🧠 내부적으로 어떻게 작동하나요? (쉽게 설명)
무작위 모듈 이름 생성 🎲
메모리에서 ZIP 생성 📦 (플랫 구조, 내부 폴더 없음)
내부에 LHOST_IP:LHOST_PORT로 연결되는 리버스 셸이 있는 rev.php 포함 📡
/login.php에 로그인 🔑 (호환성을 위해 Referer 포함)
/admin.php?action=installmodule에 ZIP 업로드 ⬆️🧩
/data/modules/<module_name>/rev.php에 접근하여 페이로드 실행 🚀🐚
🧪 문제 해결 (문제가 발생하는 경우)
❌ 로그인 실패
PASSWORD 확인 🔑
엔드포인트가 /login.php인지 확인
랩에서는 가끔 머신/서비스를 재시작해야 함 🔄
❌ 셸이 도착하지 않음
LHOST_IP 확인 🧭 (올바른 IP, 일반적으로 tun0)
올바른 포트에서 수신 중인지 확인 🔌🎧
필터링이 있는 경우 다른 포트 시도 (예: 443 또는 9001) 🚧
❌ 실행 시 404
모듈이 설치되지 않았을 수 있음 🧩
일부 설치에서는 경로가 변경됨; /data/modules/ 구조 확인 📁
🛡️ 참고 사항
로컬 디스크에 ZIP을 남기지 않음 (모두 메모리에서 처리) ✅
sys를 import 하지만 사용하지 않음 (원한다면 정리 가능) 🧹
신중하게 사용하세요 🧠😄
✅ 최종 면책 조항
보증 없음. 교육 및 승인된 용도로만 사용하세요. 허가 없이 사용하는 경우 본인 책임입니다 🚫⚖️