"另类"APP漏洞挖掘
APP渗透常规思路 说到APP渗透,各位可能会想到脱壳、模拟器、刷机、挂代理,然后开展渗透测试。某次渗透测试通过url:下载apk文件,首先进行反编译,发现有壳,尝试脱壳失败。其次抓包的时候发现全部加密。 正常思路是脱壳APP、查询源码等等找加密方式,但是奈何本菜狗啥都不会这里另辟蹊径、走捷径找到了加密方式。 另辟蹊径获得严重漏洞 下载完毕APK之后,修改后缀为ZIP。apk文件中的assets
APP渗透常规思路
说到APP渗透,各位可能会想到脱壳、模拟器、刷机、挂代理,然后开展渗透测试。某次渗透测试通过url:下载apk文件,首先进行反编译,发现有壳,尝试脱壳失败。其次抓包的时候发现全部加密。

正常思路是脱壳APP、查询源码等等找加密方式,但是奈何本菜狗啥都不会这里另辟蹊径、走捷径找到了加密方式。
另辟蹊径获得严重漏洞
下载完毕APK之后,修改后缀为ZIP。apk文件中的assets目录,看到了www目录。

格式化文件umi.js,(https://www.1tool.site/#/javascript?id=1 ),使用notepadd++正则表达式匹配路径。

在源码中搜索路径和mode字符串,177个结果。

直接搜索常见的加密方式:ECB、CBC,发现key和偏移

将数据解密得到

可以看到method参数,继续在js中查看该格式的请求方式。找到一个请求为qryNextOrgStructureView,将请求方式替换为zyhyy.qryNextOrgStructureView,然后加密数据得到响应包。
return (0, r.requestWithContent)("zyhyy.qryOrgStructureView", {
user_name: e
})
}, t.queryNextOrgnization = function(e) {
var t = e.areaId,
n = void 0 === t ? "" : t,
o = e.staffType,
i = void 0 === o ? "" : o;
return (0, r.requestWithContent)("zyhyy.qryNextOrgStructureView", {
area_id: "" + n,
staff_type: "" + i
})

发现areaId值可用,于是在js文件中继续搜索method为zyhyy开头的,发现zyhyy.qryOrgInfoByAreaId,构造area_id值和staff_type值在数据包中:

构造请求包

加密发包
上面为构造的data数据,发包后解密响应体得到返回结果如下:

于是在通过上图中第二个接口:qryStaffInfoByOrgId 以及刚刚得到的org_id值,构造数据包并发包,后解密响应体获取到了该组织中的用户:

响应包

最后通过尝试爆破org_id的值,发现能通过org_id值爆破出所有组织的用户信息:

大佬,文中发包的加解密工具是什么