HTTP主机头攻击案例

HTTP主机头攻击又称为…….(英文单词太长没记住),具体是干啥的各位看管可自己百度。

本文章仅介绍两种案例

环境1: 因博主太渣,本处引用PHP代码。

1
2
3
4
<?php
echo $_SERVER['HTTP_HOST']."<br />";
echo $_SERVER['PHP_SELF']."<br />";
?>

当修改请求数据包中的HOST字段时页面中会输出请求中的host字段而非实际应用系统地址,修复方式,添加全局代码过滤器,或者你不用此类方法。

环境2: 在HTTP状态码中有302 301 状态,此两种状态码在响应数据header中会有一个location字段(又称为重定向跳转),如果未正确配置WEB容器配置则会可能导致此类响应中的location地址被篡改。

以下为各WEB容器的修复方案:
Apache: 在配置中新增字段 ServerAlias 为当前应用系统地址

1
2
3
4
5
6
7
8
9
10
11
12
<VirtualHost *:80>
DocumentRoot "D:\phpStudy\PHPTutorial\WWW\php_bugs-master"
ServerName www.aabb.com
ServerAlias www.aabb.com
<Directory "D:\phpStudy\PHPTutorial\WWW\php_bugs-master">
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>

Tomcat: 修改config目录下的server.xml 修改host中的name值,并新增alias属性。

1
2
3
<Host name="127.0.0.1"  appBase="webapps" unpackWARs="true" autoDeploy="true">
<alias>127.0.0.1</alias>
</Host>

Nginx:类似配置,暂时未遇到案例,遇到了在补充。
IBM WAS , IBM BES ,需要方案的可以邮件联系我。