"; echo $_SERVER['PHP_SELF'…" /> HTTP主机头攻击案例 - Mr's Tcsy Blog
头像

Mr_Tcsy

《HTTP主机头攻击案例》

 2月前  •   代码审计  •     •   46  •   0

HTTP主机头攻击又称为…….(英文单词太长没记住),即应用程序信任了请求来源中HOST字段。

这里介绍两种两种案例

案例一:

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

以上代码输入请求SERVER中HTTP_HOST,那么当请求数据包可控时则直接可以控制HTTP_HOST。

这里可以采用代码过滤的方式对HTTP_HOST进行校验,或不使用此类方法直接在程序中定义相关函数。

案例二:

我们一般在访问的时候基本是直接以域名的形式访问的,那么假如说我们在访问http://secsb.com/test 的情况下,服务器会自动在中间插入一个302或301的一个请求帮我们补全访问路径http://secsb.com/test/

服务端采用的一般都是使用location:http://secsb.com/test/ 的方式来进行跳转补全。
这种服务端来控制的跳转我们是没有办法通过代码层来进行控制的,以下提供几种服务端修复方案。

Apache:

    <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:

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

nginx配置类似。
iis指定主机头即可。
BM WAS , IBM BES ,需要方案的可评论私聊。

上一篇:
下一篇:

 评论


 已有0条评论

    还没有任何评论,你来说两句吧!