前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Xepor:一款针对逆向工程和安全分析的Web路由框架

Xepor:一款针对逆向工程和安全分析的Web路由框架

作者头像
FB客服
发布2023-03-30 19:41:53
2670
发布2023-03-30 19:41:53
举报
文章被收录于专栏:FreeBufFreeBuf

 关于Xepor 

Xepor是一款专为逆向分析工程师和安全研究专家设计的Web路由框架,该工具可以为研究人员提供类似Flask API的功能,支持以人类友好的方式拦截和修改HTTP请求或HTTP响应信息。

该项目需要与mitmproxy一起结合使用,用户可以使用Xepor来编写脚本,并在mitmproxy中使用下列命令来运行脚本:

代码语言:javascript
复制
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行代码编写复杂的网络爬虫...

 工具下载 

源码下载

广大研究人员可以使用下列命令将该项目源码克隆至本地:

代码语言:javascript
复制
git clone https://github.com/xepor/xepor.git

pip安装

代码语言:javascript
复制
pip install xepor

 工具使用 

我们以项目中examples/httpbin内的脚本为例给大家演示该工具的使用:

代码语言:javascript
复制
mitmweb --web-host=\* --set connection_strategy=lazy -s example/httpbin/httpbin.py

在这个离职中,我们配置mitmproxy服务器的地址为127.0.0.1,你也可以将其修改为设备的其他IP地址。如果需要让mitmproxy服务器以反向、上游和透明模式运行的话,则需要设置下列参数:

代码语言:javascript
复制
--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的方式来编写代码:

代码语言:javascript
复制
# 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开源许可证协议。

项目地址

https://github.com/xepor/xepor

参考资料

https://github.com/mitmproxy/mitmproxy/

https://github.com/mitmproxy/mitmproxy/blob/v7.0.4/examples/addons/http-reply-from-proxy.py

https://github.com/mitmproxy/mitmproxy/blob/v7.0.4/examples/addons/http-trailers.py

https://github.com/mitmproxy/mitmproxy/blob/v7.0.4/examples/addons/http-stream-modify.py

https://github.com/xepor/xepor-examples/tree/main/krisp/

https://github.com/xepor/xepor-examples/tree/main/polyv_scrapper/

精彩推荐

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •  关于Xepor 
  •  功能介绍 
  •  使用场景 
  •  工具下载 
    • 源码下载
      • pip安装
      •  工具使用 
      • 许可证协议
      • 项目地址
      • 参考资料
      相关产品与服务
      云开发 CLI 工具
      云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档