最近在修復系統漏洞時,使用新版
AppScan掃描IIS站點(WebForm)出現一個嚴重漏洞「已解密的登錄請求」。
掃描工具修復的建議爲在登錄界面不使用含「password」類型的控件或加密錄入參數。 按其所給的建議,我作了以下修改:將password控件修改成textbox控件。使用js替換輸入的內容。並將錄入的結果錄入到隱藏控件中提交時去隱藏控件的值。
修改後部署更新站點從新掃描並不能解決問題。
經過百度、bing等搜索工具找了一下兩個解決方案:
1.站點登錄採用ssl方式
2.對登錄請求的數據進行加密
因站點要求,並不能使用ssl方式,因此只能採用加密的方式來解決問題。
我使用了可逆加密方式des加密。在前端加密後再提交數據至服務端進行解密。按此種方式修改後,更新站點再進行掃描獲得的結果是依然不能解決這個漏洞的問題。因而我認真查看了AppScan提交數據請求的
記錄。發現我提交請求的數據,並無按我要求進行加密。而是在配置AppScan登錄的數據。這說明AppScan請求登錄只會根據你的配置信息來進行登錄,並不去管你的登錄是否作了其它處理。這是否存在一個問題?你配置appscan的時候你須要配置站點登錄信息,可是他解密時提交的數據原本就是你配置好的。本就是配置的數據,爲何還說你解密的?這裏我對appscan的掃描存在質疑(appscan在坑人,你必須得用ssl方式訪問站點登錄!!)。
因站點的不能使用ssl方式,因此我找同事討論。獲得另外一個解決方案:登錄提交數據使用隱藏控件(包含登錄用戶與密碼),在提交以前對原來登錄用戶、密碼錄入框內的內容進行清空。後臺判斷若錄入框內存在內容則提示「登錄操做錯誤!」。這樣配置後從新掃描,問題獲得瞭解決,可是存在一個問題AppScan再也登錄不了系統了(掃描是會提示不能正常登錄系統,請肯定登錄配置是否正確)。
DES加密及解密(js與C#配套)可參考:http://www.cnblogs.com/luowanli/archive/2013/03/08/DES-Base64%E5%8A%A0%E5%AF%86%E8%A7%A3%E5%AF%86.html
此方法能規避「已解密的登錄請求」的漏洞,可是不能徹底解決。在實際站點中AppScan仍是能掃描出此漏洞,但在掃描出的報文提交的數據中並不能查看到明文的帳號密碼信息。