Xepor( /ˈzɛfə/ , zephyr로 발음)는 리버스 엔지니어 및 보안 연구원을 위한 웹 라우팅 프레임워크입니다. 해커가 인간 친화적인 코딩 스타일로 HTTP 요청 및/또는 HTTP 응답을 가로채고 수정할 수 있도록 Flask와 유사한 API를 제공합니다.
이 프로젝트는 mitmproxy와 함께 사용하기 위한 것입니다. 사용자는 xepor
로 스크립트를 작성하고 mitmproxy -s your-script.py
를 사용하여 mitmproxy 내에서 스크립트를 실행합니다.
PoC에서 프로덕션으로, 데모(예: http-reply-from-proxy.py, http-trailers.py, http-stream-modify.py)에서 WiFi 파인애플로 가져갈 수 있는 단계로 이동하려면 다음을 수행하세요. Xepor는 당신을 위한 것입니다!
@api.route()
로 모든 것을 코딩하세요! 모든 것을 하나의 스크립트로 작성하고 더 이상 if..else
작성하지 마세요.InterceptedAPI
인스턴스에서 여러 호스트를 포함한 여러 URL 경로를 처리합니다.mitmproxy
/ mitmweb
+ regular
/ transparent
/ socks5
/ reverse:SPEC
/ upstream:SPEC
)가 완벽하게 지원됩니다. 이 프로젝트에서는 SSL 스트리핑을 제공하지 않습니다.
pip install xepor
예제/httpbin의 스크립트를 예로 들어 보겠습니다.
mitmweb -s example/httpbin/httpbin.py
브라우저 HTTP 프록시를 http://127.0.0.1:8080
으로 설정하고 http://127.0.0.1:8081/에서 웹 인터페이스에 액세스합니다.
http://httpbin.org/#/HTTP_Methods/get_get에서 GET 요청을 보내면 mitmweb 인터페이스, 브라우저 개발 도구 또는 Wireshark에서 Xepor가 수정한 내용을 볼 수 있습니다.
httpbin.py
는 두 가지 작업을 수행합니다.
payload=evil_param
삽입합니다.Authorization
헤더를 스니핑하고 공격자에게 비밀번호를 인쇄합니다.mitmproxy가 항상 하는 일이지만 코드는 xepor 방식으로 작성되었습니다.
# https://github.com/xepor/xepor-examples/tree/main/httpbin/httpbin.py
from mitmproxy . http import HTTPFlow
from xepor import InterceptedAPI , RouteType
HOST_HTTPBIN = "httpbin.org"
api = InterceptedAPI ( HOST_HTTPBIN )
@ api . route ( "/get" )
def change_your_request ( flow : HTTPFlow ):
"""
Modify URL query param.
Test at:
http://httpbin.org/#/HTTP_Methods/get_get
"""
flow . request . query [ "payload" ] = "evil_param"
@ api . route ( "/basic-auth/{usr}/{pwd}" , rtype = RouteType . RESPONSE )
def capture_auth ( flow : HTTPFlow , usr = None , pwd = None ):
"""
Sniffing password.
Test at:
http://httpbin.org/#/Auth/get_basic_auth__user___passwd_
"""
print (
f"auth @ { usr } + { pwd } :" ,
f"Captured { 'successful' if flow . response . status_code < 300 else 'unsuccessful' } login:" ,
flow . request . headers . get ( "Authorization" , "" ),
)
addons = [ api ]