文件上传是Web网页中常见的功能之一,通常情况下恶意的文件上传,会形成漏洞。
逻辑是这样的:用户通过上传点上传了恶意文件,通过服务器的校验后保存到指定的位置。
当用户访问已经上传成功的文件时,上传的Web脚本会被Web容器进行解析,从而对网站造成危害。
今天我们来研究下Upload-labs靶场的每关不同的攻略,从而对文件上传进行深入的了解。
前端JS验证
编写一句话木马文件a.php,并将文件名修改尾a.jpg。上传后抓包修改为a.php。
即可上传成功。
MIME验证,Burp抓包,修改Conetent-type为image/png.
即可上传成功
禁止了php,jsp,asp等后缀。大小写绕过失败,修改为php5后缀。
即可上传成功
先上传.htaccess系统解析文件进行重写
内容如下
<FileMatch "1.jpg"> SetHandler application/x-httpd-php </FileMatch>
再上传包含一句话木马的1.jpg,此时网站将把1.jpg当作php文件进行解析执行。
大小写绕过,修改后缀为.Php5
即可上传成功
空格绕过,空格编码后形成00,进行绕过。
在1.php Burp抓包尾椎添加空格即可。
尾缀.添加.,即在1.php后添加.,修改为1.php.进行绕过
尾缀添加::$DATA,形成NTFS写入文件的效果,进行绕过
尾缀添加. .,类似于双写绕过,只过滤了一次.和一次的空格。
直接上传发现1.php 被修改为1. ,对敏感词汇进行了替换
尝试进行双写绕过将1.php,修改为1.pphphp,进行绕过
总结:前十关我们可以总结如下几种文件上传绕过的方式。
1.前端JS验证:Burpsuite抓包修改尾缀
2.MIME验证:Burpsuite抓包修改Content-type
3.黑名单验证:Burpsuite抓包进行文件尾缀的爆破
4.解析文件可重写:重写解析文件,将JPG文件解析为PHP文件进行执行
5.大小写绕过、双写绕过
6.尾缀添加点,空格,::$DATA进行截断绕过