一句话木马

在很多的渗透过程中,渗透人员会上传一句话木马(简称Webshell)到目前web服务目录继而提权获取系统权限,不论asp、php、jsp、aspx都是如此,那么一句话木马到底是什么呢?
最简单的一句话木马:<?php @eval($_POST[‘feilao’]);?>
为什么往目标网站中上传一句话木马,然后你就可以在本地通过中国菜刀即可获取和控制整个网站目录。@表示后面即使执行错误,也不报错。eval()函数表示括号内的语句字符串什么的全都当做代码执行。$_POST[‘feilao’]表示从页面中获得feilao这个参数值。

基本原理

<?php @eval($_POST[‘cmd’]);?>
这句话什么意思呢?
(1)php的代码要写在<?php ?>里面,服务器才能认出来这是php代码,然后才去解析
(2)@符号的意思是不报错,即使执行错误,也不报错。
一个变量没有定义,就被拿去使用了,服务器就善意的提醒:Notice,你的xxx变量没有定义。这不就暴露了密码吗?所以我们加上@。
(3)为什么密码是cmd呢?
那就要来理解这句话的意思了。php里面几个超全局变量:$_GET、$_POST就是其中之一。$_POST[‘a’]; 的意思就是a这个变量,用post的方法接收。(传输数据的两种方法,get、post,post是在消息体存放数据,get是在消息头的url路径里存放数据(例如xxx.php?a=2))
(4)如何理解eval()函数?
例如:eval(“echo ‘a’”);其实就等于直接 echo ‘a’;再来看看<?php eval($_POST[‘pw’]); ?>首先,用post方式接收变量pw,比如接收到了:pw=echo ‘a’;这时代码就变成<?php eval(“echo ‘a’;”); ?>。
连起来意思就是:用post方法接收变量pw,把变量pw里面的字符串当做php代码来执行。所以也就能这么玩:也就是说,你想执行什么代码,就把什么代码放进变量pw里,用post传输给一句话木马
在这里我们可以看到系统直接执行了系统命令。所以大家现在应该理解,为什么说一句话短小精悍了

小马和大马

  • 小马体积非常小,只有2KB那么大,隐蔽性也非常的好,因为小马的作用很简单,就是一个上传功能,就没有其它的了,它的作用仅仅是用来上传文件,所以也能过一些安全扫描。小马是为了方便上传大马的,因为很多漏洞做了上传限制,大马上传不了,所以就只能先上传小马,再接着通过小马上传大马了。小马还可以通过与图片合成一起通过IIS漏洞来运行。
  • 大马的体积就比较大了,通常在50K左右,比小马会大好多倍,但对应的功能也很强大,包括对数据的管理,命令的操作,数据库的管理,解压缩,和提权等功能,都非常强大。这种大马一旦网站被种了,网站基本就在这个大马控制之中。大马的隐蔽性不好,因为涉及很多敏感代码,安全类程序很容易扫描到。

    实验演示

    首先在本地(桌面)保存一句话木马文件feilao.png(用记事本编写后修改文件后缀即可):image.png
    接下来进入靶场 ,在第一关上传刚才创建的文件,抓包把后缀改成php上传image.png上传成功,用菜刀去连接image.png
    我们看到了整个网站的结构和文件,甚至是暴漏了我整个电脑主机的磁盘存储!!可以进行任意非法增删查改!!网站(主机)至此沦陷image.png
    WebShell的分类

    image.png