1. 程式人生 > >20145309李昊《網絡對抗技術》實驗9 web安全基礎實踐

20145309李昊《網絡對抗技術》實驗9 web安全基礎實踐

ons ava transfer mysql 要求 占用 nsf 工具 1.0

本實驗在同學幫助下完成

一、實驗準備

1.0 實驗目標和內容

  1. Web前端HTML。能正常安裝、啟停Apache。理解HTML,理解表單,理解GET與POST方法,編寫一個含有表單的HTML。
  2. Web前端javascipt。理解JavaScript的基本功能,理解DOM。編寫JavaScript驗證用戶名、密碼的規則。
  3. Web後端:MySQL基礎:正常安裝、啟動MySQL,建庫、創建用戶、修改密碼、建表
  4. Web後端:編寫PHP網頁,連接數據庫,進行用戶認證
  5. 最簡單的SQL註入,XSS攻擊測試

2.0 實驗問題的回答

(1)SQL註入攻擊原理,如何防禦

攻擊原理:構造符合填入語句的攻擊代碼,將其輸入錄入框,以達到自己期望的請求,比如跳過驗證,直接登錄。

成因總的來說是代碼編寫不夠嚴密:

  • 數據庫組織類型不夠完善
  • 不當的類型處理
  • 轉義字符的應用漏洞
  • 最重要的是錯誤處理不嚴謹

防禦方法:利用輸入規則限制進行防禦,不允許特殊字符輸入

(2)XSS攻擊的原理,如何防禦

攻擊原理:跨站腳本攻擊,XSS攻擊類似於SQL註入攻擊,將攻擊代碼註入到網頁上或者數據庫存儲裏面,在訪問網頁或者執行網頁上功能是就會觸發,實現攻擊。

防禦方法:

對於用戶輸入的攻擊,只允許輸入合法的值,其它值一概過濾掉。
加強對於
另外:在不需要html輸入的地方對html 標簽及一些特殊字符( ” < > & 等等 )做過濾,將其轉化為不被瀏覽器解釋執行的字符。

(3)CSRF攻擊原理,如何防禦

XSRF(Cross-site request forgery),中文名稱:跨站請求偽造,也被稱為:one click attack/session riding,縮寫為:CSRF/XSRF。

  1. 用戶瀏覽並登錄信任網站A
  2. 驗證通過,在用戶處產生A的Cookie
  3. 用戶在沒有登出A網站的前提下,訪問危險網站B
  4. B要求訪問第三方站點A,發出請求,
  5. 根據B的請求,瀏覽器帶著Cookie訪問A
  6. A不知請求從哪裏發出的,所以A會根據自己權限處理5,這樣B就收到了模擬用戶操作的目的

防禦措施:

通過驗證碼來檢測用戶提交,每次訪問都需要一個新的驗證碼
也可以通過強制使用戶無法同時訪問其他網頁的方式來達到目的(代價有點大,不實際)

二、Injuection Flaw

1、webgoat開啟

輸入:java -jar webgoat-container-7.0.1-war-exec.jar

開啟,直到出現:

技術分享

打開瀏覽器,進入localhost:8080/WebGoat

技術分享

完成開啟

2、SQL字符串註入 String SQL Injection

技術分享

進入訓練區,首先進行SQL字符串註入的練習:

技術分享

查看這個目標,全英文的,讓我們通過構造輸入,達到可以查看所有信用卡號的目的。

註意到,題目讓我們試試smith:

技術分享

史密斯的帳號就出來了,這不是重點,重點是要通過構造輸入來達到越過"where"的效果:

語句為:SELECT * FROM user_data WHERE last_name = ‘Smith‘

參考上一次的實驗,使用永真式,得到:

SELECT * FROM user_data WHERE last_name = ‘‘or 1=‘1

將一條語句改成兩條,所以我們需要填入:‘or 1=‘1

技術分享

3、日誌欺騙 Log Spoofing

日誌欺騙,利用日誌的格式,使用換行等字符,欺騙管理員:

技術分享

題意讓我們用管理員的身份進去:

用CR (%0d) 或者 LF (%0a)的方式使用換行符,達到成功的效果。
技術分享

