REST API FUZZING 实验流程

我的设备:
windows11 + 谷歌pixel + 安卓9
环境:
adb + AppUIAutomator + mitmproxy

adb调试

建议有线连接,不用频繁的debug而且数据传输快,USB连接之后:

adb dedvices       #查看当前连接的adb设备

mitm抓包部分

  1. 如果使用校园网抓包,要在电脑打开移动热点,确保手机和电脑在一个网段内,才能成功抓包。
  2. 连上热点后,电脑输入ipconfig,获取WLAN的ipv4地址
  3. 打开手机,在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

如果没抓到包可能有以下情况:

  1. 不在一个网段
  2. 证书没配置好
  3. 代理的ip地址或端口号不对

对比脚本部分

为了方便,统一将对比的两个文件命名为 a.json 和 b.json,然后直接在compare.py所在文件夹打开终端,执行:

1
python compare.py

即可,会在当前目录下生成两个文件:

  1. cleaned_a.json: 仅保留了和 b 文件 domain+path 相同, 但是 params 不同的 api
  2. cleaned_b.json 同上

在运行完脚本后, 请自行在文本对比器里找出哪些 params 不同。