文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,部分文件上传漏洞的利用技术门槛非常的低,对于攻击者来说很容易实施。
大部分的网站和应用系统都有上传功能,如用户头像上传,图片上传,文档上传等。一些文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过Web访问的目录上传任意PHP/JSP/ASPX/ASP文件,并能够将这些文件传递给PHP/JSP/ASPX/ASP解释器,就可以在远程服务器上执行任意PHP/JSP/ASPX/ASP脚本。
文件上传漏洞本身就是一个危害巨大的漏洞,WebShell更是将这种漏洞的利用无限扩大。大多数的上传漏洞被利用后攻击者都会留下WebShell以方便后续进入系统。攻击者在受影响系统放置或者插入WebShell后,可通过该WebShell更轻松,更隐蔽的在服务中为所欲为。
文件上传漏洞的类型:
1. js绕过
(1)打开界面,上传一句话木马
(2)上传失败,发现js验证
(3)禁用浏览器js功能或中间人攻击进行绕过
(4)再次上传,连接菜刀,拿到web shell.
注:禁用火狐浏器的js功能,在地址栏输入JavaScript:enable双击关闭、中间人绕过用bupsuite抓包,修改数据。
2. Content-Type绕过
尝试用Burp Suite抓包,通过修改包内的Content-Type值进行上传,将application/octet-stream修改为image/jpeg。
3. 扩展名绕过
发现黑名单验证扩展名不允许.php通过,改后缀为.PhP,再次上传
4. 00截断绕过
00截断就是指用%00;
a.php%00.jpg 就会变成a.php,后面的.jpg就会被%00截断了。
5. 修改文件头
只允许上传图片,让php文件用winhex添加jpg头的值 value=FF D8 FF E0 00 10 4A 46 49 46