API FUZZING流程说明
REST API FUZZING 实验流程
我的设备:
windows11 + 谷歌pixel + 安卓9
环境:
adb + AppUIAutomator + mitmproxy
adb调试
建议有线连接,不用频繁的debug而且数据传输快,USB连接之后:
adb dedvices #查看当前连接的adb设备
mitm抓包部分
- 如果使用校园网抓包,要在电脑打开移动热点,确保手机和电脑在一个网段内,才能成功抓包。
- 连上热点后,电脑输入ipconfig,获取WLAN的ipv4地址
- 打开手机,在wifi那里配置代理,ip地址输入上一步抓到的,端口号默认为8080。
adb 获取APK包名
可以使用adb来为手机安装APK:
adb install -d xxx.apk
安装完成后,打开该apk,然后运行:
adb shell dumpsys window | findstr mCurrentFocus
获取手机当前正在运行activity的包名,包名为从左到右数第一个com开头的字段:
上图中包名为com.wuba
AppUIAutomator
AppUIAutomator在使用前,要把所有要运行的app的包名放在根目录的apk_pkgName.txt文件中,格式为 包名 | APK名字,如:
com.wuba | 58同城
放好后在当前文件夹打开终端,输入:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass #开放权限,windows必做
python test_integrate.py #运行
mitmproxy
在script.py文件夹打开终端,直接运行:
1 | mitmdump -s script_json.py |
如果没抓到包可能有以下情况:
- 不在一个网段
- 证书没配置好
- 代理的ip地址或端口号不对
对比脚本部分
为了方便,统一将对比的两个文件命名为 a.json 和 b.json,然后直接在compare.py所在文件夹打开终端,执行:
1 | python compare.py |
即可,会在当前目录下生成两个文件:
- cleaned_a.json: 仅保留了和 b 文件 domain+path 相同, 但是 params 不同的 api
- cleaned_b.json 同上
在运行完脚本后, 请自行在文本对比器里找出哪些 params 不同。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 貳壹肆の博客!
评论