常見的網站漏洞
07-05
1. 注入漏洞(1)sql注入。(2 )xss ( cross site script) 跨站腳本攻擊。服務端:echo $_GET["s"];瀏覽器URL:test.demo.com/index.php?s=<script src="https://www.getit01.com/getimg_360.php?url=http://www.123.com/demo.js"></script>(頁面就會被注入js 腳本)(3)命令注入漏洞。通過GET提交的字元被systerm等系統方法,或者eval執行。(4)HTTP響應頭部注入漏洞(HTTP header injection)Web程序代碼中把用戶提交的參數未做過濾就直接輸出到HTTP響應頭中,apache存在header injection漏洞:1.3.34/2.0.57/2.2.1。可能引起的漏洞cache-poisoning、cross-site scripting、cross-user defacement、page hijacking、cookie manipulation 或 open redirect(5) 跳轉漏洞http://***.qq.com/cgi-bin/demo_es.cgi?backurl=http://www.***.com,修改後backurl=http://www.***.com能跳轉到其他網頁(6)xml注入漏洞Web程序代碼中把用戶提交的參數未做過濾就直接輸出到XML中2. 信息泄漏漏洞(1)phpinfo()信息泄漏(2)測試頁面泄漏在外網漏洞(3)備份文件泄漏在外網(4)版本控制工具把信息泄漏。(5) http認證泄漏漏洞(6)Web目錄開啟了HTTP Basic認證,但未做IP限制,導致攻擊者可以暴力破解帳號密碼(7)管理後台地址泄漏。(8)泄漏員工電子郵箱漏洞以及分機號碼。泄漏員工內部電子郵箱以及分機號碼相當於泄漏了員工內部ID,可以為黑客進行社會工程學攻擊提供有價值的材料,同時也為黑客暴力破解後台服務提供重要的帳號信息(9)錯誤詳情泄漏漏洞。php以及sql操作返回的錯誤信息,可能泄漏伺服器信息。例如sql語句執行錯誤原因,php的錯誤行數等。修復方案:將錯誤信息對用戶透明化,在CGI處理錯誤後可以返回友好的提示語以及返回碼。但是不可以提示用戶出錯的代碼級別的詳細原因。3. 請求偽造漏洞(1)CSRF漏洞(Cross-site request forgery)跨站請求偽造CSRF攻擊是源於WEB的隱式身份驗證機制!WEB的身份驗證機制雖然可以保證一個請求是來自於某個用戶的瀏覽器,但卻無法保證該請求是用戶批准發送的處理方法:(1)客戶端頁面增加偽隨機數。因為攻擊者不能獲得第三方的Cookie(理論上),所以表單中的數據也就構造失敗了:>(2)請求referrer驗證;(3)方法1已經能解決99%的csrf攻擊了,由於用戶的Cookie很容易由於網站的XSS漏洞而被盜取,那就是驗證碼。每次表單提交輸入驗證碼。(2)json-hijacking漏洞CGI(common gateway interface)公共網關介面 (HTTP伺服器與你的或其它機器上的程序進行「交談」的一種工具,其程序須運行在網路伺服器上)以JSON形式輸出數據,黑客控制的開發者站點以CSRF手段強迫用戶瀏覽器請求CGI得到JSON數據,黑客可以獲取敏感信息。修復方法和 CSRF漏洞一樣。4. 許可權控制漏洞(1)文件上傳漏洞。接受文件上傳的Web程序未對文件類型和格式做合法性校驗,導致攻擊者可以上傳Webshell(.php、.jsp等)或者非期望格式的文件(.jpg後綴的HTML文件修復方法:1. 上傳文件類型和格式校驗;2. 上傳文件以二進位形式下載,不提供直接訪問。(2)crossdomain.xml配置不當漏洞。網站根目錄下的文件crossdomain.xml指明了遠程flash是否可以載入當前網站的資源(圖片、網頁內容、flash等),如果配置不當,可能帶來CSRF攻擊。修復方案:對於不需要外部載入資源的網站,crossdomain.xml中更改allow-access-from的domain屬性為域名白名單。修復大致樣本參考如下(備註:示例中的app10000.qzoneapp.com,app10000.imgcache.qzoneapp.com請修改為自己指定的站點):<?xml version="1.0"?><cross-domain-policy><allow-access-from secure="false" domain="*.qq.com"/><allow-access-from secure="false" domain="*.soso.com"/><allow-access-from secure="false" domain="*.paipai.com"/><allow-access-from secure="false" domain="*.gtimg.cn"/><allow-access-from secure="false" domain="*.pengyou.com"/><allow-access-from secure="false" domain="app10000.qzoneapp.com"/><allow-access-from secure="false" domain="app10000.imgcache.qzoneapp.com"/></cross-domain-policy>(2)flash標籤配置不當漏洞。網頁在引入flash的時候,會通過object/embed標籤,在設置的時候,如果一些屬性配置不當,會帶來安全問題:1. allowScriptAccess:是否允許flash訪問瀏覽器腳本。如果不對不信任的flash限制,默認會允許調用瀏覽器腳本,產生XSS漏洞。always(默認值),總是允許;sameDomain,同域允許;never,不允許2. allowNetworking:是否允許flash訪問ActionScript中的網路API。如果不對不信任的flash限制,會帶來flash彈窗、CSRF等問題。all,允許所有功能,會帶來flash彈窗危害;internal,可以向外發送請求/載入網頁;none,無法進行任何網路相關動作(業務正常功能可能無法使用)修復方案:對於不信任flash源,allowScriptAccess設置為never,allowNetworking設置為none(業務需要可以放寬為internal)。(2)embed標籤配置不當漏洞。名稱:embed標籤配置不當漏洞描述:網頁會通過embed標籤引入媒體文件(如rm、avi等視頻音頻),這些媒體文件中如有腳本指令(彈窗/跳轉),如果沒有限制就會出現安全問題。檢測方法:檢查embed標籤中是否有invokes標籤。修復方案:添加屬性invokes值為-1。(3) 並發漏洞攻擊者通過並發http/tcp請求而達到次獲獎、多次收穫、多次獲贈等非正常邏輯所能觸發的效果。描述:攻擊者通過並發http/tcp請求而達到次獲獎、多次收穫、多次獲贈等非正常邏輯所能觸發的效果。下面以簡化的例子說明在交易的Web應用程序中潛在的並行問題,並涉及聯合儲蓄帳戶中的兩個用戶(線程)都登錄到同一帳戶試圖轉賬的情況:帳戶A有100存款,帳戶B有100存款。用戶1和用戶2都希望從帳戶A轉10分到帳戶B.如果是正確的交易的結果應該是:帳戶A 80分,帳戶B 120分。然而由於並發性的問題,可以得到下面的結果:用戶1檢查帳戶A ( = 100 分)用戶2檢查帳戶A ( = 100 分)用戶2需要從帳戶A 拿取10 分( = 90 分) ,並把它放在帳戶B ( = 110 分)用戶1需要從帳戶A 拿取10分(仍然認為含有100 個分)( = 90 分) ,並把它放到B( = 120 分)結果:帳戶A 90 分,帳戶B 120 分。檢測方法:發送並發http/tcp請求,查看並發前後CGI 功能是否正常。例如:並發前先統計好數據,並發後再統計數據,檢查2次數據是否合理。修復方案:對資料庫操作加鎖。(4)cookie安全性漏洞cookie的屬性設置不當可能會造成其他SNS遊戲的運行出錯等安全隱患。修復方案:對cookie欄位的domain屬性做嚴格的設定,openkey以及openid的domain只能設置到子域,禁止設置到父域qzoneapp.com。如下圖所示:
(5)Frame-proxy攻擊漏洞在一些老版本瀏覽器(比如IE6)下,Frame-proxy攻擊可以把非常駐XSS漏洞以常駐型的方式做攻擊。修復方案:qzoneapp.com域名下的應用不能再通過iframe嵌入qq.com域名下頁面。原理如下圖所示,假設域名xiaoyou.qq.com底下沒有任何xss漏洞,然後xiaoyou.qq.com通過iframe嵌入了一個xxx.qzoneapp.com域名。假設qq.com的某個子域vul.qq.com存在一個非常駐的xss漏洞,那麼當xxx.qzoneapp.com通過iframe嵌入vul.qq.com時,訪問xiaoyou.qq.com域名的用戶將受到常駐型XSS漏洞的攻擊。
原文見:http://wiki.open.qq.com/wiki/Web漏洞檢測及修復5. 其他(1) 文件include漏洞。文件包含是指程序代碼在處理包含文件的時候沒有嚴格控制。導致用戶可以構造參數包含遠程代碼在伺服器上執行,進而獲取到伺服器許可權,造成網站被惡意刪除,用戶和交易數據被篡改等一系列惡性後果修復:PHP:配置php.ini關閉遠程文件包含功能(allow_url_include = Off)
推薦閱讀: