HTTP头的注入攻击

颓废 2019年5月19日09:29:08评论532 views字数 1920阅读6分24秒阅读模式

潜在的HTTP头SQL注入

HTTP头字段

HTTP头字段是超文本传输协议(HTTP)中请求和响应的部分信息,它们定义了HTTP传输的操作参数。

例如: 请求的 HTTP

GET / HTTP/1.1
Connection: Keep-Alive
Keep-Alive: 300
Accept:*/*
Host: host
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16 ( .NET CLR 3.5.30729; .NET4.0E)
Cookie: guest_id=v1%3A1328019064; pid=v1%3A1328839311134

当我们把会话标识保存在数据库时,首先应该把HTTP Cookies作为首要潜在的HTTP变量进行测试。在后面我们将会看到一个使用Cookie进行SQL注入的实例。也有其他和应用相关的HTTP头信息。

X-Forwarded-For

X-Forwarded-For是HTTP头的一个字段。它被认为是客户端通过HTTP代理或者负载均衡器连接到web服务端获取源ip地址的一个标准。

我们来看一个基于表单提交漏洞的例子。

$req = mysql_query(“SELECT user,password FROM admins WHERE user='”.sanitize($_POST[‘user’]).”‘ AND password='”.md5($_POST[‘password’]).”‘ AND ip_adr='”.ip_adr().”‘”);

sanitize() 方法控制着登录变量的正确性。

function sanitize($param){ if (is_numeric($param)) { return $param; } else { return mysql_real_escape_string($param); } }

让我们检查下变量ip,它通过ip_addr()方法来得到输出的值。

function ip_adr() { if
(isset($_SERVER[‘HTTP_X_FORWARDED_FOR’])) { $ip_adr = $_SERVER[‘HTTP_X_FORWARDED_FOR’]; } else { $ip_adr = $_SERVER[“REMOTE_ADDR”]; } if (preg_match(“#^[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}#”,$ip_addr)) { return $ip_adr; } else { return $_SERVER[“REMOTE_ADDR”]; } }

显然,ip地址通过HTTP头X_FORWARDED_FOR 得到返回值。之后,通过preg_match方法来验证是否至少存在一个合法的ip地址。事实上,在使用SQL查询前HTTP_X_FORWARDED_FOR 环境变量没有充分的过滤,这也就导致了在SQL查询时,可以通过这个字段注入任意SQL代码。

这个头字段可以像下面这样简单地修改:

GET /index.php HTTP/1.1
Host: [host]
X_FORWARDED_FOR :127.0.0.1′ or 1=1#

这样的修改将会导致绕过安全认证。

User-agent

用户代理(user agent)是记录软件程序的客户端信息的HTTP头字段,他可以用来统计目标和违规协议。在HTTP头中应该包含它,这个字段的第一个空格前面是软件的产品名称,后面有一个可选的斜杠和版本号。

并不是所有的应用程序都会被获取到user-agent信息,但是有些应用程序利用它存储一些信息(如:购物车)。在这种情况下,我们就有必要研究下user-agent头存在的问题了。

HTTP查询实例:

GET /index.php HTTP/1.1
Host: [host]
User-Agent: aaa’ or 1/*

Referer

Referer是另外一个当应用程序没有过滤存储到数据库时,容易发生SQL注入的HTTP头。它是一个允许客户端指定的可选头部字段,通过它我们可以获取到提交请求URI的服务器情况。它允许服务器产生一系列的回退链接文档,像感兴趣的内容,日志等。它也允许跟踪那些坏链接以便维护。

例如:

GET /index.php HTTP/1.1
Host: [host]
User-Agent: aaa’ or 1/*
Referer: http://www.0dayhack.com.com

还有其他的HTTP头注入,需要看代码测试!

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
颓废
  • 本文由 发表于 2019年5月19日09:29:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   HTTP头的注入攻击http://cn-sec.com/archives/68208.html

发表评论

匿名网友 填写信息