Vulnerability: File Upload(文件上传)
需要的环境:phpstuty2018、BSP(bobo)、菜刀、火狐浏览器、DVWA
【基本原理】利用文件上传漏洞,往目标网站中上传一句话木马,然后你就可以在本地通过中国菜刀chopper.exe即可获取和控制整个网站目录。@表示后面即使执行错误,也不报错。eval()函数表示括号内的语句字符串什么的全都当做代码执行。$_POST['attack']表示从页面中获得attack这个参数值。
入侵条件
其中,只要攻击者满足三个条件,就能实现成功入侵:
(1)木马上传成功,未被杀;
(2)知道木马的路径在哪;
(3)上传的木马能正常运行。
常见的一句话木马:
php的一句话木马:
asp的一句话是: <%eval request (\"pass\")%>
aspx的一句话是:
<%@ Page Language=\"Jscript\"%>
<%eval(Request.Item[\"pass\"],\"unsafe\");%>!
看到的第一眼就是密码是cmd(后面运用菜刀的时候会用到)
木马利用
以下通过DVWA的文件上传漏洞,来看看一句话木马如何使用。
首先在本地(桌面)保存一句话木马文件Hack.php(用记事本编写后修改文件后缀即可):
接下来进入DVWA平台:http://192.168.0.107/DVWA/index.php ,准备开始实验。(LOW等级)
我们将准备好的一句话木马直接上传,然后就可以看到回显的路径:
成功将桌面上的文件(1.php)上传到网站资源目录下方
可以用菜刀连接了,菜刀界面右键,然后点击添加。然后填写相关的数据,如下图:
1、是连接的URL,就是网站的主路径然后加上上传文件时回显的保存路径;
2、是菜刀连接时的密码,就是上面图片一句话提交的数据(本例为\"pass\");
3、是一句话的解析类型,可以是asp,php,aspx。不同的解析类型的一句话内容不一样,文件后缀名不一样
然后可以看连接成功的界面:
-----------------------------------------------------------------------------------------------------------------
我们看到了整个网站的结构和文件,甚至是暴漏了我整个电脑主机的磁盘存储!!可以进行任意非法增删查改!!网站(主机)至此沦陷……
High等级
通过代码可以看到,High级别的代码读取文件名中最后一个”.”后的字符串,期望通过文件名来限制文件类型,因此要求上传文件名形式必须是”*.jpg”、”*.jpeg” 、”*.png”之一。同时,getimagesize函数更是限制了上传文件的文件头必须为图像类型。
漏洞利用
采用%00截断的方法可以轻松绕过文件名的检查,但是需要将上传文件的文件头伪装成图片,由于实验环境的php版本原因,这里只演示如何借助High级别的文件包含漏洞来完成攻击。
首先利用copy将一句话木马文件1.php与图片文件2.jpg合并
然后就可以进行上传,发现成功
连接菜刀一切正常
Medium等级
注意:中国菜刀的原理是向上传文件发送包含apple参数的post请求,通过控制apple参数来执行不同的命令,而这里服务器将木马文件解析成了图片文件,因此向其发送post请求时,服务器只会返回这个“图片”文件,并不会执行相应命令。
那么如何让服务器将其解析为php文件呢?我们想到文件包含漏洞(详见文件包含漏洞教程)。这里可以借助Medium级别的文件包含漏洞来获取webshell权限,打开中国菜刀,右键添加,在地址栏中输入
http://134.64.134.60/DVWA/vulnerabilities/fi/?page=http://134.64.134.60/DVWA/hackable/uploads/1.png
根据上面的代码发现要求文件类型必须是jpeg或者png,所以把1.php改成1.png
然后上传1.png,发现上传成功
然后利用文件包含漏洞,以借助Medium级别的文件包含漏洞来获取webshell权限,步骤如下:
这是Medium等级的文件包含漏洞,复制下来,page=后面的不要
然后文件上传漏洞,复制到page后面
接下来把图中红框的部分复制下来,接到上一步后面即可
最
后
完
整
的
链
接
:
http://134.64.134.60/DVWA/vulnerabilities/fi/?page=http://134.64.134.60/DVWA/hackable/uploads/1.png 把链接添加到菜刀,完成
对了,记得菜刀添加的时候下方脚本类型是php
还有 ,确定自己上传成没成功,可以到
C:\\phpStudy\\PHPTutorial\\WWW\\DVWA\\hackable\ds这里面查看,取决于安装的位置
文件上传的前提:
1.能够成功上传木马文件
2.上传文件必须能够被执行
3.上传文件的路径必须可知
文件包含
当我们的一句话木马上传成功,菜刀可以连接,但发现大马上传不了,被防火墙或者安全狗拦截时,可以考虑使用包含文件,思路如下;
先上传一个含有包含代码(如)却没有攻击代码的文件,不会被狗拦
再将大马改成jpg图片文件上传,也不会被狗拦
访问第一次上传的包含函数的文件,会发现执行了木马
这里是因为包含函数包含的文件会被当成脚本文件,直接将文件内容插入到这个文件中。
构造PHP图片木马,绕过文件内容检测上传webshell一般文件内容验证使用getimagesize()函数检测,会判断文件是否是一个有效的文件图片,如果是,则允许上传,否则不允许上传
一、上传PHP木马1.在火狐浏览器中输入目标文件上传地址,将木马文件1.php后缀名.php改为.php.jpg上传。
二、2.会提示错误信息:此文件不允许上传,服务器对上传文件内容进行了检测。制作图片木马
三、1.随便找一个图片,与所有上传的木马文件放置同一文件夹中。2.打开cmd,进入木马文件夹3.将lubr.php插入到pic.jpg中,输出PicLubr。jpg:copy pic.jpg/b+lubr.php/a PicLubr.jpg
四、上传木马
1. 将上传文件名PicLubr.jpg给我PicLubr.jpg.php2.在浏览器中输入木马的完整地址:http://目标地址/路径/uploads/PicLubr.jpg.php,访问木马文件。 链接木马1.打开中国菜刀,右键点击添加木马的地址和木马lubr,选择脚本类型,点击添加。
双击添加的记录,即可查看目标网站的完整目录。
文件内容检测绕过另一种方式:文件头绕过
因篇幅问题不能全部显示,请点此查看更多更全内容