整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

电脑网页通过XPath注入介绍

电脑网页通过XPath注入介绍

.1XPath注入破解介绍

电脑网页通过XPath注入,攻击者利用Web应用对用户提交的参数过滤不严的漏洞破解,提交经过构造的参数,这些参数能够被注入到电脑网页通过XPath注入查询语句中dnf,获得权限信息的访问权并在此基础上更改这些信息。适用于使用XML文档存储数据的Web应用系统。和SQL注入非常相似,区别在于SQL注入是用户的输入被注入到SQL语句中,而电脑网页通过XPath注入是用户的输入注入到XPath查询语句中。

先来看一个简单的例子,下图是登录页面:电脑网页通过XPath注入

输入登录信息:

电脑网页通过XPath注入

结果:

电脑网页通过XPath注入

电脑网页通过XPath注入

这时返回的结果包含了很多敏感的信息,可以判断该应用采用XML存储用户认证信息。

为便于分析,在服务器端将查询语句输出到用户的浏览器。

在用户名或密码处输入:999'] | * | user[@role='admin ,另一个随便输入。

电脑网页通过XPath注入

电脑网页通过XPath注入

结果:

电脑网页通过XPath注入

电脑网页通过XPath注入

上图中画红框处即为XPath查询语句,可以看到,刚才输入的 999'] | * | user[@role='admin 已经成功的注入进去了!

现在来看看服务器端是如何处理的,index.asp文件内容为:

<script language="javascript" runat="server">

Response.write("<html><body>");

uid=Request.form("uid");

pwd=Request.form("pwd");

Response.write("<form method=\"POST\">Username:<input name=\"uid\" size=\"20\"/><br>Password:<input name=\"pwd\" size=\"20\"/><input type=\"submit\" value=\"Login\"/></form>");

var xmlDom=new ActiveXObject("Microsoft.XMLDOM");

xmlDom.async="false";

xmlDom.load("/Inetpub/wwwroot/xpath/user.xml");

var auth="//users/user[loginID/text()='"+uid+"' and password/text()='"+pwd+"']";

Response.write(auth);

var UserObj=xmlDom.selectNodes(auth);

if(UserObj.length>0) Response.write("<br><br>Login OK!");

else Response.write("Please Input Correct Username and Password!");

Response.write(UserObj.Xml);

for(var i=0;i<UserObj.length;i++)

{

Response.write("<xmp>");

Response.write(UserObj(i).xml);

Response.write("</xmp>");

}

Response.write("</body></html>");

</script>

用于认证的user.xml内容为:

<?xml version="1.0" encoding="UTF-8"?>

<users>

<user>

<firstname>Ben</firstname>

<lastname>Elmore</lastname>

<loginID>abc</loginID>

<password>test123</password>

</user>

<user>

<firstname>Shlomy</firstname>

<lastname>Gantz</lastname>

<loginID>xyz</loginID>

<password>123test</password>

</user>

</users>

从index.asp中可以看到,查询语句为:

auth="//users/user[loginID/text()='"+uid+"' and password/text()='"+pwd+"']"

其含义是:选取这样的user节点,它的loginID=用户提交的uid且password=用户提交的pwd ;

其中uid和pwd变量未经任何检查和过滤,直接传递到查询语句中,上图中实际执行的XPath语句为://users/user[loginID/text()='999' and password/text()='999'] | * | user[@role='admin'] ,含义变成:选取loginID=999且password=999的用户 或者 选取XML所有节点 或者 选择role属性(如果有)为admin的用户。该例中逻辑运算的结果是选取XML所有节点,从而导致XPath注入的发生。

弈安传媒科技微课堂,每天分享财经资讯,计算机技术知识,人生感悟,创业指导以及各种专业技

术知识资料学习交流.移动学习平台、知识分享平台。随时随地的学习,如果你喜欢成长,这里

你不容错过的地方.弈安传媒科技培训关注:关注自己成长,分享内容,分享自己的技术,成就未

来.

[弈安传媒科技提升自己的平台]请关注:头条号及公众号 弈安传媒科技

TML 服务器控件是服务器可理解的 HTML 标签。


HTML 服务器控件

ASP.NET 文件中的 HTML 元素,默认是作为文本进行处理的。要想让这些元素可编程,需向 HTML 元素中添加 runat="server" 属性。这个属性表示,该元素将被作为服务器控件进行处理。

注释:所有 HTML 服务器控件必须位于带有 runat="server" 属性的 <form> 标签内!

注释:ASP.NET 要求所有 HTML 元素必须正确关闭和正确嵌套。

HTML 服务器控件描述
HtmlAnchor控制 <a> HTML 元素
HtmlButton控制 <button> HTML 元素
HtmlForm控制 <form> HTML 元素
HtmlGeneric控制其他未被具体的 HTML 服务器控件规定的 HTML 元素,比如 <body>、<div>、<span> 等。
HtmlImage控制 <image> HTML 元素
HtmlInputButton控制 <input type="button">、<input type="submit"> 和 <input type="reset"> HTML 元素
HtmlInputCheckBox控制 <input type="checkbox"> HTML 元素
HtmlInputFile控制 <input type="file"> HTML 元素
HtmlInputHidden控制 <input type="hidden"> HTML 元素
HtmlInputImage控制 <input type="image"> HTML 元素
HtmlInputRadioButton控制 <input type="radio"> HTML 元素
HtmlInputText控制 <input type="text"> 和 <input type="password"> HTML 元素
HtmlSelect控制 <select> HTML 元素
HtmlTable控制 <table> HTML 元素
HtmlTableCell控制 <td> 和 <th> HTML 元素
HtmlTableRow控制 <tr> HTML 元素
HtmlTextArea控制 <textarea> HTML 元素

务器控件是服务器可理解的标签。


经典 ASP 的局限性

下面列出的代码是从上一章中复制的:

<html>

<body bgcolor="yellow">

<center>

<h2>Hello W3CSchool.cc!</h2>

<p><%Response.Write(now())%></p>

</center>

</body>

</html>