Web安全漏洞及代碼審計(第2版)(微課版)課件 【ch03】初基于DVWA的漏洞分析與代碼審計_第1頁
Web安全漏洞及代碼審計(第2版)(微課版)課件 【ch03】初基于DVWA的漏洞分析與代碼審計_第2頁
Web安全漏洞及代碼審計(第2版)(微課版)課件 【ch03】初基于DVWA的漏洞分析與代碼審計_第3頁
Web安全漏洞及代碼審計(第2版)(微課版)課件 【ch03】初基于DVWA的漏洞分析與代碼審計_第4頁
Web安全漏洞及代碼審計(第2版)(微課版)課件 【ch03】初基于DVWA的漏洞分析與代碼審計_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

基于DVWA的漏洞分析與代碼審計項目3Web安全漏洞及代碼審計(第2版)(微課版)01項目知識準(zhǔn)備項目知識準(zhǔn)備01漏洞簽名:是指經(jīng)常伴隨漏洞出現(xiàn)的特征代碼,簡單來說,就是經(jīng)常伴隨漏洞出現(xiàn)的函數(shù),如SQL注入的mysql_query()函數(shù)及命令注入的shell_exec()函數(shù)等。這時可以直接在源代碼中全文搜索危險函數(shù),快速定位可能出現(xiàn)問題的位置,分析危險函數(shù)的上下文,判斷輸入的參數(shù)是否可控,并跟蹤參數(shù)的傳遞流程。也可以根據(jù)一些特征去匹配關(guān)鍵字。例如:在SQL語句中使用SELECT查詢語句等。雖然這種方式的審計效率較高,可以快速定位漏洞,但是由于對程序的了解不是很深入,因此該方式無法確定一些邏輯層面的漏洞。尋找漏洞簽名一項目知識準(zhǔn)備01當(dāng)有了一定的代碼審計經(jīng)驗后,通常可以掌握常見的漏洞觸發(fā)場景。因此,也可以通過這種方式進行代碼審計,并在程序部署成功后查看系統(tǒng)中存在哪些功能模塊,了解對應(yīng)功能的程序文件是什么樣的。當(dāng)了解了程序的大體功能后,就可以針對功能點進行定向?qū)徲嫛@?,在上傳頭像時:若沒有校驗上傳文件的格式類型,則可能導(dǎo)致文件上傳漏洞;在加載圖片或分享鏈接時會發(fā)送網(wǎng)絡(luò)請求,若沒有校驗內(nèi)網(wǎng)地址和限制規(guī)定協(xié)議,則可能導(dǎo)致SSRF漏洞;在文件操作界面中,若不同賬戶的權(quán)限不同,則可能因權(quán)限校驗不嚴格而導(dǎo)致越權(quán)漏洞。因此,可以優(yōu)先尋找經(jīng)常出現(xiàn)問題的功能點來進行代碼審計,以快速提高審計效率。功能點定向?qū)徲嫸椖恐R準(zhǔn)備01使用通讀全文的方式可以快速了解整個程序的業(yè)務(wù)邏輯,使審計更加全面。在人工審計代碼時,通常需要收集系統(tǒng)的設(shè)計文檔、系統(tǒng)開發(fā)說明書等技術(shù)資料,以便更好地了解系統(tǒng)的業(yè)務(wù)功能。首先,需要了解程序代碼的目錄結(jié)構(gòu),包括主目錄文件、功能模塊文件、靜態(tài)資源目錄文件及日志文件等,而index.php、admin.php文件通常是整個程序的入口,通過讀取index.php文件可以知道程序的架構(gòu)、運行流程、包含的配置文件、包含的過濾文件及包含的安全過濾文件等,從而了解程序的業(yè)務(wù)邏輯。在配置文件(如config.php)中,會保存數(shù)據(jù)庫和程序配置的相關(guān)信息,如果數(shù)據(jù)庫采用GBK編碼格式,則可能存在寬字節(jié)注入問題,如果變量的值使用雙引號,則可能存在雙引號二次解析引起的代碼執(zhí)行等問題。在公共函數(shù)文件和安全過濾文件中,可能會對用戶輸入的參數(shù)進行轉(zhuǎn)義,這關(guān)系到漏洞點能否被利用??梢酝ㄟ^讀取過濾文件,清晰地掌握用戶輸入的數(shù)據(jù)中哪些數(shù)據(jù)被過濾了,哪些數(shù)據(jù)沒有被過濾。如果數(shù)據(jù)被過濾了,那么可以了解數(shù)據(jù)是在什么位置被過濾的,過濾的機制是什么樣的,是通過替換的方式還是正則的方式過濾的,是否開啟了魔術(shù)引號或使用了過濾函數(shù),以及能否繞過過濾機制。這樣一來,在使用通讀全文的方式進行代碼審計時,可以更有方向地通讀全文的代碼,不僅可以梳理一遍程序的架構(gòu)、流程,還可以審計出更多有質(zhì)量的漏洞。通讀全文三02任務(wù)1功能點定向?qū)徲嬋蝿?wù)1功能點定向?qū)徲?2能夠進行功能點的定向?qū)徲嬃私釵WASP和國際漏洞庫(CVE)中安全漏洞的分類和發(fā)展態(tài)勢。任務(wù)目標(biāo)一任務(wù)實施二1.尋找漏洞簽名這里選擇使用Seay源代碼審計系統(tǒng)來演示如何尋找漏洞簽名,如圖3-1所示。單擊菜單欄中的“新建項目”按鈕,選擇需要審計的項目后單擊菜單欄中的“自動審計”按鈕,進入“自動審計”界面,之后單擊“開始”按鈕,即可開始審計。任務(wù)1功能點定向?qū)徲?2任務(wù)實施二在審計結(jié)束后,會得到一些頁面中可能存在的漏洞列表,如圖3-2所示。選擇位于content.php頁面的那一條信息,雙擊第15行中“漏洞詳細”列的相應(yīng)內(nèi)容,即可直接定位到這段代碼中,如圖3-3所示。1.尋找漏洞簽名任務(wù)1功能點定向?qū)徲?2任務(wù)實施二定位代碼中的SQL語句使用的是拼接的方式,也就是說,SQL語句中的$id是可控的。通過分析上下文可知,$id是通過轉(zhuǎn)義后的參數(shù)cid賦值的,傳遞過來的參數(shù)cid會經(jīng)過addslashes()函數(shù)轉(zhuǎn)義,而addslashes()函數(shù)的作用是在單引號(')、雙引號(")、反斜線(\)與NULL字符之前加上反斜線??梢酝ㄟ^報錯語句來讀取數(shù)據(jù)庫信息,在請求中輸入如下代碼:1.尋找漏洞簽名任務(wù)1功能點定向?qū)徲?2任務(wù)實施二1)程序安裝:在進行程序安裝時,如果未嚴格過濾配置文件,則攻擊者可以在安裝過程中向配置文件中插入惡意代碼以執(zhí)行任意命令,甚至可以直接獲取Webshell。2)文件上傳:在網(wǎng)站運營的過程中,不可避免地要更新網(wǎng)站的某些頁面或內(nèi)容,因此有必要在網(wǎng)站中使用文件上傳功能。3)文件操作:在進行文件操作時,除任意文件讀取漏洞外,若程序開發(fā)人員先將重復(fù)的代碼單獨寫到一個文件中,然后在需要使用該文件中的代碼時,直接使用包含函數(shù)包含該文件并調(diào)用,則很可能存在文件包含漏洞。4)登錄驗證:在進行登錄驗證時,經(jīng)常會出現(xiàn)的漏洞。5)找回密碼:在找回密碼的過程中,雖然看起來沒有文件包含這種可以危害到服務(wù)器安全的漏洞,但是如果攻擊者可以重置管理員的密碼,則可以間接控制業(yè)務(wù)權(quán)限甚至拿到服務(wù)器權(quán)限。2.功能點定向?qū)徲嬋蝿?wù)1功能點定向?qū)徲?2任務(wù)實施二這里使用熊海CMS1.0進行演示,此系統(tǒng)功能比較簡單,也比較容易理解。首先看一下目錄結(jié)構(gòu),如圖3-5所示。index.php文件代碼如下:3.通讀全文任務(wù)1功能點定向?qū)徲?2任務(wù)實施二在inc目錄中,有一些配置數(shù)據(jù)庫的文件,其中checklogin.php文件中的代碼如下:3.通讀全文這個配置文件是用于驗證后臺登錄信息的文件,而后臺是否登錄是通過獲取Cookie中的參數(shù)user進行判斷的。如果參數(shù)user為空,則會跳轉(zhuǎn)到登錄界面。幾乎所有后臺都是通過這種Cookie來進行認證的,因此,只要在Cookie中自行加入?yún)?shù)user的值,就可以成功繞過后臺權(quán)限。以/admin/files/wzlist.php文件為例,如圖3-7所示。03任務(wù)2暴力破解漏洞與審計任務(wù)2暴力破解漏洞與審計03能夠進行暴力破解漏洞的分析與代碼審計了解國內(nèi)漏洞平臺(CNVD/CNNVD)、國外漏洞平臺(OWASP/CVE)中關(guān)于暴力破解漏洞的新資訊。任務(wù)目標(biāo)一任務(wù)實施二1.Low等級任務(wù)2暴力破解漏洞與審計03任務(wù)實施二2.Medium等級任務(wù)2暴力破解漏洞與審計03任務(wù)實施二3.High等級任務(wù)2暴力破解漏洞與審計03任務(wù)實施二4.Impossible等級任務(wù)2暴力破解漏洞與審計03任務(wù)實施二4.Impossible等級04任務(wù)3命令注入漏洞與審計任務(wù)3命令注入漏洞與審計04能夠進行命令注入漏洞的分析與代碼審計了解國內(nèi)漏洞平臺(CNVD/CNNVD)、國外漏洞平臺(OWASP/CVE)中關(guān)于命令注入漏洞的新資訊。任務(wù)目標(biāo)一任務(wù)實施二1.Low等級任務(wù)3命令注入漏洞與審計04任務(wù)實施二2.Medium等級任務(wù)3命令注入漏洞與審計04任務(wù)實施二3.High等級任務(wù)3命令注入漏洞與審計04任務(wù)實施二4.Impossible等級05任務(wù)4跨站請求偽造漏洞與審計任務(wù)4跨站請求偽造漏洞與審計05能夠進行跨站請求偽造漏洞的分析與代碼審計了解國內(nèi)漏洞平臺(CNVD/CNNVD)、國外漏洞平臺(OWASP/CVE)中關(guān)于跨站請求偽造漏洞的新資訊。任務(wù)目標(biāo)一任務(wù)實施二1.Low等級在存在CSRF漏洞的提交框內(nèi)輸入要修改的密碼并提交,之后復(fù)制提交信息后的URL,如/dvwa/vulnerabilities/csrf/?password_new=admin&password_conf=admin&Change=Change#。該URL中包含要修改的密碼,攻擊者可以將這個網(wǎng)站地址發(fā)送給目標(biāo)對象,如果目標(biāo)對象此時正以管理員的身份登錄此網(wǎng)站,并單擊了該URL,攻擊者就可以成功地修改此網(wǎng)站的賬戶和密碼。代碼如下:任務(wù)4跨站請求偽造漏洞與審計05任務(wù)實施二上述Low等級代碼是一段用于修改密碼的PHP程序。通過上述代碼可以看出,當(dāng)password_new與password_conf一致時,程序就會進行修改密碼的操作。(1)通過發(fā)送電子郵件或信息等方式將URL發(fā)送給該網(wǎng)站的一個用戶,當(dāng)該用戶單擊了這個鏈接后,其密碼就會被自動修改為password,但是會進入密碼修改成功的提示界面,使得用戶有所察覺。(2)構(gòu)造攻擊頁面,插入<imgsrc='改密url'/>標(biāo)簽,當(dāng)用戶訪問該網(wǎng)站時,瀏覽器在加載圖片時就會自動修改密碼,代碼如下:1.Low等級任務(wù)4跨站請求偽造漏洞與審計05任務(wù)實施二2.Medium等級任務(wù)4跨站請求偽造漏洞與審計05任務(wù)實施二2.Medium等級參數(shù)Referer繞過過濾規(guī)則,結(jié)果如圖3-14所示。密碼修改成功,結(jié)果如圖3-15所示。任務(wù)4跨站請求偽造漏洞與審計05任務(wù)實施二3.High等級任務(wù)4跨站請求偽造漏洞與審計05任務(wù)實施二上述High等級代碼增加了token的限制。在用戶每次訪問改密頁面時,服務(wù)器都會返回一個隨機的token。當(dāng)客戶端向服務(wù)器發(fā)起請求時,客戶端需要提交token,而服務(wù)器在收到請求時,會優(yōu)先檢查token,只有token正確,服務(wù)器才會處理客戶端的請求。攻擊者只有獲取token后才能模擬請求,且只有登錄后才能訪問該頁面并獲取token。但是瀏覽器有同源策略限制,不允許跨域請求。此時攻擊者配合XSS漏洞,在XSS頁面注入JavaScript腳本,可以實現(xiàn)改密操作。下面利用High等級代碼中的XSS漏洞協(xié)助獲取token來完成CSRF攻擊。由于這里的name存在XSS漏洞,因此進行抓包,在參數(shù)中寫入XSS語句<iframesrc="../csrf"onload=alert(frames[0].document.getElementsByName('user_token')[0].value)>,即可成功彈出token,如圖3-16所示。3.High等級任務(wù)4跨站請求偽造漏洞與審計05任務(wù)實施二4.Impossible等級06任務(wù)5文件包含漏洞與審計任務(wù)5文件包含漏洞與審計06能夠進行文件包含漏洞的分析與代碼審計了解國內(nèi)漏洞平臺(CNVD/CNNVD)、國外漏洞平臺(OWASP/CVE)中關(guān)于文件包含漏洞的新資訊。任務(wù)目標(biāo)一任務(wù)實施二1.Low等級通過分析上述Low等級代碼可以發(fā)現(xiàn),該代碼直接從參數(shù)GET['page']中獲取文件名,并將其改為任意文件。具體操作步驟如下。(1)直接執(zhí)行遠程PHP代碼,示例代碼如下:任務(wù)5文件包含漏洞與審計06任務(wù)實施二(2)采用base64_encode的方式讀取文件內(nèi)容,并展示在頁面中,示例代碼如下:1.Low等級上述Low等級代碼沒有過濾任何內(nèi)容。index.php文件直接包含了Low等級代碼中$file的值。要使用遠程文件包含功能,需要在php.ini配置文件中開啟兩個參數(shù):allow_url_fopen=on;allow_url_include=on。使用遠程文件包含功能演示在DVWA目錄下的1.txt文件中寫入phpinfo()函數(shù)和一句話,如圖3-18所示。任務(wù)5文件包含漏洞與審計06任務(wù)實施二2.Medium等級通過分析上述Medium等級代碼可以發(fā)現(xiàn),該代碼對參數(shù)進行了簡單的過濾。$file=str_replace(array("http://","https://"),"",$file);$file=str_replace(array("../","..\""),"",$file);hhttps://ttp://過濾后剛好為http://,繞過了該防護,可見過濾并不嚴謹,如圖3-21所示。任務(wù)5文件包含漏洞與審計06任務(wù)實施二3.High等級上述High等級代碼的主要功能是引用file1.php、file2.php、file3.php、include.php文件,所以該代碼增加了對文件名的驗證,代碼如下:利用File協(xié)議即可繞過該正則判斷,如vulnerabilities/fi/?page=file:///D:/phpstudy_pro/WWW/DVWA/1.txt,結(jié)果如圖3-22所示。任務(wù)5文件包含漏洞與審計06任務(wù)實施二4.Impossible等級通過分析上述Impossible等級代碼可以發(fā)現(xiàn),該代碼中的策略是正確的,但是其正則表達式寫得不夠嚴謹,可以通過在代碼中使用白名單的方式進行文件名稱全匹配,從而避免引入其他未知文件。同時,Impossible等級代碼中的if語句是根據(jù)條件進行判斷的,如果包含的不是include.php文件且文件名不是以file開頭的,就會報錯。07任務(wù)6文件上傳漏洞與審計任務(wù)6文件上傳漏洞與審計07能夠進行文件上傳漏洞的分析與代碼審計了解國內(nèi)漏洞平臺(CNVD/CNNVD)、國外漏洞平臺(OWASP/CVE)中關(guān)于文件上傳漏洞的新資訊。任務(wù)目標(biāo)一任務(wù)實施二1.Low等級通過分析上述Low等級代碼可以發(fā)現(xiàn),該代碼沒有進行過濾或本地JavaScript校驗,也沒有進行任何防護,更沒有對上傳文件的格式進行限制,且文件不需要重命名,所以可以直接上傳PHP腳本文件等。任務(wù)實施二2.Medium等級通過分析上述Medium等級代碼可以發(fā)現(xiàn)以下內(nèi)容。(1)上傳.php文件,會出現(xiàn)如下報錯信息:(2)通過修改Content-Type:image/png,可以成功上傳phpinfo.php文件。源代碼如下:任務(wù)6文件上傳漏洞與審計07任務(wù)實施二3.High等級上述High等級代碼增加了對文件名后綴的判斷,但是未對文件進行重命名。上傳test.php%00.png文件,在文件內(nèi)容開始位置增加png頭“89504E470D0A1A0A”,在PHP版本號小于5.3.4或Magic_quote_gpc=off時,通過substr()函數(shù)獲取的后綴為png;在保存文件時,%00會將文件名截斷為test.php。%00的增加方式有以下兩種。(1)使用BurpSuite抓包,在Row模式下文件名中間增加空格,之后切換到Hex編碼,找到20并將其改成00。(2)在Row模式下的文件名中增加“%00”,之后右擊“%00”,選擇相應(yīng)命令,進行URLDecode編碼。任務(wù)6文件上傳漏洞與審計07任務(wù)實施二4.Impossible等級任務(wù)6文件上傳漏洞與審計0708任務(wù)7SQL注入漏洞與審計任務(wù)7SQL注入漏洞與審計08能夠進行SQL注入漏洞的分析與代碼審計了解國內(nèi)漏洞平臺(CNVD/CNNVD)、國外漏洞平臺(OWASP/CVE)中關(guān)于SQL注入漏洞的新資訊。任務(wù)目標(biāo)一任務(wù)實施二1.Low等級從上述Low等級代碼中可以清楚地看到,參數(shù)被直接拼接在SQL語句中,可以被注入任意SQL語句中;在出現(xiàn)語法錯誤時,會有SQL語句報錯,可以更加方便地編寫SQL注入。通過$_GET['id']=1'or1=1---可以繞過判斷,之后利用union查詢數(shù)據(jù)庫中的內(nèi)容。任務(wù)實施二SQL手動注入的方法:利用上面的漏洞對SQL語句進行手動注入的方法如下。(1)通過id=1和id=1',利用回顯不同來判斷是否存在漏洞。(2)通過id=1'and1=1---和id=1'and1=0---,確認SQL注入點。(3)通過orderby查詢前面的字段數(shù)目。id=1'orderby[n]---,當(dāng)n=2時正常,當(dāng)n=3時報錯,則說明有兩個字段。(4)通過查詢?yōu)榭?,之后利用union確定回顯字段。id=1'and1=0unionselect1,2---,確定回顯字段為1,2。(5)在union后構(gòu)造查詢語句,可以獲取數(shù)據(jù)庫信息。常用的union構(gòu)造查詢語句有以下幾條:任務(wù)7SQL注入漏洞與審計081.Low等級任務(wù)實施二這里的普通SQL注入是非常容易被利用的SQL注入漏洞,例如,直接通過聯(lián)合查詢注入就可以查詢數(shù)據(jù)庫的內(nèi)容。一般的SQL注入工具也能夠非常好地利用SQL注入漏洞,如sqlmap。sqlmap是目前使用非常多的SQL注入工具,并且是一款開源的國外SQL注入工具。該工具基于Python開發(fā),具有強大的檢測引擎,可以用來進行自動化檢測,支持多種方式及多種類型的SQL注入。但是,攻擊者利用SQL注入漏洞,可以獲取數(shù)據(jù)庫服務(wù)器的權(quán)限,獲取存儲在數(shù)據(jù)庫中的數(shù)據(jù),訪問操作系統(tǒng)文件,甚至通過外部數(shù)據(jù)連接執(zhí)行操作系統(tǒng)命令。sqlmap常用的指令如下。(1)-u:指定目標(biāo)URL,SQL注入點。(2)-cookie:當(dāng)前會話的Cookie值。(3)-b:獲取數(shù)據(jù)庫類型,檢索數(shù)據(jù)庫管理系統(tǒng)的標(biāo)識。(4)-current-db:獲取當(dāng)前數(shù)據(jù)庫信息。(5)-current-user:獲取當(dāng)前登錄數(shù)據(jù)庫的用戶信息。任務(wù)7SQL注入漏洞與審計081.Low等級任務(wù)實施二sqlmap還有更多的指令,可以使用-h或--help指令查看更多的指令操作,如果不想在每次執(zhí)行語句時都要手動確認一些選項,則可以使用--batch指令,讓sqlmap自己決定。對于sqlmap,本書不再贅述,感興趣的讀者可以自行查閱相關(guān)資料。任務(wù)7SQL注入漏洞與審計081.Low等級任務(wù)實施二任務(wù)7SQL注入漏洞與審計082.Medium等級任務(wù)實施二通過分析上述High等級代碼可以發(fā)現(xiàn),從Session中獲取參數(shù)id,理論上很安全,但是攻擊者可以通過前端隨意修改Session,因此,這種方式同樣是不安全的。利用BurpSuite進行抓包,如圖3-25所示。任務(wù)7SQL注入漏洞與審計083.High等級任務(wù)實施二通過抓包可以發(fā)現(xiàn),首先請求的是session-input.php文件,下面分析一下session-input.php文件中的代碼。這里接收通過POST方式傳遞的參數(shù)id的值,也就是第一個請求包中參數(shù)id的值,之后把參數(shù)id的值存儲到high.php文件的Session中。變量$id的值就是獲取的$_SESSION['id']的值,之后將它代入SQL語句中執(zhí)行。任務(wù)7SQL注入漏洞與審計083.High等級任務(wù)實施二在上述Impossible等級代碼中,int型參數(shù)增加了is_numeric判斷,不接收其他字符串,從而避免了SQL注入。同時,使用PDO綁定參數(shù)的方式查詢數(shù)據(jù)庫十分安全。因此,在進行數(shù)據(jù)庫查詢時,推薦使用PDO方式,使$變量完全不出現(xiàn)在SQL語句中;要對參數(shù)增加嚴格校驗及格式轉(zhuǎn)換的步驟,只接收自己想要的參數(shù);不要相信任何用戶輸入、SERVER變量、數(shù)據(jù)庫查詢的數(shù)據(jù)等。漏洞防范:雖然SQL注入漏洞是當(dāng)前被廣泛利用的漏洞,但是解決SQL注入漏洞的問題實際上比較簡單。在PHP中,可以使用魔術(shù)引號來解決,但是在PHP5.4之后的版本中取消了魔術(shù)引號,并且GPC在面對int型注入時并沒有那么強大,因此通常使用的方法是過濾函數(shù)和類、PDOprepare預(yù)編譯。下面來看一下這兩種方法。(1)過濾函數(shù)和類。(2)PDOprepare預(yù)編譯。任務(wù)7SQL注入漏洞與審計084.Impossible等級09任務(wù)8SQL盲注漏洞與審計任務(wù)8SQL盲注漏洞與審計09能夠進行SQL盲注漏洞的分析與代碼審計了解國內(nèi)漏洞平臺(CNVD/CNNVD)、國外漏洞平臺(OWASP/CVE)中關(guān)于SQL盲注漏洞的新資訊。任務(wù)目標(biāo)一任務(wù)實施二1.Low等級通過分析上述Low等級代碼可以發(fā)現(xiàn),變量$id接收$_GET['id']的值,變量$getid被設(shè)置為"SELECTfirst_name,last_nameFROMusersWHEREuser_id='$id';",變量$result執(zhí)行SQL語句,從而判斷出該SQL注入是字符類型的注入。if語句用于判斷SQL語句執(zhí)行后的返回值,如果條件成立,則顯示“UserIDexistsinthedatabase.”,否則顯示“UserIDisMISSINGfromthedatabase.”。任務(wù)實施二在DVWA中執(zhí)行SQL語句,并進行如下操作。(1)通過1和1'的顯示判斷是否存在漏洞。(2)通過1'and1=1---和1'and1=0---,確認SQL注入點“and1=0”。(3)通過猜測,得到數(shù)據(jù)庫名:①1'andlength(database())=[1-100]---(獲取數(shù)據(jù)庫名長度為4)。②1'andascii(SELECTSUBSTR(database(),1,1)=[97-255]---(通過判斷是否相等來獲取字符的ASCII值,并查詢所有ASCII值,得到數(shù)據(jù)庫名)。上述Low等級代碼沒有進行過濾,因此直接使用sqlmap運行代碼即可。1.Low等級任務(wù)8SQL盲注漏洞與審計09任務(wù)實施二Medium等級代碼和Low等級代碼的區(qū)別在于,前者是通過POST方式傳遞參數(shù)的,后者是通過GET方式傳遞參數(shù)的。但相同的是,Medium等級代碼也沒有進行過濾,也可以直接進行抓包,并使用sqlmap運行代碼。2.Medium等級任務(wù)8SQL盲注漏洞與審計09任務(wù)實施二High等級代碼改為接收Cookie傳遞過來的值,之后拼接SQL語句,因此前文中的SQL注入變?yōu)榱薈ookie注入。cookie-input.php文件的代碼如下:3.High等級任務(wù)8SQL盲注漏洞與審計09任務(wù)實施二通過分析上述代碼可以發(fā)現(xiàn),該程序接收通過POST方式傳遞過來的參數(shù)值并將其存儲到Cookie中。使用BurpSuite抓包進行分析,第一次請求的是cookie-input.php文件。第二次請求為攜帶數(shù)據(jù)“id=1&Submit=Submit”請求cookie-input.php文件。第三次請求的是sqli_blind/,此時,Cookie的值是id=1。3.High等級任務(wù)8SQL盲注漏洞與審計09任務(wù)實施二4.Impossible等級任務(wù)8SQL盲注漏洞與審計0910任務(wù)9脆弱會話漏洞與審計任務(wù)9脆弱會話漏洞與審計10能夠進行脆弱會話漏洞的分析與代碼審計了解國內(nèi)漏洞平臺(CNVD/CNNVD)、國外漏洞平臺(OWASP/CVE)中關(guān)于脆弱會話漏洞的新資訊。任務(wù)目標(biāo)一任務(wù)實施二1.Low等級通過分析上述Low等級代碼可以發(fā)現(xiàn),Session的值last_session_id的初始設(shè)置為0,之后每執(zhí)行一次“$_SESSION['last_session_id']++;”,其值加1,即1,2,3,…,n,最后使用setcookie()函數(shù)將其最終值作為瀏覽器端的Cookie值。任務(wù)實施二可以嘗試不使用密碼登錄,進入DVWA的脆弱會話漏洞,單擊“Generate”按鈕,如圖3-37所示。這時可以簡單地猜測出,下一個參數(shù)dvwaSession的值是這個參數(shù)值加1,所以使用Google瀏覽器在Cookie中添加dvwaSession=2,之后發(fā)現(xiàn)雖然Google瀏覽器沒有登錄過DVWA,但是通過這個Session,繞過了輸入賬號、密碼的過程,直接登錄了賬戶,如圖3-38所示。1.Low等級任務(wù)9脆弱會話漏洞與審計10任務(wù)實施二可以嘗試不使用密碼登錄,進入DVWA的脆弱會話漏洞,單擊“Generate”按鈕,如圖3-37所示。這時可以簡單地猜測出,下一個參數(shù)dvwaSession的值是這個參數(shù)值加1,所以使用Google瀏覽器在Cookie中添加dvwaSession=2,之后發(fā)現(xiàn)雖然Google瀏覽器沒有登錄過DVWA,但是通過這個Session,繞過了輸入賬號、密碼的過程,直接登錄了賬戶,如圖3-38所示。通過分析上述Medium等級代碼可以發(fā)現(xiàn),該代碼使用了time()函數(shù)來設(shè)置$cookie_value的值,之后使用setcookie()函數(shù)將該值作為瀏覽器端的Cookie值。使用BurpSuite進行抓包,如圖3-39所示。2.Medium等級任務(wù)9脆弱會話漏洞與審計10任務(wù)實施二上述High等級代碼使用了!isset()函數(shù)對Session變量$_SESSION['last_session_id_high']進行檢查,如果沒有對該變量進行賦值,則將該變量的初始值設(shè)置為0,同時每執(zhí)行一次相應(yīng)代碼,該變量的值都遞增1,之后將該變量進行MD5加密后賦值給$cookie_value,最后使用setcookie()函數(shù)將$cookie_value的值作為瀏覽器端的Cookie值。將DVWA中Session變量的值進行MD5解密后,就可以輕松發(fā)現(xiàn)其中的規(guī)律了,其他操作與Low等級代碼中的操作相同,這里就不再進行演示了。3.High等級任務(wù)9脆弱會話漏洞與審計10任務(wù)實施二通過分析上述Impossible等級代碼可以發(fā)現(xiàn),該代碼先使用mt_rand()函數(shù)選取隨機數(shù),然后加上時間戳和字符串,通過sha1()函數(shù)進行SHA加密后賦值給$cookie_value,最后使用setcookie()函數(shù)將$cookie_value的值作為瀏覽器端的Cookie值。該Impossible等級代碼已經(jīng)成功攔截了99%的脆弱會話攻擊。4.Impossible等級任務(wù)9脆弱會話漏洞與審計1011任務(wù)10反射型XSS漏洞與審計任務(wù)10反射型XSS漏洞與審計11能夠進行反射型XSS漏洞的分析與代碼審計了解國內(nèi)漏洞平臺(CNVD/CNNVD)、國外漏洞平臺(OWASP/CVE)中關(guān)于反射型XSS漏洞的新資訊。任務(wù)目標(biāo)一任務(wù)實施二1.Low等級通過分析上述Low等級代碼可以發(fā)現(xiàn),用戶參數(shù)被直接顯示在頁面上,因此存在反射型XSS漏洞。在輸入“<script>alert(1);</script>”后,因為上述Low等級代碼沒有進行任何過濾,所以會直接彈出窗口。任務(wù)實施二通過分析上述Medium等級代碼可以發(fā)現(xiàn),該代碼過濾了<script>標(biāo)簽,將<script>標(biāo)簽置換為空,但是攻擊者可以通過<img>標(biāo)簽或者<ScrIpt>這種以大小寫形式區(qū)分標(biāo)簽的方式來繞過該過濾。使用<img>標(biāo)簽的示例代碼如下:Payload:<imgsrc='1'onerror='alert(1)'/>成功彈出窗口,如圖3-43所示。2.Medium等級任務(wù)10反射型XSS漏洞與審計11任務(wù)實施二通過分析上述High等級代碼可以發(fā)現(xiàn),該代碼通過正則表達式進行了過濾,無論<script>標(biāo)簽中間添加了什么都能被過濾掉。使用<img>標(biāo)簽同樣可以繞過防護,用法為<imgsrc='1'onerror='alert(1)'/>,結(jié)果如圖3-44所示。3.High等級任務(wù)10反射型XSS漏洞與審計11任務(wù)實施二通過分析上述Impossible等級代碼可以發(fā)現(xiàn),該代碼使用htmlspecialchars()函數(shù)將特殊字符轉(zhuǎn)換為實體字符,默認不轉(zhuǎn)義單引號('),只轉(zhuǎn)義雙引號("),如果要轉(zhuǎn)義單引號,則需要使用額外的參數(shù)來指明。4.Impossible等級任務(wù)10反射型XSS漏洞與審計1112任務(wù)11存儲型XSS漏洞與審計任務(wù)11存儲型XSS漏洞與審計12能夠進行存儲型XSS漏洞的分析與代碼審計了解國內(nèi)漏洞平臺(CNVD/CNNVD)、國外漏洞平臺(OWASP/CVE)中關(guān)于存儲型XSS漏洞的新資訊。任務(wù)目標(biāo)一任務(wù)實施二1.Low等級通過分析上述Low等級代碼可以發(fā)現(xiàn),該代碼使用trim()函數(shù)移除字符串兩端的空白字符或其他預(yù)定義字符。但如果將字符串兩端的空白字符或其他預(yù)定義字符移除,之后將其直接放到SQL語句中執(zhí)行,則明顯會有XSS漏洞。<input>標(biāo)簽中有限制字符長度的參數(shù)設(shè)置,直接將maxlength=“10”刪除,之后輸入如下代碼就可以彈出窗口了。Payload:<script>alert(1)</script>

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論