1. 程式人生 > >Exp9 Web安全基礎

Exp9 Web安全基礎

泄露 界面 xss攻擊 s函數 靠譜 pro 網絡 固定 綁定

Exp9 Web安全基礎

20154305 齊帥

一、實驗要求

本實踐的目標理解常用網絡攻擊技術的基本原理。

Webgoat實踐下相關實驗:

  • FQ

  • WebGot

  • BurpSuite

  • Injection Flaws

  • Cross-Site Scripting

二、實踐過程

1.安裝WebGoat

WebGoat是由著名的OWASP負責維護的一個漏洞百出的J2EE Web應用程序,這些漏洞並非程序中的bug,而是故意設計用來講授Web應用程序安全課程的。這個應用程序提供了一個逼真的教學環境,為用戶完成課程提供了有關的線索。
因為WebGoat是基於java開發的軟件,所以需要JDK環境,還需要下載一個WebGoat.jar包.

至於下載這個WebGoat.jar包真的費了好久時間,因為網上找到的下載鏈接都被墻了,這個鏈接你可以試一下,最後費了九牛二虎之力翻了一下墻,下載好的jar包和JDK我放在了百度雲。

技術分享圖片

看一眼哈,我真的FQ了,現在可是嚴打的情況,我免費FQ也不容易啊~

FQ軟件叫藍燈,還挺靠譜的,哈哈哈~

技術分享圖片

jar包下載好了以後放到kali裏面,鍵入java -jar *.jar 等著就可啦,*為文件名。

技術分享圖片

打開火狐,鍵入127.0.0.1:8080/WebGoat (註意大小寫),註冊一個用戶就可以啦~

技術分享圖片

sad,是全英文的,我真的頭大了~還需要依靠翻譯軟件理解不是人話的東西。。。

2.Injection Flaws

技術分享圖片

這個題就是你輸入姓名會得到相關信息

技術分享圖片

如上,用萬能公式弄一下就得到了所有人的信息啦~註意這個是字符串註入。

下一題是輸入用戶ID得到信息,同樣輸入一個永真式,數字註入,得到所有人的信息。

技術分享圖片

SQL註入進階:

技術分享圖片

本題要求通過Smith的信息聯合得到Dave的密碼,根據提示信息可以得到存儲用戶密碼的表名為 user_system_data,列為password。

先鍵入Smith‘ order by 7--,如下,可以得到正確的反饋信息

技術分享圖片

鍵入Smith‘ order by 8--,得到錯誤反饋,說明列數為7。

技術分享圖片

根據以上信息,鍵入Smith‘ union select null,null,null,null,null,null,null from user_system_data --
聯合查詢判斷數據回顯位置。

技術分享圖片

鍵入Smith‘ union select null,user_name,password,null,null,null,null from user_system_data -- 獲取Dave的密碼。

技術分享圖片

輸入Dave的密碼,正確~

技術分享圖片

3.BurpSuite

BurpSuite是用於攻擊web應用程序的集成平臺。它包含了許多工具,並為這些工具設計了許多接口,以促進加快攻擊應用程序的過程。所有的工具都共享一個能處理並顯示HTTP消息,持久性,認證,代理,日誌,警報的一個強大的可擴展的框架。
通過代理服務器可以截獲http報文進行修改。

kali自己帶這個東西,程序裏面搜索一下就行了,開啟。

技術分享圖片

配置本機BurpSuite,在Proxy->Option中選擇add添加項:

技術分享圖片

設置瀏覽器,進行代理:

技術分享圖片

技術分享圖片

4.Cross-Site Scripting

這個題就是要你打開兩個相同的網頁,然後插入一段JS代碼,顯示cookie,比較兩個值是否相同:

技術分享圖片

經過比較,兩個值是相同的,所以輸入yes,通過~!

技術分享圖片

此題第一步是要求你在一個購物車支付界面面找到優惠券的代碼,給你自己打折

技術分享圖片

如上,我們查看網頁源代碼,找到判斷優惠券的函數。

找到優惠券具體函數:

技術分享圖片

查看優惠券的值:PLATINUM

技術分享圖片

在支付界面輸入優惠券代碼,完成第一步:

技術分享圖片

第二步,要求全單免費,直接把值改成0呀,哈哈哈。

技術分享圖片

可以看到真的不要錢了,完成。很神奇~

技術分享圖片

三、漏洞原理及預防

