簡體   English   中英

在Microsoft Ajax中偽造__EVENTVALIDATION

[英]Fake __EVENTVALIDATION in Microsoft Ajax

我正在為網站制作移動應用程序以查看您的日程安排。 他們不提供任何API,也無意提供任何API。

該網站只能使用Ajax,但要偽造這些請求並刮掉我需要偽造__EVENTVALIDATION帖子字段的網站。

我對網站沒有任何控制權,而且我從未使用ASP.NET或Microsoft Ajax構建任何東西。

有沒有人這樣做過?

我發現__EVENTVALIDATION字段有這種模式( ...表示字節根據請求,base64解碼版本的hexdump而改變):

d8 01 16 13 02 4f 0a
...
f6 e0 84 d4 05 02 a0 3f
e2 3f 03 02 3f d8 d1 d5 0c 02 bb 82 cf ec 08 02
b4 b5 99 f8 0b 02 3f 89 3f eb 04 02 d5 83 90 88
0a 02 8a db 94 90 03 02 8b cf 3f 85 08 02 93 3f
b1 3f 06 02 9b 3f 8f a5 02 02 b5 b4 af 85 01 02
d1 fc ae 9c 0e 02 b4 e2 94 9e 0a 02 3f e2 94 9e
0a 02 3f e2 94 9e 0a 02 bb 92 80 a5 06
...

在構建ASP.NET站點的scraper之前,我已經解決了這個問題。 您需要請求瀏覽器用戶通常會登陸的初始頁面,提取__VIEWSTATE__EVENTVALIDATION哈希,然后使用這些來對您實際需要的數據進行第二次請求。

例如,如果您正在從表單提交中抓取響應:

  1. 為表單所在的頁面發出AJAX請求
  2. 從響應中提取視圖狀態和事件驗證哈希
  3. 創建一個模擬表單提交的新AJAX請求,將哈希作為參數傳遞

如果你正在尋找JavaScript函數從標記中提取哈希,我已經在GitHub上發布了我用作ms-viewstate的那些。

__EVENT VALIDATION是一項安全措施

該功能可防止潛在惡意用戶從客戶端發送未經授權的請求。 為確保每個回發和回調事件都源自預期的用戶界面元素,該頁面會在事件上添加額外的驗證層。 該頁面基本上將請求的內容與__EVENTVALIDATION字段中的信息進行匹配,以驗證客戶端上是否未添加額外的輸入字段,並且在服務器上已知的列表上選擇該值。 該頁面在呈現期間生成事件驗證字段 - 即在信息可用時的最后可能時刻。 與視圖狀態一樣,事件驗證字段包含一個哈希值以防止客戶端篡改。

哈希值基於服務器級別的密鑰。 所以你不能復制那個哈希 - 或者更確切地說,如果你沒有訪問服務器,我猜你發現了一個安全漏洞。

REF: MSDN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM