電腦網頁通過XPath注入介紹
1.1XPath注入破解介紹
電腦網頁通過XPath注入,攻擊者利用Web應用對用戶提交的參數過濾不嚴的漏洞破解,提交經過構造的參數,這些參數能夠被注入到電腦網頁通過XPath注入查詢語句中dnf,獲得權限信息的訪問權並在此基礎上更改這些信息。適用於使用XML文檔存儲數據的Web應用系統。和SQL注入非常相似,區別在於SQL注入是用戶的輸入被注入到SQL語句中,而電腦網頁通過XPath注入是用戶的輸入注入到XPath查詢語句中。
先來看一個簡單的例子,下圖是登錄頁面:電腦網頁通過XPath注入
輸入登錄信息:
結果:
這時返回的結果包含了很多敏感的信息,可以判斷該應用採用XML存儲用戶認證信息。
為便於分析,在服務器端將查詢語句輸出到用戶的瀏覽器。
在用戶名或密碼處輸入:999'] | * | user[@role='admin ,另一個隨便輸入。
結果:
上圖中畫紅框處即為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注入的發生。
弈安傳媒科技微課堂,每天分享財經資訊,計算機技術知識,人生感悟,創業指導以及各種專業技
術知識資料學習交流.移動學習平臺、知識分享平臺。隨時隨地的學習,如果你喜歡成長,這裡
你不容錯過的地方.弈安傳媒科技培訓關注:關注自己成長,分享內容,分享自己的技術,成就未
來.
[弈安傳媒科技提升自己的平臺]請關注:頭條號及公眾號 弈安傳媒科技