• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

PHP的Path_info问题


This Wind

Recommended Posts

PHP的Path_info问题-Ti0s's Blog

本文主要讲述和记录PHP中path_info及其产生的安全性问题。

Path_info是什么?

Path_info是PHP的一种路由模式,需要PHP.ini中设置cgi.fix_pathinfo=1才能开启该路由模式。该路由模式的URL格式为http://www.Ti0s.com/index.php/模块/方法

Path_info的运行机制

Apache容器下

PHP的Path_info问题-Ti0s's Blog

那在Apahce容器下,Path_info有什么用呢?

  很多防火墙为了提高效率,遇到js,png,jpg等格式的后缀时,则不检测后面参数中是否有非法数据,因此我们可以构造http://www.Ti0s.com/index.php/aaa.js?id=union select 1,2,3,4来绕过防火墙进行注入,当然也可以绕过防火墙进行代码执行、命令执行等操作,其他的还需要由你自己来开发。

PHP的Path_info问题-Ti0s's Blog
PHP的Path_info问题-Ti0s's Blog

IIS和Nginx容器下

PHP的Path_info问题-Ti0s's Blog

在IIS和Nginx容器下,相比Apache少了一步对文件后缀的检测,因此产生了著名的安全问题CGI解析漏洞(也有称Nginx解析漏洞)。

  其漏洞的利用方式就是上传一个含Webshell的图片,然后在图片地址后面加上/a.php使图片当作PHP解析。

PHP的Path_info问题-Ti0s's Blog

当然,aa.php/aa.js也会把aa.php作为脚本,aa.js作为模块来解析执行的。

PHP的Path_info问题-Ti0s's Blog

  也可以构造aaa.jpg/aa.php/aa.js来用aa.js作为方法,aa.php不存在,因此aa.php作为模块,aaa.jpg被当作脚本来进行解析执行。

说明

  对于Path_info的工作机制的探讨,全部来自黑盒测试,可能与源码实现流程图有出入,但大体原理如此,也有些不能解释的问题,比如:都把Path_info路由模式交给PHP来处理的话,为什么在Apache容器下和在Nginx容器下处理结果会不同呢?(PS:Apache容器下是使用SAPI进行解析PHP的,而Nginx下是CGI模式解析PHP的)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now