1。什么是解析漏洞
以其他格式执行脚本格式的效果。
2。分析漏洞产生的条件
1.命名规则
2.搭建平台
3。常见解析漏洞
(1)IIS5.x-6.x解析漏洞
使用IIS5.x-6.x版本的服务器多为windowsserver2003,其网站较为陈旧,开发语句一般为asp解析漏洞只能解析asp文件,而不能解析aspx文件。
1)目录解析(6.0)
形式:www.xxx.com/xx.asp/xx.jpg
原理:默认情况下,服务器会发送..
2)文件解析
形式:www.xxx.com/xx.asp;。jpg
原理:服务器默认不解析;数字背后的内容,所以xx.asp;。jpg被解析成一个asp文件。
3)解析文件类型
IIS6.0的默认可执行文件除了asp还包括这三种类型:
/test.asa
。
(二)IIS7.5解析漏洞
iis7.5的漏洞和nginx类似,因为在PHP配置文件中开启了cgi.fix_pathinfo,这不是nginx或者IIS7.5本身的漏洞。
(3)apache解析漏洞
漏洞原理
Apache解析文件的规则是从右向左判断解析,如果后缀是未识别文件解析,则再次向左判断。比如test.php.qwe.asd”。qwe”和”。asd”不被apache识别,apache会把wooyun.php.qwe.asd解析成php。
漏洞形式
www.xxxx.xxx.com/test.php.php123
其他配置问题导致漏洞
(1)如果Apache的conf中有这样一行配置AddHandlerphp5-script,php,那么只要文件名包含。php,即使文件名是test2.php.jpg,也会用php执行。
(2)如果Apache的conf中有这样一行配置addtypeapplication/x-httpd-php.jpg,即使扩展名是jpg,也可以用PHP执行。
修复方案
1.apache配置文件,禁止执行类似。php。添加
2。伪静态可以解决这个问题,重写类似。php。*.打开apache的httpd.conf,找到loadmodulerewrite_modulemodules/mod_rewrite.so
。删除#符号,重新启动apache,并创建一个。网站根目录下的htaccess文件。
(四)Nginx解析漏洞
漏洞原理
Nginx默认支持CGI解析PHP,常见的做法是在Nginx配置文件中通过正则匹配设置SCRIPT_FILENAME。访问www.xx.com/phpinfo.jpg/1.php,的URL时$fastcgi_script_name会被设置为“phpinfo.jpg/1.php”,然后它会被构造为SCRIPT_FILENAME并传递给PHPCGI。但是为什么PHP接受这样的参数并将phpinfo.jpg解析为PHP文件呢?这涉及到fix_pathinfo的选项。如果开启这个选项,PHP中会触发以下逻辑:
PHP会认为SCRIPT_FILENAME是phpinfo.jpg,1.php是PATH_INFO。所以将phpinfo.jpg作为PHP文件解析
漏洞表单
www.xxxx.com/uploadfiles/image/1.jpg/1.php
www.xxxx.com/uploadfiles.1.jpg%00.php
www.xxxx.com/uploadfiles/image/1.jpg/%20\0.php
另一种方式:上传一个名字叫test.jpg,然后访问test.jpg/.php,在这个目录下生成一句话。
摘要:
IIS6.0(可以定制x和脚本格式)
文件命名形式:
正常名字:www.xxx.com/logo.jpg
触发漏洞命名:www.xxx.com/logo.asp;。jpg或logo.asp;.x.jpg
文件夹命名形式:
正常名字:www.xxx.com/images/qq.jpg
触发漏洞命名:www.xxx.com/image.asp/qq.jpg
IIS7。X(x自定义,只能执行php)
正常名字:www.xxx.com/logo.jpg
触发漏洞命名:www.xxx.com/logo.jpg/x.php
Apache(xxxx代表任何后缀,向上标识和解析)
正常名字:www.xxx.com/a.php
触发漏洞命名:www.xxx.com/a.php.xxxx
Nginx与iis7.x一致
4。一个简单的分析例子
测试环境为:windwos2003+iis6.0注意:测试环境必须在windwos2003+iis6.0才能成功解析,不能用Cyclone之类的软件测试。
1)文件解析
直接上图地址:http://192.168.87.129:8067/6.jpg。
换图后,邮票名称为:stamp如果你去参观。jpg再次,你会发现jpg格式的图片已经被解析成asp脚本语言了。
也可以改成:6.asp;1234.jpg也有同样的效果。
2)目录解析
把文件改成正常的图片格式文件,然后拷贝到test.asp的一个目录下,然后发现可以正常解析。
5。分析利用场景
漏洞分析主要用在文件上传,上传一些图片等等,然后通过分析漏洞分析成一种动态语言。上传的重点是命名规则,因为如果你不知道服务器的文件命名规则,就不容易利用解析漏洞,因为我们要获取我们上传的文件名,只有获取了上传的文件名才能进行下一步,而命名规则不外乎以下两条。
测试源代码:http://download.csdn.net/detail/u011781521/9766646下载后,在服务器上创建一个新的网站并复制进去。
然后访问首页:http://192.168.87.129:8898/index.ASP。
后台登录地址:http://192.168.87.129:8898/tcnet/admin_login.asp
文件上传地址:http://192.168.87.129:8898/upload.ASP?我的表单。editname=bookpic&uppath=upfile&&Filelx=jpg用户名和密码:adminadmin注意:您必须登录才能使用文件上传功能。
1。本地和服务器的命名是一致的
1)文件路径上传利用率
直接上传解析漏洞名称的后门文件。
访问这个地址:http://192.168.87.129:8898/upload.ASP?我的表单。editname=bookpic&uppath=upfile&&filelx=jpg
先直接上传一个asp文件,尝试上传。
发现无法上传。那我们就利用解析漏洞,尝试把asp改成fk.asp;。jpg(注:这里是图片句子)
好了,可以上传了。复制上传的地址并访问。
图片可以查看,但是asp没有解析。。。该做什么?重新上传xxx.asp;。jpg,然后用Burp抓取包修改。
右键单击将其发送到中继器。
修改“文件路径”以在upfile/后添加aaa.asp;然后去你会发现这是一个解析漏洞。
然后访问这个地址,asp就成功解析了。
然后用菜刀连接。
密码是“包含”;对应的asp语句<%executerequest("include")%>;然后单击添加。。
连接成功。
2。本地和服务器名称不一致,根据时间、日期等命名。
1)文件类型突破
这里,DVWA用于测试,
然后点击“查看源代码”查看源代码。
低位代码:
[html] viewplain copy$_FILES['uploaded']['name']:获取$_FILES的全局文件变量的上传文件名。
源代码中存在的问题:
第一个没有验证后缀格式。
什么格式都可以上传。。
第二个客户端和服务器的文件名是一致的。
中等代码:
[html] viewplain copy
$_FILES['uploaded']['name'];获取$_FILES全局文件变量的上传文件名。
$_FILES['uploaded']['type'];获取$_FILES全局文件变量的上传文件类型。
$_FILES['uploaded']['size'];获取$_FILES全局文件变量的上传大小。
验证文件上传类型和大小,是否是本地的,以及服务器名称是否一致。
然后我们上传一个asp文件,用打嗝抓取包,看能不能上传成功。
拦截后发给复读机,然后走。
上传失败。。。这个很好奇。很明显,这里验证文件后没有图章名称。为什么不能上传????但是,他在这里验证了文件类型!!让我们看看上传的是什么类型的文件。
看,它的上传类型是:application/octet-stram,所以他把上传的asp当做application。
然后让我们将内容类型的类型更改为image/jpeg。
再去一次,发现上传成功了。
2)%00截断:截断字符
注意:数据包由%00修改,一定要对url进行编码。
6.asp;。jpg更改为6.asp%00.jpg
然后选择正确的按钮到网址代码%00。
在这种情况下。jpg被截断,然后变成6.asp。
高代码:
[html] viewplain copystrrpos($uploaded_name,'.')+1的作用就是去文件的最后一个点
例如:
www.jpg.zip.txt.asp
他会截住最后一点,所以绕不过去。
然后还有一个判断。要执行下面的代码,格式必须是图片类型。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)