这么做无非就是提高安全性,可是设计者忽略了一个问题,如果php是在apache下运行的,利用apache的文件解析漏洞这种方式形同虚设。
因为apache有个漏洞就是对文件名是1.php.sql这种形式,只要最后的文件扩展名是apache不能能解析的,他就会按照php文件来解析它,那在这里sql文件就是apache不能够解析的文件,那么他理所当然会把这个文件当作php文件来执行。
所以如果是apache+php的话,即使文件名变成了上面这样,也可以正常解析,你所需要做的就是点一下备份后的链接。
所以您看出来了,这种拿shell的方式是需要你的环境是apache+php的。
而且还有个条件是GPC魔术转换不能开启,所以也很鸡肋。
两种方式没有上次说的那位大牛的那么通杀,只是给大家提供个思路,仅此而已。
由于之前是用shell测试的,可是写文章的时候是在本地测试,环境有点问题,第二种方式一句话成功解析的图就不截了,请见谅。
没什么技术,欢迎光临l4yn3的个人博客。
PS:关于apache的文件解析漏洞,看这个吧:http://blog.fir3bug.com/?p=264
PS:
Apache+php文件扩展名解析漏洞
提到Apache,经常接触网络的朋友一定都知道吧。它是一款使用率不亚于IIS的HTTP服务器程序。用于提供我们的HTTP访问。目前最新版本是Apache2.2.6。我们可以到http://httpd.apache.org去进行下载。它可以工作于Linux平台或者是Windows平台。以下的测试我们以Windows平台中Windows2003server为例。
首先我们将下载好的最新Apache安全程序(我这里是安装版的,大家也可以下载解压版的)安装于服务器中并成功启动服务提供HTTP服务。接下来我们再将下载好的PHP安装程序(同样分安装版和解压版)进行安装,一切完毕之后,我们上传一个PHP的后门文件进行访问,得到如下图所示:
可以成功解析。下面我们就来更改下这个PHP文件的扩展名。构造一个类似于*.php.*的文件。至于最后面的那个星号,我们可以随便自定义,甚至是没有的扩展名也可以。比方这里我就定义成index.php.111,如下图所示:
然后我们回到浏览器中进行浏览这个文件http://192.168.203.133/index.php.111。看到了什么?对!同样成功访问了我们的phpshell!
这说明不管最后后缀为什么,只要是.php.*结尾,就会被Apache服务器解析成php文件!。我们再来尝试访问jpg图片格式文件,却显示了webshell的源文件,如下图所示:
原因就处在了Apache的配置文件mime.types中。这个文件存在于apache的配置文件夹,我的是“Apache GroupApache2conf”文件夹中。我们用记事本打开mime.types文件。可以看到在左侧的“MIMI type”中定义了一些文件的打开方式,而再右边“Extensions”中则定义了一些常见文件的扩展后缀名。查找关键字“jpg”可以看到下面有这么一行:image/jpeg jpeg jpg jpe 。如下图所示:
原来jpg扩展名已经被定义了。所以也就没有被直接解析成php脚本文件了。那我们就找那些在这里未经过定义的扩展名,同时在网站程序中我们可以找所有允许的上传类型。通过对默认配置的尝试,我发现rar文件同样未被定义!那我们就将webshell更名为“shell.php.rar”文件,然后再在浏览器里面进行访问。哈哈!果然成功返回了我们的phpshell!相信在国内的程序中,没有几个上传是不允许rar类型的吧?就这样我们可以利用 Apache的漏洞进行上传得到一个php的shell了。
以上测试环境是在Windows下。对于Linux中,问题同样。再这里就不进行测试了。至于是否是Apache所有版本,也没有时间进行全部测试。大家可以在以后的实践中进行总结。