WEB应用

PHP彩蛋还是漏洞?expose_php彩蛋的触发和屏蔽方法

Jager · 1月13日 · 2015年 · · · 3625次已读

最近在折腾网站XSS漏洞修复的时候,当我把XSS漏洞和谐成功之后,360扫描送来了一个”彩蛋”:

PHP彩蛋还是漏洞?expose_php彩蛋的触发和屏蔽方法 PHP彩蛋还是漏洞?expose_php彩蛋的触发和屏蔽方法 PHP彩蛋还是漏洞?expose_php彩蛋的触发和屏蔽方法

本以为又是360误报,结果点击看了下,还真能打开PHPinfo:

PHP彩蛋还是漏洞?expose_php彩蛋的触发和屏蔽方法

PHP彩蛋我也是第一次听说,貌似老一辈的程序员们都知道,因为PHP是由黑客语言发展而来,所以各方面都透露着放荡不羁的极客精神!

一、如何触发PHP彩蛋?

我们只要在运行PHP的服务器上,在域名后面输入下面的字符参数,就能返回一些意想不到的信息。当然有些服务器是把菜单屏蔽了的。彩蛋只有这4个,PHP是开放源代码的,所以不必担心还有其他。

?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000 (PHP信息列表)
?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 (PHP的LOGO)
?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 (Zend LOGO)
?=PHPE9568F36-D428-11d2-A769-00AA001ACF42 (PHP LOGO 蓝色大象)

我2个网站目前都已屏蔽了PHP彩蛋,所以我们一起来看下腾讯的招聘网站:

原网站是这样的 点击跳转

加上“彩蛋之后”是这样:

1). PHP信息列表 点击跳转

2). PHP的LOGO 点击跳转

3). Zend LOGO 点击跳转

4). PHP LOGO 蓝色大象  点击跳转

二、如何看待PHP彩蛋?

如果你在自己的博客上也发现了这个问题,请不要惊慌,也莫要想着必须马上去解决他。其实这不算是漏洞。只是开源团队开的一个玩笑,全世界都认可的玩笑。没必要上纲上线,将它列为PHP的漏洞,连360都戏称为[彩蛋漏洞]。

三、如何屏蔽PHP彩蛋?

方法①、我们可以通过apache或者nginx的伪静态规则去屏蔽,比如apache的服务器,我们可以在 .htaccess 里面加入以下2条规则即可拦截此类访问:

RewriteCond %{QUERY_STRING} \=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC]
RewriteRule .* - [F]

方法②、 直接编辑PHP的配置文件php.ini,找到expose_php,将值改为Off,然后重启或重载PHP服务即可:

#修改php.ini,找到expose_php并将其值改为Off
expose_php = Off

#修改并保存之后,执行如下命令重载php
service php-fpm reload

我是懒得去想nginx规则该如何写了,直接修改php.ini来屏蔽的。屏蔽后,再去触发彩蛋发现已经无效了。再用360检测已经没有任何问题了:

PHP彩蛋还是漏洞?expose_php彩蛋的触发和屏蔽方法

如果你也发现你的网站有这个问题,也不必太在意。当然,强迫症还是去折腾修复下,免得坐立不安,哈哈!

4 条回应
  1. YsiCing 2015-1-13 · 21:53

    这个彩蛋曾经在一次比赛中看到过,再次复习一下

  2. 微博速递 2015-1-20 · 14:49

    高手![color=red]微博速递http://weibo.zhaock.org [/color]彩蛋已屏蔽

  3. 消灭星星 2015-1-22 · 14:13

    既然来了就留个爪印吧

  4. 三维一度 2015-2-3 · 7:48

    不错 有一次在Jager大哥的博客上学到东西了