xepor
v0.6.0
Xepor(发音为/ˈzɛfə/ , zephyr)是一个面向逆向工程师和安全研究人员的 Web 路由框架。它为黑客提供了类似 Flask 的 API,以人性化的编码风格拦截和修改 HTTP 请求和/或 HTTP 响应。
该项目旨在与 mitmproxy 一起使用。用户使用xepor
编写脚本,并使用mitmproxy -s your-script.py
在mitmproxy 中运行脚本。
如果您想从 PoC 进入生产,从演示(例如 http-reply-from-proxy.py、http-trailers.py、http-stream-modify.py)到可以用 WiFi Pineapple 取出的东西,那么Xepor 适合您!
@api.route()
编写所有内容,就像 Flask 一样!将所有内容写在一个脚本中,不再使用if..else
。InterceptedAPI
实例中处理多个主机。mitmproxy
/ mitmweb
+ regular
/ transparent
/ socks5
/ reverse:SPEC
/ upstream:SPEC
)。 该项目不提供 SSL 剥离。
pip install xepor
以 example/httpbin 中的脚本为例。
mitmweb -s example/httpbin/httpbin.py
将浏览器 HTTP 代理设置为http://127.0.0.1:8080
,并通过 http://127.0.0.1:8081/ 访问 Web 界面。
从 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 ]