萬盛學電腦網

 萬盛學電腦網 >> 健康知識 >> Microsoft IIS CGI文件名錯誤解碼漏洞

Microsoft IIS CGI文件名錯誤解碼漏洞

  受影響的軟件及系統:  ==================    - Microsoft IIS 4.0   - Microsoft IIS 5.0     不受影響的軟件及系統:  ===================  - Windows IIS 4.0 (sp6/sp6a 沒有安裝其他新的hotfix)    綜述:  =====    NSFOCUS安全小組發現微軟IIS 4.0/5.0在處理CGI程序文件名時存在一個安全  漏洞,由於錯誤地對文件名進行了兩次解碼,攻擊者可能利用這個漏洞執行任意  系統命令。    漏洞分析:  ==========    IIS在加載可執行CGI程序時,會進行兩次解碼。第一次解碼是對CGI文件名進行http  解碼,然後判斷此文件名是否為可執行文件,例如檢查後綴名是否為".exe"或".com"  等等。在文件名檢查通過之後,自學教程,5自學網,IIS會再進行第二次解碼。正常情況下,應該只對該  CGI的參數進行解碼,然而,IIS錯誤地將已經解碼過的CGI文件名和CGI參數一起進行  解碼。這樣,CGI文件名就被錯誤地解碼了兩次。    通過精心構造CGI文件名,攻擊者可以繞過IIS對文件名所作的安全檢查,例如對"../"  或"./"的檢查,在某些條件下,攻擊者可以執行任意系統命令。    例如,對於'\'這個字符,正常編碼後是\。這三個字符對應的編碼為:  '%' = %  '5' = 5  'c' = c    如果要對這三個字符再做一次編碼,就可以有多種形式,例如:  %5c  %5c  %5c   %5c  ...    因此,"..\"就可以表示成"..%5c"或"..%5c"等等形式。    在經過第一次解碼之後,變成"..\"。IIS會認為這是一個正常的字符串,  不會違反安全規則檢查。而在第二次被解碼之後,就會變成"..\"。因此  攻擊者就可以使用"..\"來進行目錄遍歷,執行web目錄之外的任意程序。      漏洞測試:  ==========    例如,如果TARGET存在一個虛擬可執行目錄(scripts),並且它與  windows系統在同一驅動器上。那麼提交類似下列請求:    %5c..%5cwinnt/system32/cmd.exe?/c dir c:  就會列出C:\的根目錄。    當然,對於'/'或者'.'做變換同樣可以達到上面的效果。  例如:"..%2f", ".%2e/"...    注意:攻擊者只能以IUSER_machinename用戶的權限執行命令。    臨時解決方法:  ===========    1、如果不需要可執行的CGI,可以刪除可執行虛擬目錄,例如 /scripts等等。  2、如果確實需要可執行的虛擬目錄,建議將可執行虛擬目錄單獨放在一個分區  3、將所有可被攻擊者利用的命令行工具移到另外一個目錄中並禁止GUEST組   訪問。
copyright © 萬盛學電腦網 all rights reserved