freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

从一个App到getshell的一次经历
酒仙桥六号部队 2022-08-12 18:37:59 228233
所属地 北京

在一次授权渗透测试中,得知测试目标是拿到权限或者关键用户数据。客户一开始只提供了一个安卓apk,在这种情况下,我们要怎么顺利完成测试呢?

App测试

一开始只提供了安卓apk包,也就只能从这个App入手。安装完成,打开之后就是一个登录页面:
图片
配置好,收集代理,准备进行测试。过程中发现抓包无法抓到,报错信息如下:
图片
由于App测试经验不多,一开始没理解。搜索一番之后发现,原因是由于安卓7.0开始只信任系统级别的证书,不再信任用户导入的证书。

那么只要把我们抓包工具的证书安装为安卓系统级别的根证书就可以。

第一步先导出burp证书,其他抓包工具同理:图片然后将证书文件转换一下格式,这一步可以在kali下执行:

opensslx509 -in cacert.der -inform DER -out cacert.pem -outformPEM


之后再提取Hash:

opensslx509 -inform PEM -subject_hash -incacert.pem

图片得到Hash值后,将证书文件修改名称为Hash值.0,之后用adb工具push到测试设备,或者文件管理器等其他方式上传到设备的/system/etc/security/cacerts/目录下,最后再给证书文件添加644权限即可:

chmod644 hash.0

证书安装完成后回到App就可以正常抓到包了,继续进行测试:图片之后注册了一个账号,进入主页面之后,发现程序功能并不多。把每个功能都测试一遍,也没发现什么漏洞。拿着App的域名进行了一波信息收集工作,也发现没什么其他有价值的资产。

重新捋了一下思路后,发现还没有对apk包做过测试,所以就想着反编译看一下有没有什么东西。直接把包放到jadx中,没有加壳,随便搜索一下关键字,可以发现代码里面有不少域名,那么就把这些域名收集一下:图片


Web端测试

把所有从代码里面找出来的域名挨个访问了一遍,终于看到了一个像样的网站,通过和对比发现是程序对应的Web端:图片那么之后的测试就转移到Web端。测试了一下,admin路径可以访问到后台,但是没有弱口令,把手里的字典都跑了一遍也没结果,无法突破。

在前台对各个功能点测试完也依旧没发现什么比较有用的漏洞,再次自闭。最后的思路只有在后台页面html里看到的第三方技术支持公司。图片

拿下

之后又把测试目标转移到了第三方技术支持公司,从信息收集开始,先扫描了一波子域名和目录。经过一番测试发现其中一个子域是用的thinkphp,随便访问一个不存在路径后会返回错误页面,可以看到thinkphp的版本信息,是有rce漏洞的版本:图片当时内心一阵狂喜,皇天不负有心人,终于找到一个利用点了。拿起exp就是一通乱怼,这个子域下也没有部署waf,很顺利的利用了漏洞:

?s=index/\think\Request/input&filter[]=system&data=whoami

图片本来执行成功之后是一开始想着写个马,但是考虑到这个不是主要目标,所以还是选择先反弹了一个shell,在服务器上翻找了一下各种文件。运气很好,找到了原目标的源码的备份文件,通过scp下载了一份,然后开始审计。

各种敏感函数先搜索一下,发现了一个很简单的任意文件读取漏洞:图片file_get_contents函数的参数可以控制,并且没有任何过滤,但是因为目的是要拿下权限,所以用处不大,暂且忽略。

继续搜索到exec时发现有一处命令执行漏洞,代码如下:图片整体代码逻辑是先判断请求参数action,action值为onetoone_info就走入这个代码段,然后查询用户id和房间号。这里需要自己登录一个账号,还需要通过遍历找到一个符合条件的房间号,否则无法往下走,之后绕过两个if,走到else的代码段,可以看到有个exec函数,函数的参数$cmd里有个$content是可控的:图片用dnslog平台测试一下执行效果,确认可以成功执行命令:图片确认可以执行命令之后写了个马到目标,完成测试。

总结

虽然客户一开始只提供了一个安卓apk,但通过对apk反编译,找到了目标Web端,又通过Web端后台,发现了第三方技术支持公司。对第三方技术支持公司进行渗透测试,获得到了原目标Web端源码,最后审计源码发现一处命令执行漏洞,拿下权限,圆满完成测试。

# 渗透测试
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 酒仙桥六号部队 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
酒仙桥六号部队 LV.5
这家伙太懒了,还未填写个人描述!
  • 64 文章数
  • 723 关注者
艾伯特·冈萨雷斯:黑客间谍的双重人生
2022-06-13
渗透的门被封死了,还好上帝为我开了一扇窗
2022-04-18
专访白帽刘闯:成为白帽之前,我是一个调酒师
2022-04-11
文章目录