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的应用程序更容易受到代码注入的攻击。
评论