空字节理解
当字符串有%00(空字节),就会被服务器认为是结束符。
<?php
$a = $_GET['i'];
echo $a;
?>
浏览器打开127.0.0.1/1.php?i=123456%00123456 将%00设置为url编码 只会输出123456
截断上传
上传文件格式为jpg,用burpsuite进行抓包,将文件名字修改为1.jpg%00.php 将%00设置为url编码
黑名单验证
可以尝试php3,php4,php5,phtml或者使用服务解析漏洞
基本流程:
1.图片是否正常上传 2.图片上传内容是否被修改 3.上传的域名是否是目标服务器 4.如果不是判断图片服务器是否解析 5.上传的目录是否支持解析 6.判断是否黑名单验证
文件二次上传
解析漏洞
iis
1.使用iis5.x-6.x版本的服务器,大多为windows server 2003,网站比较古老,开发语句语句一般为asp;该解析漏洞也只能解析为asp文件,而不能解析aspx文件。 2.目录解析(6.0) 形式:www.xxx.com/xx.asp/xx.jpg 原理:服务器默认会把.asp,.asa目录下的文件都解析成asp文件 3.文件解析 形式:www.xxx.com/xx.asp;.jpg 原理:服务器默认不解析;号后面的内容,因此xx.asp;.jpg便被解析成asp文件了。 4.解析文件类型 iis6.0默认的可执行的除了asp还包含这三种: /test.asa /test.cer /test.cdx
apache
漏洞原理: apache解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。比如test.php.owf.rar,.owf和.rar这两种后缀是apache不可识别解析,apache就会把test.php.owf.rar解析成test.php。 漏洞形式: www.xx.xxx.com/test.php.php123 其余配置问题导致漏洞: 1.如果apache的conf里有这样一行配置Addhandler php5-script.php这时只要文件名包含.php即使文件名是test2.php.jpg也会以php来执行 2.如果apache的conf里有这样一行配置AddType application/x-httpd-php.jpg 即使扩展名是jpg,一样也能以php方式执行
iis7.5
iis7.5的漏洞与nginx的类似,都是由于php配置文件中,开启了cgi.fix_pathinfo,而这并不是nginx或者iis7.5本身的漏洞。 PS:a.aspx.a;a.aspx.jpg…jpg
.net上传
一般支持aspx默认都会支持ashx
phtml上传
在apache配置文件(一般是httpd.conf)里添加 AddType application/x-httpd-php.phtml 这样phtml后缀的文件就会按照php去解析,也可以设置成其他后缀
.htaccess
创建.htaccess文件放在当前目录下
<File *.jpg>
ForceTypr application/x-httpd-php
SetHandler application/x-httpd-php
</Files>
双文件上传
|