我們有一些安全/滲透測試人員測試我們的ASP.NET應用程序,他們發現了一些被認爲是跨站點腳本漏洞的東西。從我所知道的情況來看,它們看起來像是他們通過將文本<ScRiPt>alert(1)</ScRiPt>
插入到其中一個視圖狀態參數中來手動操縱回發的視圖狀態。出於某種原因,即使我們在web.config中指定了自定義錯誤處理程序,但服務器似乎忽略了它們,只是逐個顯示視圖狀態,然後回傳一條通用錯誤消息。因此,<ScRiPt>alert(1)</ScRiPt>
在瀏覽器中運行,導致測試人員將其識別爲跨站點腳本問題。無論這是否是合法的漏洞,我希望能夠正確處理此錯誤並將其重定向到我們的自定義錯誤頁面之一,或者至少防止服務器隨意返回視圖狀態錯誤信息。處理無效的視圖狀態錯誤
除了查看IIS中網站的.NET錯誤頁面和錯誤頁面外,我還嘗試了在global.asax的Application_Error方法中做些事情。在那裏我可以看到狀態碼是500,WebEventCode是System.Web.Management.WebEventCodes.RuntimeErrorViewStateFailure,但是我不能在那裏做一個Response.Redirect或Server.Transfer,因爲我得到一個「Response.Redirect不能被調用在頁面回調中「。例外。我也嘗試將EnableViewStateMac設置爲true,將ViewStateEncryptionMode設置爲始終在web.config中,以查看這是否會改變事情,但我仍然能夠重新創建問題。我會很感激任何人可能有的洞察力。
我越來越從服務器返回的錯誤響應看起來是這樣的:
0|/*DX*/({'generalError':'Invalid viewstate. \r\n\tClient IP: 127.0.0.1\r\n\tPort: 51510\r\n\tReferer: https://localhost/-mysettings.aspx\r\n\tPath: /Default.aspx\r\n\tUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1\r\n\tViewState: /wEPDwUKMjA1OTAyNzk1MWQYBAUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFjQFQmN0bDAxJG1haW5Db250ZW50JGN0bDAwJGNwQWRtaW5pc3RyYXRpb25TZXR0aW5ncyRidG5DaGFuZ2VQYXNzd29yZAU/Y3RsMDEkbWFpbkNvbnRlbnQkY3RsMDAkY3BBZG1pbmlzdHJhdGlvblNldHRpbmdzJGJ0bkVkaXRQaWN0dXJlBT9jdGwwMSRtYWluQ29udGVudCRjdGwwMCRjcEFkbWluaXN0cmF0aW9uU2V0dGluZ3MkYnRuU2F2ZUNoYW5nZXMFQmN0bDAxJG1haW5Db250ZW50JGN0bDAwJGNwQWRtaW5pc3RyYXRpb<ScRiPt>alert(1)</ScRiPt>25TZXR0aW5ncyRjYlNpdGVDb3VudHJ5JERERAU8Y3RsMDEkbWFpbkNvbnRlbnQkY3RsMDAkY3BBZG1pbmlzdHJhdGlvblNldHRpbmdzJEFTUHhCdXR0b24zBV9jdGwwMSRtYWluQ29udGVudCRjdGwwMCRjcEFkbWluaXN0cmF0aW9uU2V0dGluZ3MkdXNlckFkZHJlc3MkcG5sQWRkcmVzcyRjYlNlYXJjaGFibGVBZGRyZXNzJERERAU8Y3RsMDEkbWFpbkNvbnRlbnQkY3RsMDAkY3BBZG1pbmlzdHJhdGlvblNldHRpbmdzJEFTUHhCdXR0b24yBT9jdGwwMSRtYWluQ29udGVudCRjdGwwMCRjcEFkbWluaXN0cmF0aW9uU2V0dGluZ3Mk...'})
對於安全性/滲透測試人員收取IME量,他們不建議的方式,以避免?如果您在現實生活中遇到錯誤,那麼這是MITM攻擊,或者最終用戶的計算機已經感染了惡意軟件,或者是有人故意搞亂視圖狀態。無論這些人是誰,您的網站都已正確拒絕處理該請求,並且不良數據將不會再傳播。我有一個滲透測試報告說「。aspx「是一個漏洞,因爲它表明正在使用IIS。 – 2013-03-06 22:37:03