您的位置 首页 php

PHP中的HTTP的头注入漏洞浅谈

说明

在百度或者是谷歌搜索 php 获取客户端ip 搜索到的代码大致是如下:

需要注意的是,上述的代码是存在问题的。因为对于客户端来说凡是以 HTTP 开头的变量都是可控的,不论是通过 getenv 还是通过 $_SERVER 方式获取。这些请求头都是可以通过请求头进行设置。方法很简单,取消其中的 HTTP_
,将其中的 _ 替换为 即可,然后每个字母首字母大写即可。

如下:

而不可控的是 $_SERVER[‘REMOTE_ADDR’] ,因为不是从请求头中取值。

但是如果 Client-Ip X-Forwarded-For 存在值就能够保证触发漏洞了,这种漏洞主要是出现在cms中的 sql注入 中。

HTTP头注入

需要说明的是目前HTTP的头注入一般都是见于这种小型的cms中,像大型的cms一般不会出现这样的问题。这种头注入的问题如果意识到了就十分容易防范。对于我们的白帽子来说,由于是直接从 $_SERVER 中进行取值,而一般的过滤都是针对于GPC,所以HTTP头中的数据一般都能够进行注入。所以这也告诫我们的程序员,很多时候直接从网上搜索的代码是不安全的,程序员们在参考网上代码时最好是对代码进行分析,代码不仅仅只是为了实现功能,还要注重安全。

实例说明

下面以bluecms为例进行说明。

在guest_book.php中的act为 send 的代码如下:

其中的sql语句中的 $online_ip 是在45行定义, $online_ip = getip();
,跟踪进入到 getip() 中: include /common.fun.php

所以这是一个很明显的XFF的漏洞。

漏洞证明

在留言处,设置XFF为 X-Forwarded-For: 1','content'),('', '0', '2', '1513505345', version(), 'content21')# ,如下所示:

访问 guest_book.php 成功地显示出数据库的版本号。

这样的cms还有很多,如beecms,appcms。大家有兴趣可以自行地分析以上的cms,也期待和师傅们的交流。

文章来源:智云一二三科技

文章标题:PHP中的HTTP的头注入漏洞浅谈

文章地址:https://www.zhihuclub.com/151543.shtml

关于作者: 智云科技

热门文章

网站地图