HTTP攻擊與防範-PHP客戶端指令碼攻擊
實驗目的
瞭解客戶端指令碼植入攻擊的方式
掌握防範攻擊的方法
實驗原理
瞭解客戶端指令碼植入攻擊的方式
掌握防範攻擊的方法
實驗內容
瞭解客戶端指令碼植入攻擊的方式
掌握防範攻擊的方法
實驗環境描述
1、 學生機與實驗室網路直連;
2、 VPC1與實驗室網路直連;
3、學生機與VPC1物理鏈路連通;
實驗步驟
1.開啟虛擬機器,輸入使用者名稱和密碼,使用者為admin 密碼為 123456
2.學生進入目標主機,(第一次啟動目標主機,還需要開啟xampp,手動開啟Apache與MySQL服務)
3.開啟瀏覽器,輸入localhost:8080/example_code/ 如圖:
4、點選(3)客戶端指令碼攻擊(script Insertion)。如圖:
5、然後點選演示1,如圖:
6、在正常的情況下來訪者在圖3-2的“標題”文字框中輸入留言的標題,在“姓名”文字框中輸入留言者的姓名,在“電子郵件”文字框中輸入留言者的電子郵件信箱,在“問題”文字框中輸入留言者的問題。 假如在“問題”文字框中輸入:
<h1>我來也</h1>
如圖:
7、然後點選提交,如圖:
8、開始攻擊: 點選攻擊1,顯示簡單的對話方塊 假如在ex3-1.php網頁的“問題”文字框中輸入:
<script>alert("嚇一跳!");</script>
如圖
9、單擊【提交】按鈕後,會發生什麼情況?如圖:
之所以會這樣,是因為您在留言板的“問題”文字框中輸入了上述的一串程式碼 ,而瀏覽器遇到script 標籤時,就會執行客戶端的程式程式碼(在這裡JavaScript).所以單擊留言板的【提交】按鈕後,就會顯示一個對話方塊。
10、如果點選【提交】按鈕後想顯示上圖所示的對話方塊,那麼請檢查下列的兩個選項。 (1)檢查Intemet Explorer的活動指令碼功能是否啟動。如果活動指令碼功能沒有開啟,就無法執行網頁中的JavaScript程式碼。 開啟開啟Internet Explorer的活動指令碼功能 在Internet Explorer中選擇【工具】一【Inertnet選項】命令,這時會彈出“Inertnet選項”對話方塊,如圖所示:
11、在“Internet選項”對話方塊中切換到“安全”選項卡,然後單擊下方的【自定義級別】按鈕,如圖
12、“安全設定”對話方塊中,找到“指令碼”項中的“Java小程式指令碼”選項。確認“Java小程式指令碼”的“啟用”專案,這樣Internet Explorer才會執行網頁中的JavaScript程式碼。
13、如果點選【確認】按鈕後想顯示上圖所示的對話方塊,還需要修改另一個引數。
(2)檢查PHP的php.ini檔案中,magic_quotes_gpc的當前值是否是Off.如果magic_quotes_gpc的當前值是On,那麼alert("嚇一跳吧!")中的雙引號“"”就會被改成轉義字元“\"”,而讓這個JavaScript程式碼無法執行。 所以我們需要將magic_qutes_gpc的值改為off 開啟php.ini檔案,這個檔案位置在C:\Windows資料夾內。在php.ini中找到magic_quotes_gpc選項,如圖3-7所示。將magic_quotes_gpc的值設定成Off。如圖:
14、修改php.ini檔案後,要重新啟動Apache伺服器。
點選桌面上的XAMPP Control Panel,然後點選Apache上的stop再start如圖:
15、點選防護一,使用trip_tags函式來進行HTML輸出過濾如圖:
16、點選確認,就不會出現“嚇一跳吧!”的對話方塊了。如圖
17、利用資料庫來來攻擊,前面所講的是咋留言板的“問題”文字框中輸入:
<script>alert("嚇一跳吧!");</script>
,點選確認後就會出現一個對話方塊 但是這只是客戶端的黑客行為,只是在自己的瀏覽器內輸入帶有攻擊效果的JavaScript程式碼,然後顯示在自己的瀏覽器上而已。對網站而言,根本不會發生什麼破壞性的結果。如果說有破壞的話,也只是黑客自己破壞自己的網頁而已。 但是要記住,大部分PHP網站所設計的留言板的內容都會儲存到MySQL資料庫中。也就是說,黑客所錄入的具有攻擊性的JavaScript程式碼會被儲存到網站的MySQL資料庫中。 這樣情況就嚴重了,因為當有許可權瀏覽留言的人打開了具有攻擊性的JavaScript程式碼的留言頁面時,就會立即彈出一個對話方塊。
18、將具有攻擊效果的JavaScript程式碼填入留言板的文字框中。點選攻擊2如圖:
19、單擊表單的【提交】按鈕,Web應用程式將錄入的這段JavaScript程式碼插入資料庫中。立即彈出一個對話方塊,讓瀏覽留言頁的使用者覺得莫名其妙
20、點選檢視2:已經新增了55,則說明實驗成功。如圖:
21、點選防護2,使用trip_tags函式來進行HTML輸出過濾。如圖:
22、單擊確認,就不會出現對話方塊。如圖:
這種攻擊形式只是小小的惡作劇罷了,因為在網頁中彈出一個對話方塊並不會造成什麼破壞。但是試想,如果攻擊性的JavaScript程式碼會破壞網頁,例如莫名其妙地彈出許多新視窗,怎麼關也關不完。那麼這個網站的伺服器也就快宕機了
22、破壞性的攻擊手法:顯示無窮盡的新視窗 單擊演示3,並輸入
<script>while(l) (window.open()); </script>
如圖:
23、單擊確認,如圖:
24、點選攻擊3,如圖:
25、 點選提交後,
while(l) 會讓程式進入無窮迴圈,而: window.open(); 則會開啟一個新的瀏覽器視窗。如圖:
26、 點選防護3,
使用strip_tags函式進行HTML輸出過濾。如圖:
27、引誘性的攻擊手法:跳轉網址
點選演示4,並在“問題”文字框中輸入下列 如圖:
28、單擊確認,如圖:
29、 單擊攻擊4,並輸入如圖程式碼:
30、 點選提交,頁面正在跳轉,如圖;(若跳出如下所示的框,只要點選“新增”即新增該網址為信任網址。新增完成後,點選關閉即可。)
注意:若你本虛擬機器不能上網則顯示如下圖所示的頁面,此頁面也成功跳轉成功。
31、點選檢視新加的資料,已經看見我們剛剛新增的hh002,說明已經新增成功,如圖:
32、點選防護4,使用htmlspecialchars函式進行HTML輸出過濾。如圖:
33、單擊確定,頁面則不會跳轉,說明防護成功。如圖:
34、實驗完畢,關閉虛擬機器和所有視窗。