实战测试某聚合盒子顺手挖了个getshell漏洞
2020-01-01 10:52:12 Author: forum.90sec.com(查看原文) 阅读量:399 收藏

无意间得到一个你懂的APP地址,发现还要钱,于是就有了接下来的事情。。。要钱是不可能给钱的,只能白嫖。

image

E4A写的**直播聚合盒子

image

Apk反编译发现经过了360加固,于是找人脱了壳。

同时对APK进行抓包

image

得到api接口地址,发现是通过ip+端口的形式,常规操作nmap+后台扫描器进行扫描

image

发现后台源码为某套开源网络验证系统,后台没有验证码,爆破也没成功

image

于是下载源码后进行本地搭建与审计。

image
image

发现该套源码对外交互最主要的是api.php这个文件。

注入什么的都使用了addslashes进行了过滤,暂时没仔细看,不过发现了一处上传非常可疑。但是要使代码执行到这一地方就必须绕过sign签名校验。

image

回到校验处的代码跟进sign函数。

image

需要传入$data,$appkey,$sign_t

通过上面的调用可以知道$data就是get过来的action$app_have['key'],$app_have['sign_t']的值我们并不知道。此时其实有2条路可以走。第一种就是对$app_have['key'],$app_have['sign_t']的值进行破解,第二种就是反编译apk代码,到里面找到$app_have['key'],$app_have['sign_t']的值。

image

在本地搭建的后台发现appkey的好像是一串md5 sign有效期也就是$app_have['sign_t']默认是100秒,

image

查看源码发现appkey的生成方式其实是调用time()函数得到时间戳进行md5加密,那这就存在暴力破解的appkey的风险了。Appkey能够破解就可以伪造任意签名。

在分析apk

image

搜索getinfo发现了请求了一个网页然后进行rc4解密。直接访问是乱码,于是进行rc4解密

这其实也有点坑调用的是e4a的解密,于是我还特地下了个e4a利用e4a提供的rc4演示工具解密才

image

然后从解密的文件中得到了appkey值,但是还需要个sign_t的值才行。

继续从源码中

image

image

得到sign_t的值为10000,然后开始伪造签名

image

把sign方法提取出来。

image

从上面代码知道$data是action的值,然后把分析apk得到的appkey和sign_t填入传入返现生成出来的sign是一致的。

image

构建表单提交到alterpic同时要指定type为bbp,token的值就用之前抓到的值。

image

生成调用alterpic的sign值,修改token。

image

提交后提示提交方法不正确,其实已经上传成功,文件名是/pic/用户id+上传的格式。用户id在getinfo的返回包中可以看到。

image

Getshell成功。

image

其实在这套源码中存在一个vip.php

image

获取ip的方法该xff头就可以伪造,也可以直接获取永久vip。


文章来源: https://forum.90sec.com/t/topic/668/1
如有侵权请联系:admin#unsafe.sh