Exp9 Web安全基礎
阿新 • • 發佈:2018-05-15
泄露 界面 xss攻擊 s函數 靠譜 pro 網絡 固定 綁定 jar包下載好了以後放到kali裏面,鍵入
打開火狐,鍵入
先鍵入
鍵入
根據以上信息,鍵入
鍵入
輸入
在輸出方面,在用戶輸內容中使用
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安全基礎