1.SQL註入

- 原理

就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。
具體來說,它是利用現有應用程序,將(惡意)的SQL命令註入到後臺數據庫引擎執行的能力,它可以通過在Web表單中輸入(惡意)SQL語句得到一個存在安全漏洞的網站上的數據庫,而不是按照設計者意圖去執行SQL語句。

- 防禦

(1)檢查變量數據類型和格式

如果你的SQL語句是類似where id={$id}這種形式,數據庫裏所有的id都是數字,那麽就應該在SQL被執行前,檢查確保變量id是int類型;如果是接受郵箱,那就應該檢查並嚴格確保變量一定是郵箱的格式,其他的類型比如日期、時間等也是一個道理。總結起來:只要是有固定格式的變量,在SQL語句執行前,應該嚴格按照固定格式去檢查,確保變量是我們預想的格式,這樣很大程度上可以避免SQL註入攻擊。

(2)過濾特殊符號

對於無法確定固定格式的變量,一定要進行特殊符號過濾或轉義處理。以PHP為例,通常是采用addslashes函數,它會在指定的預定義字符前添加反斜杠轉義,這些預定義的字符是:單引號 (‘) 雙引號 (") 反斜杠 () NULL。

(3)綁定變量,使用預編譯語句

MySQL的mysqli驅動提供了預編譯語句的支持,不同的程序語言,都分別有使用預編譯語句的方法。這樣做的好處就是,如果我輸入密碼:‘or 1=‘1,那他也只會被當作密碼來處理,不會和sql語句其他結構關聯

2.XSS攻擊

- 原理

惡意攻擊者往Web頁面裏插入惡意腳本代碼,而程序對於用戶輸入內容未過濾,當用戶瀏覽該頁之時,嵌入其中Web裏面的腳本代碼會被執行,從而達到惡意攻擊用戶的特殊目的。

- 防禦

一種方法是在表單提交或者url參數傳遞前,對需要的參數進行過濾
在輸入方面對所有用戶提交內容進行可靠的輸入驗證,提交內容包括URL、查詢關鍵字、http頭、post數據等
在輸出方面,在用戶輸內容中使用 <XMP> 標簽,標簽內的內容不會解釋,直接顯示。
嚴格執行字符輸入字數控制,因為XSS代碼往往很多,所以要對字符數進行控制

3.CSRF

- 原理

跨站請求偽造,攻擊者盜用了你的身份,以你的名義發送惡意請求。
CSRF能夠做的事情包括:以你名義發送郵件,發消息,盜取你的賬號,甚至於購買商品,虛擬貨幣轉賬
造成的問題包括:個人隱私泄露以及財產安全。

- 防禦

(1)驗證碼
可以在某些敏感操作過程中,加入驗證碼,以確認用戶身份
(2)Token
CSRF能攻擊成功,根本原因是:操作所帶的參數均被攻擊者猜測到。既然知道根本原因,我們就對癥下藥,利用Token。當向服務器傳參數時,帶上Token。這個Token是一個隨機值,並且由服務器和用戶同時持有。當用戶提交表單時帶上Token值,服務器就能驗證表單和session中的Token是否一致。

四、實驗總結與感想

WebGoat鏈接,JDK鏈接,藍燈FQ鏈接。

本次實驗也是最後一個實驗,我覺得是這些實驗裏面最難的最難的最難的,首先因為頁(我)面(的)是(英)英(語)文(太)的(爛),增加了實驗的難度,完全靠翻譯軟件在生活,其次我的這個WebGoat版本比較新,和學長學姐的不一樣,沒有了參考系,只能自己在那裏刻苦鉆研,最後那個CSRF真的整不出來了。不過我覺得我成功的FQ下載了jar包還是能加個分吧,我交這麽早就是為了給後面的同學提供方便的實驗環境~~能力有限請見諒。

做了這麽多的網絡攻防實驗,真的收獲很多,都是能看到實際效果的危險、漏洞、後門、病毒,網絡安全真的需要我們重視起來,同時也增強了我的安全防範意識,自從做了那個後門的實驗以後我就把我電腦攝像頭粘起來了,同時這門課也激發了我對網絡安全這方面的興趣,日後的學習工作生活中也會更加關註這方面的信息和事件。這門課的老師也與眾不同呀,比較人性化,哈哈哈,emmm......還很有趣~~~

生命不息,奮鬥不止。

Exp9 Web安全基礎