文件上传漏洞(常见利用手段)

上传漏洞利用方法比较多,基本的任意文件上传不再赘述,大概说一下简单的绕过和一些问题

我们为了此漏洞关注各种上传点,而各大厂商也会密切关注并及时作出对应策略。大致的绕过分为前端验证绕过和后端验证绕过。

一、前端验证绕过
有的网站会将验证上传阶段放在前端,进行一个js的验证。
这种绕过我们可以做一个截断,就可以绕过前端验证了(抓包工具抓取数据包,然后改包就好)
其次,js验证的话,我们可以在浏览器设置禁用js,或者右键审查中找到对应js代码删除。

二、后端验证
这个才是主要的验证方式了,很多姿势都是在与此对抗中产生,
有些服务端只检查mime类型是否为允许上传的类型,符合则绕过。如下:

在这里插入图片描述

检查后缀型:
如果是iis中间件,可以搜集其解析漏洞进行利用,比如iis6.0 的1.php;.jpg解析问题。
对于黑名单限制还可以利用大小写混合绕过、文件名后加空格和点绕过。
一般web的系统是php asp jsp三种主流语言编写而成,默认后缀为.php .asp .jsp 等,然而web服务器还支持其他可解析后缀:
ASP:asp|aspx|asa|cer|cdx|ashx|ascx|asax|asmx|cfc|cfm|
PHP:php|php2|php3|php4|php5|phtml|phtm|
JSP:jsp|jspa|jspx|jsw|jsv|jspf|jtml|
类似如图:
在这里插入图片描述
还有一个针对ntfs文件系统的上传漏洞,其特性为ads,用于ntfs交换数据流,上传文件时,系统对正文的filename匹配不当可能会导致绕过。
在这里插入图片描述
其实,还有很多比如后缀双写绕过,配合其他解析漏洞绕过等等姿势,本人十分懒,所以不一一列举,只最后说一个比较混乱的点:
00截断

00截断有两种截断方式:%00和0x00 php也是c写的,所以%00和0x00代表结束,不会再读取其后的数据,这个缺点在php5.3.4版本已修复
而且不是每种场景下都随意适用(意思就是说,两种方法有两个符合使用的场景,而且不能用错),因为这里很多人搞混,他们的使用原理和效果是一样的,但是%00截断是用在路径上,在这里插入图片描述
如上图,有显示上传路径,也可以说就是上传路径可控的时候,使用%00截断的方式,在这里插入图片描述
方法就是这样了,由于我虚拟机php版本是最新的,其他地方也没临时找到%00利用的上传点,所以触发不了这个洞,所以就看下这个方法,结果的话传过去…/upload/x.php /xxx.jpg这样,访问的时候只访问到php就可以成功建立连接。
这个直接在参数中+%00是由于传递时会将%00编码,所以不用再做过多操作。而另外一种0x00截断,则是在post数据包中修改,,,不知道怎么说,上图:在这里插入图片描述
比如我们上传一个jian.php;.jpg,我们使用十六进制打开,找到对应的地方,将;代表的3b修改为00
在这里插入图片描述
最后上传后:
在这里插入图片描述

还有一种0x00截断的情况 ,和%00阶段那张图一样,只不过%00路径在get请求包中,而另一者在post数据包内,其使用方法:在这里插入图片描述
大同小异在这里插入图片描述
其实%00和0x00是一样的,0x00就是%00的十六进制表示,但是为了不将%00和0x00混淆,只需要记得post提交想到0x00 get提交想%00,差不多就这样吧,只要自己能区分就好了,

其实,还有内容型的上传漏洞里的二次渲染,文件头等;逻辑型上传漏洞的条件竞争等,这些倒不是很难理解,故而以后的实战文章中遇到了再顺带一说,不再过多赘述。
对于攻击,我们因该从攻击者的角度去看待问题:
最好的设置是白名单。
上传目录禁止运行
检查内容,重新渲染。
就水到这儿,祝大家都免疫冠状病毒。在这里插入图片描述

发布了17 篇原创文章 · 获赞 2 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44398914/article/details/104083433