一、文件上传漏洞
(一)原理
文件上传漏洞是指Web应用程序在处理用户文件上传功能时,由于验证机制不完善或配置错误,导致攻击者能够上传恶意文件并执行,从而危害服务器安全的漏洞类型。
(二)常用绕过后缀
asp、asa、cdx、cer、php、aspx、ashx、jsp、jspx、php3、php.a、shtml、phtml
(三)形成原因
- 服务器的错误的配置
- 开源编辑器漏洞
- 本地上传限制不严格被绕过
- 服务端过滤不严格被绕过
(四)一句话木马
<?php
@eval($_POST['shell']);
phpinfo()
?>
二、文件上传服务端绕过方法
(一)MIME绕过
通过burp拦截数据包修改文件类型,将下面位置修改为image/png或image/jpeg或inage/gif

比如在靶场上传一个一句话木马shell.php,同时打开burp拦截上传的流量包
将文件类型改为上图所示,即可上传成功。
(修改上传类型imeag/类型)是通过修改HTTP请求中的`Content-Type`头部,伪装文件类型来绕过服务端检查的技术。
(二)特殊扩展名绕过(大小写、双写、空格)
是通过使用非常规、混淆或特殊格式的文件扩展名来绕过服务端文件类型检测的技术。
asp、asa、cdx、cer、php、aspx、ashx、jsp、jspx、php3、php.a、shtml、phtml等
可以通过将文件后缀名改为以上几个来绕过服务端检测
比如一句话木马文件shell.php后缀名改为shell.php3
即可绕过成功
(三)htaccess绕过
是通过上传.htaccess文件来重新配置Apache服务器的解析规则,使得在其后上传的文件都当作PHP脚本执行
-
上传内容为
SetHandler application/x-httpd-php名字为.htaccess的文件
-
上传一句话木马文件
即可绕过成功
(四)大小写绕过
利用不同操作系统和应用程序对文件名大小写敏感性差异来绕过文件上传检测
比如将shell.php文件后缀改为shell.Php、shell.pHp、shell.phP等
即可绕过成功
(五)空格绕过
空格绕过是利用操作系统对文件名中空格字符的特殊处理规则来绕过文件上传检测的技术。
比如将一句话木马文件shell.php改为shell.php (php后有空格)
即可绕过成功
(六)双写绕过
将扩展名双写,使得在经过一次过滤后,仍能保留有效的可执行扩展名,从而实现恶意脚本文件的上传。
比如一句话木马文件shell.php可以更改为shell.pphphp绕过
这样文件被过滤掉中间的php后还有一个php,可以正常执行
(七)图片马绕过
1、准备任意一张jpg格式的图片;制作一句话木马
2、将jpg图片和一句话木马结合在一起
命令:copy 1.jpg/b + shell.php/a 2.jpg
3、将制作好的图片马上传到靶场
4、鼠标右键选择新标签页打开就可以看到代码已经执行成功
四、条件竞争
利用 burp 多线程发包,然后不断在浏览器访问我们的 webshell, 会有一瞬间的访问成功。
- 上传一句话木马,用burp拦截
- 将拦截到的流量发送到攻击模块,clear清除选择
- payload设置null和continue
- 开始攻击,同时打开访问脚本开始运行,直到显示ok
- 打开蚁剑连接网站查看结果
五、文件解析漏洞
(一)Apache HTTPD多后缀解析漏洞
Apache HTTPD 多后缀解析漏洞是指Apache服务器在处理具有多个后缀的文件名时,由于配置或解析逻辑缺陷,导致本应作为静态文件处理的文件被错误地解析为动态脚本执行的安全漏洞。
- 把一句话木马shell.php命名为shell.php.png
- 上传靶场后右击在新标签页中打开
- 可以访问到木马
(二)Nginx解析漏洞-CGI漏洞
Nginx解析漏洞的根本原因是:Nginx(Web服务器)与后端PHP处理器(如PHP-FPM)对请求路径的解析逻辑不一致,导致恶意文件被错误地当作PHP脚本执行。
- 创建一个jpg文件1.jpg
- 上传到靶场并用burp拦截流量
- 在流量包结尾加上一句话木马
- 放行,复制网站路径到蚁剑连接
(三)Nginx解析漏洞-CVE-2013-4547
CVE-2013-4547是Nginx Web服务器中的一个严重安全漏洞,属于HTTP请求解析缺陷,允许攻击者通过精心构造的URL绕过安全限制,导致非预期的文件被执行。
- 创建一个1.jpg文件
- 上传到靶场并用burp拦截流量
- 在filename后的1.jpg文件后添加空格,结尾添加phpinfo()
- 放行后访问uplpadfiles,在路径后加上/1.jpg空格.php空格
- 打开Hex编码,找到刚才的两个空格
- 将第二个空格编码改成00,发送
- 在Render渲染处可看到成功解析的1.jpg文件
使用burp拦截流量
3. 在filename后的1.jpg文件后添加空格,结尾添加phpinfo()
4. 放行后访问uplpadfiles,在路径后加上/1.jpg空格.php空格
5. 打开Hex编码,找到刚才的两个空格
6. 将第二个空格编码改成00,发送
7. 在Render渲染处可看到成功解析的1.jpg文件
转载自CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/2501_93793519/article/details/156144357



