HTTP头注入发现方法(有案例)

0x0:概述

      作者:暗月 博客:www.moonsec.com

      关于这类注入点,传统的web漏洞扫描器,基本上是针对GET/POST注入,

      对于这类注入的检测就变得有心无力了。

0x01:发现

       0x01.1:常见http可能被污染的参数有这些

  • User-agent 浏览器版本 (少)
  • Referer      来源(少)
  • X-Forwarded-For 获取ip(高)
  • client_ip   获取ip(高)

       0x01.2:发现工具

                 笔者采用火狐浏览器演示 首先安装浏览器附加组件 modify headers  安装后重启火狐选择web开发 选择工具 ,如下设置:

      HTTP头注入发现方法(有案例)_第1张图片

                 需要检测User-agent referre 也是如何设置,选择start 确定 浏览器就每次访问网站都会加载这些参数。

      0x01.3:漏洞发现

                存在这里漏洞的地方一般是登录,还有就是记录浏览器信息的地方,据笔者以往审计漏洞和模糊测试的时候经发现存在ip记录的地方特别多。

      0x0.14:漏洞代码

 

function getip()
{
    if (getenv('HTTP_CLIENT_IP'))
    {
        $ip = getenv('HTTP_CLIENT_IP');
    }
   
    elseif (getenv('HTTP_X_FORWARDED_FOR'))
    { //获取客户端用代理服务器访问时的真实ip 地址
        $ip = getenv('HTTP_X_FORWARDED_FOR');
    }
    elseif (getenv('HTTP_X_FORWARDED'))
    {
        $ip = getenv('HTTP_X_FORWARDED');
    }
    elseif (getenv('HTTP_FORWARDED_FOR'))
    {
        $ip = getenv('HTTP_FORWARDED_FOR');
    }
    elseif (getenv('HTTP_FORWARDED'))
    {
        $ip = getenv('HTTP_FORWARDED');
    }
    else
    {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}nction getip()
{
    if (getenv('HTTP_CLIENT_IP'))
    {
        $ip = getenv('HTTP_CLIENT_IP');
    }
   
    elseif (getenv('HTTP_X_FORWARDED_FOR'))
    { //获取客户端用代理服务器访问时的真实ip 地址
        $ip = getenv('HTTP_X_FORWARDED_FOR');
    }
    elseif (getenv('HTTP_X_FORWARDED'))
    {
        $ip = getenv('HTTP_X_FORWARDED');
    }
    elseif (getenv('HTTP_FORWARDED_FOR'))
    {
        $ip = getenv('HTTP_FORWARDED_FOR');
    }
    elseif (getenv('HTTP_FORWARDED'))
    {
        $ip = getenv('HTTP_FORWARDED');
    }
    else
    {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

      0x01.5:漏洞演示

HTTP_CLIENT_IP 首先client_ip 获取不到就选择 HTTP_FORWARDED_FOR 中的X-Forwarded-For 图:

HTTP头注入发现方法(有案例)_第2张图片

HTTP头注入发现方法(有案例)_第3张图片

0x02 案例参考:

  1.  渗透dz官网
  2. BlueCMS注射漏洞

你可能感兴趣的:(技术分享)