
CVE-2025-52691(SmarterMail 임의 파일 업로드 RCE)에 대한 향상된 개념 증명(PoC) 익스플로잇으로, 스텔스 난독화, 지속성, 데이터 유출, 대화형 모드와 같은 APT급 기능을 포함합니다. 교육 및 승인된 테스트 용도로만 사용하십시오. 원본 PoC에 대한 크레딧은 yt2w/CVE-2025-52691에게 있습니다.
이것은 SmarterTools SmarterMail 이메일 서버 소프트웨어의 중요한 취약점인 CVE-2025-52691에 대한 향상된 개념 증명(PoC) 익스플로잇으로, 인증되지 않은 임의 파일 업로드를 허용하여 잠재적으로 원격 코드 실행(RCE)으로 이어질 수 있습니다. 이 버전은 향상된 은닉성, 지속성 및 운영 능력을 위한 APT 수준의 기술을 통합하여 고급 침투 테스트 및 레드 팀 시나리오에 적합합니다.
경고: 이 도구는 교육 및 승인된 테스트 목적으로만 사용됩니다. 명시적 허가 없이 시스템을 대상으로 한 무단 사용은 불법적이고 비윤리적입니다. 저자는 오용에 대해 어떠한 책임도 지지 않습니다.
requests, uuid, base64, random, time, logging, re
pip install requests표준 라이브러리 외에 추가 종속성은 필요하지 않습니다.
저장소를 클론하고 Python으로 스크립트를 실행합니다.
python exploit.py <target_url> [options]
<target_url>: SmarterMail 서버의 기본 URL(예: https://mail.example.com).--targets-file <file>: 대상 URL 목록이 포함된 파일의 경로(줄당 하나).-c, --command <cmd>: 셸 업로드 후 실행할 명령(예: whoami).-t, --timeout <seconds>: 요청 시간 초과(기본값: 30).--proxy <url>: 프록시 URL(예: http://127.0.0.1:8080).--no-verify: SSL 인증서 검증을 비활성화합니다.--check-only: 대상이 활성 상태이고 SmarterMail로 보이는지만 확인합니다.--persistence: 예약 작업을 통해 지속성을 설정합니다.--exfil <remote:local>: 파일을 유출합니다(예: C:\\path\\to\\file.txt:local_copy.txt).--interactive: 대화형 명령 실행 모드로 전환합니다.--cleanup: 사용 후 업로드된 셸을 제거합니다.기본 익스플로잇:
python exploit.py https://mail.vulnerable.com
명령 실행:
python exploit.py https://mail.vulnerable.com -c "systeminfo"
프록시 및 지속성 사용:
python exploit.py https://mail.vulnerable.com --proxy http://127.0.0.1:8080 --persistence
정리 기능이 포함된 대화형 모드:
python exploit.py https://mail.vulnerable.com --interactive --cleanup
파일 기반 일괄 익스플로잇:
python exploit.py --targets-file targets.txt
성공적인 익스플로잇 시 셸 경로, 접근 URL(인증 비밀번호 포함) 및 명령 출력이 표시됩니다. 로그는 콘솔에 출력됩니다. 파일 로깅이 필요한 경우 필요에 따라 스크립트의 setup_logging을 수정하세요.
이 향상된 버전은 yt2w의 원본 PoC를 기반으로 합니다. 주요 수정 사항에는 APT 수준의 기능, 난독화 및 사용성 개선이 포함됩니다. 기초 작업을 해주신 원저자에게 감사드립니다.
이 도구는 교육 목적으로 취약점을 시연합니다. 책임감 있게 사용하고, 소유하거나 명시적 테스트 허가를 받은 시스템에서만 사용하세요. 모든 관련 법률 및 윤리적 지침을 준수하세요. 개발자는 오용에 대한 어떠한 책임도 지지 않습니다.
문제가 발생하거나 제안 사항이 있으면 GitHub에 이슈를 등록하세요.
MIT 라이선스. 자세한 내용은 LICENSE를 참조하세요.
--log-level <level>: 로깅 수준을 설정합니다(DEBUG, INFO, WARNING, ERROR; 기본값: INFO).