小奋斗 - 轻松学习从此开始!
IT小奋斗群 QQ群:62017228

WEB应用程序 WebService XPath注入的说明与危害

XPath作为用来查询XML数据的语言,同样容易存在很多注入漏洞,XPath注入比SQL注入更简单,因为不同数据库产品的SQL语句有不同的方言,而XPath相对比较统一。

如果我们的Web服务后台采用了XML数据文件记录,使用XPath来查询:

stmt="//users/user[username/text()='" + username+ "' and password/text()='" 
+ password + "']/id/text()";

这里的username和password是通过SOAP消息进行传输的:

<soap:Envelope xmlns:soap="">
    <soap:Body>
        <what21:PerformFunction xmlns:fn="">
            <what21:uid>myuser</what21:uid>
            <what21:password>mypassword</what21:password>
        </what21:PerformFunction>
    </soap:Body>
</soap:Envelope>

攻击者利用SOAP消息传入:username="admin", password="' or '1'='1"

XPath的查询就变成:

stmt="//users/user[username/text()='admin' and password/text()='' 
or '1'='1']/id/text()";

攻击者轻而易举的获取到管理员的权限。


网站和WEB应用程序通常会使用XML作为数据格式,XML就更容易受到代码注入的攻击,尤其是XPath方式的注入攻击。

XPath的语法与SQL的语法在很多方面都有些类似,但是Xpath注入攻击的危险性更胜于SQL注入攻击。攻击者能利用Xpath注入,同样也能迅速获取数据库的删除、修改、读取权限,并可以利用数据库的特性迅速获取服务器的控制权限。因此,基于XML的应用程序更容易受到代码注入的攻击。

我来评几句
登录后评论

已发表评论数(0)