事實證明,%0d與%0a都可以起到成功換行效果。只不過我後面那個%0a有點多余了,但照樣成功了。

4、數字型SQL註入 Numeric SQL Injection

技術分享

這個表單允許使用者看到天氣數據,利用SQL註入使得可以看見所有數據。

但是難點在於,並沒有輸入,這下怎麽辦呢

burpsuite,首先讀取執行的SQL值,再對屬性值進行修改,達到目的。

技術分享

打開,

進入“Proxy”的“Options”

點擊add,默認是8080端口被占用時需要添加一個新的端口8888

接下來對瀏覽器進行設置,依次進入:

preference-advanced-settings

將設置中,監聽的端口改掉

到這裏,就建立好了捕獲包的工具,所有數據都會通過這裏。

回到webgoat,點擊GO,再返回查看:

技術分享

看到出現了一些數據,將其發送到repeater:

技術分享

根據執行SQL

SELECT * FROM weather_data WHERE station = 101

註入SQL

SELECT * FROM weather_data WHERE station = 101 or 1=1

就修改這個station的位置為 101 or 1=1

技術分享

5、命令註入 Command Injection

同上面一樣,也沒有輸入框,所以還是用找出其命令再註入的辦法,用上次用到的burpsuit:

同剛才一樣抓包:

技術分享

在提交的位置添加&netstat -a命令,第一個引號用來封閉前一個命令,最後一個用來閉合結尾的引號。

點擊 go 之後實驗成功:

技術分享

6、數據後門 Database Backdoors

技術分享

要求實現多條SQL語句註入,對於這樣有輸入框的,破解的方法就比較簡單了

技術分享

7、LAB SQL injection

技術分享

分析:由於輸入項只有一個,也就是密碼,但是密碼應該是密文傳輸,所以我們直接用burpsuit。

抓包,得到:

技術分享

將GUEST該為永真式,點擊GO 實驗成功:

下面的STEP3,也參照數字註入:

另外兩步 step2 和 step4,由於平臺不同做不了。

所以到目前為止,註入部分就全部完成了:

技術分享

三、XSS練習

1、跨站腳本釣魚攻擊(Phishing with XSS)

主旨是要我們編寫一個釣魚網站的頁面。
技術分享

攻擊,將傳來的username和password寫入log文件:

登陸界面,輸入用戶名和密碼:

然後保存至/var/www/html中的lyd.log文件中

2、儲存型XSS(Stored XSS Attakcs)

技術分享

這是一個擦除輸入的練習。

思路是 發送一個信息,當用戶收到這個信息時,就會觸發在其中的惡意代碼(用腳本語言寫的),從而達到清除cookie的效果。

構造語句<script>alert(document.cookie);</script>

輸入後點擊20145309

彈窗說明可清除cookies

技術分享

完成該攻擊

四、XSCF練習

1、Cross Site Request Forgery (CSRF)

你的目標是發一個email給newsgroup,內容包括一個有惡意URL請求的圖片。URL要指向“attack”(包含參數“Screen”和“Menu”,還有一個額外參數“transferFunds”)。當收到含有CSRF頁面的郵件時,就會執行transferFunds

2、CSRF Prompt By-pass

網頁上的手動發起請求的操作,是通過HTML+JavaScript向服務器請求,在這道題目中,我們需要在文本框中添加兩個語句,一個用於請求用戶轉賬,另一個用於觸發確認界面。

這個實驗的實現跟上個很類似,所以直接這樣完成就行了:

haha
<img src=‘attack?Screen=465&menu=900&transferFunds=5314‘5314 width=‘1‘ height=‘1‘>

<img src=‘attack?Screen=465&menu=900&transferFunds=CONFIRM‘ width=‘1‘ height=‘1‘>

完成:

技術分享

最後,這一部分的完成情況為:

技術分享

技術分享技術分享

實驗感想

這次實驗內容包括很多,由於我學藝不精,自己不是很好的獨立完成,在這裏感謝茹翔組長的幫助,幾乎是手把手教了我。

20145309李昊《網絡對抗技術》實驗9 web安全基礎實踐