抓包改包存包,有它就够了!

抓包改包存包,有它就够了!

序言在安全测试或者日常工作中,你是否会遇到需要要对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】

💎 相关推荐

网络游戏排行榜
365平台官方版下载

网络游戏排行榜

📅 08-20 👁️ 5682
历代IPHONE的运行内存(RAM)是多大
365平台官方版下载

历代IPHONE的运行内存(RAM)是多大

📅 06-28 👁️ 6597
10大主流压力/负载/性能测试工具推荐
365bet特点

10大主流压力/负载/性能测试工具推荐

📅 08-23 👁️ 9730