PHP彩蛋还是漏洞?expose_php彩蛋的触发和屏蔽方法
时间:2022-05-05
本文章向大家介绍PHP彩蛋还是漏洞?expose_php彩蛋的触发和屏蔽方法,主要内容包括一、如何触发 PHP 彩蛋?、加上“彩蛋之后”是这样:、二、如何看待 PHP 彩蛋?、三、如何屏蔽 PHP 彩蛋?、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
最近在折腾网站 XSS 漏洞修复的时候,当我把 XSS 漏洞和谐成功之后,360 扫描送来了一个"彩蛋":
本以为又是 360 误报,结果点击看了下,还真能打开 PHPinfo:
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 检测已经没有任何问题了:
如果你也发现你的网站有这个问题,也不必太在意。当然,强迫症还是去折腾修复下,免得坐立不安,哈哈!
- 信息收集利器:ZoomEye
- go sync.Mutex 设计思想与演化过程 --转
- 漏洞预警 | Ubuntu 16.04版本存在本地提权漏洞(附EXP)
- 通过“震网三代”和Siemens PLC 0day漏洞,实现对工控系统的入侵实验
- 安卓端渗透工具DVHMA:自带漏洞的混合模式APP
- 小萝莉说Crash(二): Unrecognized selector xxx 之 ForwardInvocation
- 5分钟教程:如何通过UART获得root权限
- 源码级剖析PHP 7.2.x GD拒绝服务漏洞
- 美女程序媛发福利,读懂ANR的trace文件So easy
- Openshift高阶探索实验
- 卡卡卡!小萝莉告诉你开发iOS应用如何避免卡顿
- Bugly即将支持的ANR,精神哥告诉你是个什么鬼?
- Go语言Goroutine与Channel内存模型
- 手把手教 | 深度学习库PyTorch(附代码)
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- rabbitmq主题订阅
- AI算法让图片动起来,深情演唱Unravel
- python 学习笔记(1)——python中的lambda函数用法
- SpringBoot过滤器的简单使用
- SpringBoot拦截器的简单使用
- dotNET Core:编码规范
- K8s——Ingress-nginx原理及配置
- Java的类加载器
- 如何启动HiveServer2
- dotnet 如何调试 SmartSql 的实际执行 SQL 语句
- dotnet 关于 SmartSql 的 SQL 语句的属性替换前缀说明
- 为什么java初学者要学习一点前端技术?
- Expedition (POJ 2431)
- java JVM 报C [libresolv.so.2+0x7e7d] __libc_res_nquery+0x4dd 解决
- Fence Repair (PKU 3253)