序言
在安全测试或者日常工作中,你是否会遇到需要要对HTTP(S)包进行改包回放、数据储存的场景?这时你通常会选择使用Wireshark、BurpSuite、Charles等工具,但是这些工具都无法提供灵活的协议数据替换和自定义存储能力。如果你想要通过配置或者脚本来实现自定义、可拓展的请求响应修改和全量协议数据的存储,那就来试试这个工具吧!
关于SWProxy
这是一款基于mitmproxy(python3)的极简代理工具,支持HTTP和HTTPS协议,能够通过代理配置(不限数量)或者自定义脚本(不限数量)实现URL、请求头、请求体、响应头、响应体中的任意数据的修改,以及Web请求的全量数据存储(当前版本数据仅可存储在mysql或sqlite中)。能够很方便的进行Web测试和详细的数据分析,同时也很容易将存储数据用在其他工具中。
功能介绍
安装
- 安装python(3.7)、mysql(8+)环境
- 下载代码
git clone https://github.com/r00tlin/swporxy.git
- 安装第三方库
pip3 install -r requirements.txt
- 导入自定义/mitmproxy证书(否则无法在https场景中使用!!!),可以参考文档:https://www.jianshu.com/p/036e5057f0b9
配置
- 自定义你的项目配置,对应的文件在项目路径/config.yaml,可以配置代理端口、数据库账号等信息
- 自定义你的代理配置,对应的文件在项目路径/httpproxy.json。具体的编写方法可以参考文档:项目路径/httpproxy.json.md
运行
终端执行命令:python3 SWProxy.py
根据配置的不同,代理可以实现通过直接配置模式和脚本模式,对请求/响应进行替换或存储,下面就针对用法进行详细说明。
a. 直接配置模式
替换规则
- 编写配置文件
{ "replace": [ { "id": 1, "point":"reqbody", "match":"你好", "replace":"好的", "ignorecase": true, "count": 0 } ] }
- 启动代理
python3 SWProxy.py
- 结果展示
存储规则
- 编写配置文件
{ "store": [ { "id": 1, "point":"url", "match":"ppp", "store":"url|reqheader|rspbody", "ignorecase": true, "count": 1 } ] }
- 启动代理
python3 SWProxy.py
- 结果展示(展示项目中数据选用的是mysql,通过配置也可以指定sqlite3,截图来自于mysqlworkbence)
b. 脚本模式
替换规则
- 编写配置文件
{ "replace": [ { "id": 1, "script":"ReplaceUA" } ] }
具体脚本见:项目目录/scripts/ReplaceUA.py(python脚本)
- 启动代理
python3 SWProxy.py
- 结果展示,访问httpbin.org网站进行测试,该网站能够返回详细的请求头请求体信息
存储规则
- 编写配置文件
{ "store": [ { "id": 1, "script":"StoreData" } ] }
见项目目录/scripts/StoreData.py(python脚本)
- 启动代理
python3 SWProxy.py
- 结果展示(展示项目中数据选用的是mysql,通过配置也可以指定sqlite3,截图来自于mysqlworkbence)
结果分析
1. 当代理配置为存储规则时,数据库中会记录匹配到的请求和响应信息。表中的数据可以通过配置文件进行修改(选择存储哪列的字段),所有存储的数据可以通过数据库客户端、代码进行进一步的分析。
2. 当代理配置为替换时,代理会直接将请求/响应替换成目标字符串,并完成该次请求。
实战演练
演练目标:寻找网站中所有jsonp的接口
演练过程:
- 首先根据目标分析,仅需要需要寻找接口,不需要很复杂的数据处理和计算逻辑,所以选择直接配置模式-存储规则即可。同时需要的存储的数据仅url(记录接口)、respbody(检查是否符合预期),所以最终产生的规则如下:
{ "store": [ { "id": 1, "point": "rspbody", "match": "^\\w+\\s*\\(\\s*(\\{.*\\}|null)\\s*\\)\\s*;?$", "store": "url|rspbody", "ignorecase": true, "count": 1 } ] }
2. 运行代理工具,并使用chrome浏览器SwitchyOmega插件设置好代理,然后正常访问浏览器。这里作者使用https://im.qq.com/index/、https://www.jd.com/进行测试。
3. 查看数据中记录的接口数据
总结:该示例仅展示了工具实用性的一部分,使用者可以根据自身需要,通过配置和脚本编写复杂的协议处理与数据计算方法。也可以与多进程/线程、协程结合完成丰富的测试需求,同时对于存储数据也高度可定制,方便与其他工具结合使用。
项目地址
GitHub:【SWPorxy】
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)