Xepor是一款專為逆向分析工程師和安全研究專家設計的Web路由框架,該工具可以為研究人員提供類似Flask API的功能,支持以人類友好的方式攔截和修改HTTP請求或HTTP響應信息。
該項目需要與mitmproxy一起結合使用,用戶可以使用Xepor來編寫腳本,并在mitmproxy中使用下列命令來運行腳本:
mitmproxy -s your-script.py
功能介紹
1、使用@api.route()來編碼,和Flask類似,支持在一個腳本中完成所有任務。
2、支持處理多條URL路由,甚至可以在一個InterceptedAPI實例中處理多臺主機。
3、針對每個路由,可以選擇在連接到服務器之前修改請求,或者在轉發給用戶之前修改響應。
4、支持黑名單模式或白名單模式。
5、支持正則表達式匹配。
6、通過主機重映射定義跟匹配URL路徑。
7、結合mitmproxy實現更強大的功能。
使用場景
1、通過MitM實現AP安全測試和網絡釣魚測試;
2、通過iptables+透明代理嗅探來自特定設備的流量,使用Xepor動態修改Payload;
3、用大約100行代碼編寫復雜的網絡爬蟲...
工具下載
源碼下載
廣大研究人員可以使用下列命令將該項目源碼克隆至本地:
git clone https://github.com/xepor/xepor.git
pip安裝
pip install xepor
工具使用
我們以項目中examples/httpbin內的腳本為例給大家演示該工具的使用:
mitmweb --web-host=* --set connection_strategy=lazy -s example/httpbin/httpbin.py
在這個離職中,我們配置mitmproxy服務器的地址為127.0.0.1,你也可以將其修改為設備的其他IP地址。如果需要讓mitmproxy服務器以反向、上游和透明模式運行的話,則需要設置下列參數:
--set connection_strategy=lazy
此時Xepor將會正常功能工作,我們也建議設置該選項以保證工具的穩定運行。
接下來將瀏覽器HTTP代理設置為“http://127.0.0.1:8080”,并在瀏覽器中訪問“http://127.0.0.1:8081/”
然后,通過“http://httpbin.org/#/HTTP_Methods/get_get”發送一個GET請求,然后你將可以通過Xepor的mitmweb接口、瀏覽器開發者工具或Wireshark對數據請求進行修改。
httpbin.py會做下列兩件事情:
1、當用戶訪問“http://httpbin.org/get”時,向HTTP請求中注入一個查詢字符串參數“payload=evil_param”;
2、當用戶訪問“
http://httpbin.org/basic-auth/xx/xx/”時,從HTTP請求中嗅探“Authorization” Header,并將密碼打印給研究人員;
任務其實和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]
許可證協議
本項目的開發與發布遵循Apache-2.0開源許可證協議。
項目地址
Xepor:https://github.com/xepor/xepor