文件上传漏洞浅谈

漏洞原因

web未对用户上传的文件进行严格的过滤,导致用户可以上传任意的文件,其中包含木马,病毒,恶意脚本或者WebShell等。

绕过

前端限制及绕过

有些web应用的文件上传功能,仅用JS进行了检测,如检测文件后缀名等。所以可以很轻松的进行绕过。
方法一:因为JS在浏览器运行,可以修改JS代码,甚至删除表单事件。
方法二:使文件后缀名符合白名单策略,用burp抓包,然后修改后缀名即可。(先在浏览器修改后缀名为白名单规定内容,抓包后改回原后缀名即可。)

服务器端检测-MIME类型

常见文件类型MIME类型:
JSapplication/x-javascript
HTMLtext/html
JPGimage/jpeg
PNGimage/png
PDFapplication/pdf
PHPapplication/octet-stream

在HTTP协议中,使用content-type类型来表示文件的MIME类型。
所以遇到MIME类型过滤时,使用burp抓包,修改content-type类型即可。

服务器端检测-文件内容

服务器端会使用函数来对文件头进行检测。
构建图片木马的方法:
方法一:创建一个文件,写入一句话木马,在文件的开头写上GIF89a,保存文件名为 .gif。
方法二:图片合并:准备一个图片和一句话木马,使用copy命令进行合并。
例如:copy 1.jpg/b*2.php/a 1-2.jpg
方法三:在图片的属性中的版权写入一句话木马。
方法四:在一句话木马前加入图片幻数,文件保存为php文件(需要将图片幻数从16进制转换为ASCII码)。

图片幻数如下所示:
图片幻数

服务器端检测-后缀名

服务器端检测后缀名仍然使用黑白名单策略。

对于黑名单中的后缀,可以使用其他可以允许上传的类型来进行绕过。例如:php,php3,php5,phtml等。

对于白名单中的后缀,我们只能上传符合白名单策略的文件名后缀。

截断

在上传的时候,当文件系统读到【0x00】时,会认为文件已经结束。利用00截断就是利用程序员在写程序时对文件的上传路径过滤不严格,产生0x00上传截断漏洞。URL中表现为%00,00截断会导致文件上传路径的截断(及另存文件至用户所设计的路径。)

.htaccess攻击

.htaccess是apache服务器的分布式配置文件,该文件会覆盖apache服务器的全局配置,.htaccess文件的作用域为该目录及其子目录。如果web应用允许上传.htaccess文件,那么就意味着攻击者可以更改apache的配置,这十分危险。
(1)首先查看apache配置是否允许.htaccess文件覆盖掉apache的配置。
方法一:(2)创建一个文件,将

AddType application/x-httpd-php .png

写入文件,并后缀名为.htaccess文件(这段代码的作用是将png文件当做php文件解析),放入测试目录。
(3)在同一测试目录下创建一个info.png文件,将<?php phpinfo();?>写入文件,当我们访问文件时,info.png内的php代码就会被执行。

方法二:当.htaccess文件内容如下:

AddHandler php5-script php;

同时我们上传的文件名中含有php关键字时,文件中的php代码就会被执行。

方法三:匹配文件名
.htaccess文件配置如下:

<FileMatch “ajest”>
SetHandler application/x-httpd-php
</FileMatch>

此时先上传.htaccess文件,再上传ajest文件。那么服务器就会找到ajest文件,并执行其中的php代码。

Web服务器解析漏洞

Web服务器的解析漏洞较多,此处简要介绍几个,其余大家可以自行了解。
1.iis6.0解析漏洞
其实这个解析漏洞不算是漏洞,只是由于iis6.0会默认把.cer .asa .asp .cdx这些后缀的文件当做.asp文件执行
2.apache解析漏洞
hack.php.xxx.xx.x这样的文件名对于apache来说是按后缀从右到左解析的,xxx解析不了就解析xx,再解析不了,就一直向左解析直到解析到可以解析的为止,所以最终作为php文件执行了。

结语

个人拙见,小白一枚,如有错误,欢迎大家指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值