ASP代码审计之XML中的XPATH注入漏洞分析

CracerCracer 2016-1-5 代码审计 1,221 3 6

XML中的XPATH注入漏洞分析

 

概述:Xml文档存储数据时,若查询数据不经过安全过滤也会和关系型数据库一样,产生注入漏洞,在这里我们总结成XPATH注入漏洞,在这里它更像是ACCESS数据库。

 

漏洞原理: 如同Access数据库一样,XML文档只是保存数据用的,若程序对用户提交的数据没有经过安全处理,则会导致安全问题,在这里最常见的莫过于经典的万能密码。

漏洞代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%
function SelectXmlNodeText(elementname,elementpass)
On Error Resume Next
elementname="//"&"root/row[name='"&elementname&"' and password='"&elementpass&"']"
temp = XMLMorntekDocument.selectSingleNode(elementname).text
If temp <> "" Then
Session("UserName") = "asp163"
Response.Write("Welcome , Sysadmin")
Else
Response.Redirect("/admin/Login.asp")
end if
end function
ConnectXml("../admin.xml")
Call SelectXmlNodeText(Request("name"),Request("pass"))
%>

上述代码实现的是一个后台管理验证的功能,admin.xml文件位于站点根目录之外,无法用Http方式下载。程序对Request对象获取来的数据没有经过安全过滤,导致了经典万能密码绕过漏洞。

漏洞利用:

 

1

 

攻击者提交Name和Pass都是“’or ’1′=’1”时候,XML查询节点就变成 “//root/row[name=''or '1'='1' and password=''or '1'='1']” OR语句 发挥了重大作用,只要一个条件为真就可以满足绕过的条件。

漏洞修复:和SQL注射一样,需要对客户端提交过来的数据进行过滤,在本案例中可以过滤掉单引号即可。

 

 

 

 

 

转载请注明来自Cracer,本文标题:《ASP代码审计之XML中的XPATH注入漏洞分析》

喜欢 (6) 发布评论
3 条回复
加载中...
  1. No.1 2年前 (2016-01-06)
    板凳

    挺好的,谢分享

  2. 女王 2年前 (2016-01-05)
    椅子

    不错

  3. Cracer
    Cracer 2年前 (2016-01-05)
    沙发

    不错 :razz:

发表评论


Top