1.00截断上传:
截断的核心在于chr(0)这个字符,这个函数表示返回以数值表达式值为编码的字符,举个例,print chr(78) 结果是N,所以char(0)表示的ascll字符是null,当程序输出包含chr(0)变量时,chr(0)后面的数据会被截断,后面的数据直接忽略,导致漏洞产生。
假设上传后端代码如下:
1 <?php 2 $path="upfiles/picture/" 3 $file="XXX.jpg" 4 $upfilename=path & file '最后的上传地址 5 php>
则经过截断上传通过在允许上传的文件后缀名前加上空格并在burp种将其hex值变为00
则经过chr()函数后会变为空则其后的部分都不会被解析。
2.Apache1.X 2.X解析漏洞:
Apache在以上版本中,解析文件名的方式是从后向前识别扩展名,直到遇见Apache可识别的扩展名为止。
3.iis6.0解析漏洞
①:文件目录.asp,.asa,.cer下的文件都会被当作asp文件解析
②:文件名中若含有asp则作为asp文件解析,例如shell.asp;.jpg
4.Nginx解析漏洞:
以上Nginx容器的版本下,上传一个在waf白名单之内扩展名的文件shell.jpg,然后以shell.jpg.php进行请求。
以上Nginx容器的版本下,上传一个在waf白名单之内扩展名的文件shell.jpg,然后以shell.jpg%20.php进行请求。
5.PHP CGI解析漏洞:
以上的容器版本中默认php配置文件cgi.fix_pathinfo=1时,上传一个存在于白名单的扩展名文件shell.jpg,在请求时以shell.jpg/shell.php请求,会将shell.jpg以php来解析。
更多姿势参考:https://xianzhi.aliyun.com/forum/mobile/read/458.html