1. 程式人生 > 其它 >20192411 2021-2022-2 《網路與系統攻防技術》實驗八實驗報告

20192411 2021-2022-2 《網路與系統攻防技術》實驗八實驗報告

學號20192411 2021-2022-2 《網路與系統攻防技術》實驗八實驗報告

1.實驗內容

(1)Web前端HTML
能正常安裝、啟停Apache。理解HTML,理解表單,理解GET與POST方法,編寫一個含有表單的HTML。
(2)Web前端javascipt
理解JavaScript的基本功能,理解DOM。
在(1)的基礎上,編寫JavaScript驗證使用者名稱、密碼的規則。在使用者點選登陸按鈕後回顯“歡迎+輸入的使用者名稱”
嘗試注入攻擊:利用回顯使用者名稱注入HTML及JavaScript。
(3)Web後端:MySQL基礎:正常安裝、啟動MySQL,建庫、建立使用者、修改密碼、建表
(4)Web後端:編寫PHP網頁,連線資料庫,進行使用者認證
(5)最簡單的SQL注入,XSS攻擊測試
(6)安裝Webgoat或類似平臺,並完成SQL注入、XSS、CSRF攻擊。

2.實驗過程

2.1 Web前端HTML

  • 首先是安裝apache,因為kali自帶apache,所以只需要直接啟動就可以了。

    /etc/init.d/apache2 start
    
  • 啟動之後,可以用status檢視其狀態。

    /etc/init.d/apache2 status
    

    可以看到此時正在執行。

  • 還可以在瀏覽器輸入本機的IP地址開啟apache的預設網頁,可以看到“It works!”,證明apache服務正在執行。

  • 開啟apache服務後,進入/var/www/html目錄,即apache目錄,建立一個html檔案,命名為form_20192411.html,然後編寫含有表單的HTML程式碼。

  • 接著在瀏覽器開啟剛剛編寫的檔案(地址為檔案路徑,即/var/www/html/form_20192411.html),就可以看到我們編寫出來的效果。

2.2 Web前端javascipt

  • 在2.1的基礎上,編寫JavaScript驗證使用者名稱、密碼的規則,在使用者點選登陸按鈕後回顯“歡迎+輸入的使用者名稱”。

  • 因為路徑沒變,所以只需要重新整理剛剛開啟的網頁,然後輸入使用者名稱和密碼。

  • 然後點登入,就會出現歡迎20192411。

  • 如果使用者名稱或者密碼為空,就會彈出提示。

  • 接著嘗試注入攻擊:

    <script language="javascript">alert("20192411")</script>
    

    發現還是會正常登入,並且執行了我們注入的程式碼彈出了訊息框。

2.3 Web後端:MySQL基礎

  • 首先在kali中啟動mysql服務,命令為:

    service mysql start
    
  • 啟動之後就可以進入mysql了,進入的時候需要輸入密碼,命令為:

    mysql -u root -p
    
  • 進入mysql後可以檢視資料庫的基本資訊。

    show databases;
    

    可以看到有四個資料庫。

  • 接著就是建立使用者,用如下命令建立一個登入使用者。

    create user 'hzr'@'localhost' identified by '20192411';
    

    然後就可以用新建的使用者登入。

  • 然後可以用如下命令修改使用者密碼。

    set password for hzr@'localhost'=password('2411');
    
  • 接著建立一個數據庫,然後再一次檢視可以發現多了一個數據庫。

    create database db_hzr;
    show databases;
    
  • 然後使用剛建的資料庫:use db_hzr

  • 接著就可以進行建表操作。

    create table login(username VARCHAR(20),password VARCHAR(20));
    
  • 再往表中插入一條資料

    insert into login values('20192411hzr','123456');
    
  • 插入後再用查詢語句檢視新建的login表

    select * from login;
    

2.4 Web後端:編寫PHP網頁,連線資料庫,進行使用者認證

  • 利用剛剛編寫好的前端,接著編寫後端的php網頁。依舊在剛剛編寫的html檔案所在目錄下新建一個php檔案,然後編寫程式碼。

    可以看到前面連線了資料庫db_hzr,接著在資料庫中查詢,對使用者進行了認證。

  • 然後在剛才的html檔案中,將form的action屬性改為php的檔名,即login.php。

  • 之後開啟網站127.0.0.1/form_20192411.html,然後輸入使用者名稱和密碼登入。

    如果沒有匹配的資料資訊,則跳轉登入失敗:

    如果匹配則跳轉登入成功:

2.5最簡單的SQL注入,XSS攻擊測試

  • 首先是SQL注入。在剛剛的網站中,使用者名稱欄輸入' or 1=1#,接著隨便輸入密碼,然後登入,就可以成功跳轉到登入成功的頁面。

    可以看到成功跳轉到登入成功的頁面了。

  • 剛剛在使用者名稱中輸入的' or 1=1#和後端程式碼中的查詢語句SELECT * FROM login where username='$uname' and password='$pwd';結合起來就變成了SELECT * FROM login where username='' or 1=1#' and password='$pwd';。可以發現後面密碼的查詢被註釋掉了,而前面的or 1=1就讓這個條件恆成立,所以不管密碼輸入什麼都不會影響,1=1這個條件就能讓頁面跳轉到登入成功的頁面。

  • 之後是XSS攻擊。在使用者名稱欄中輸入如下內容:

    <script>alert('hack')</script>
    

2.6 安裝Webgoat或類似平臺,並完成SQL注入、XSS、CSRF攻擊。

  • 首先在Github上下載webgoat的jar包,我選擇的版本是8.1.0。Releases · WebGoat/WebGoat · GitHub

  • 下載下來後,在jar包所在目錄下開啟cmd安裝並執行webgoat

    java -jar webgoat-server-8.1.0.jar
    
  • 然後用http://localhost:8080/WebGoat開啟webgoat登入介面,然後先註冊一個賬號。

  • 登入進去後,首先是SQL注入部分。選擇Injection中的SQL Injection (intro),然後我選擇的是11頁的題。

  • 這題是通過字元型SQL注入破壞資料機密性的,即檢視非授權資料。利用邏輯OR,Name框填1,TAN框填1' or '1'='1

  • 然後是XSS攻擊。選擇Cross Site Scripting(XSS)。然後我選擇的是第七頁的題。

  • 這題要求用alert()或者console.log()嘗試哪裡有XSS,先按下Purchase,看看哪個輸入是會回顯的。

    可以看到電話框的輸入是會回顯的,然後在這個輸入框中輸入:

    <script>alert('page 7')</script>
    

    接著再Purchase,會發現成功彈出'page7'。

    題目就完成了。

  • 接著是CSRF攻擊,選擇Cross-Site Request Forgeries。

  • 然後選擇第4頁的題,右鍵第一個評論框,點選檢查,然後將該處的HTML程式碼複製出來。

  • 新建一個HTML檔案,貼上剛剛複製的form,並補齊其他標籤:

    <html>
        <body>
    			<form class="attack-form" accept-charset="UNKNOWN" id="csrf-review" method="POST" name="review-form" successcallback="" action="http://localhost:8080/WebGoat/csrf/review">
                <input class="form-control" id="reviewText" name="reviewText" value="20192411" type="text">
                <input class="form-control" id="reviewStars" name="stars" type="text">
                <input type="hidden" name="validateReq" value="2aa14227b9a13d0bede0388a7fba9aa9">
                <input type="submit" name="submit" value="Submit review">
                </form>
    		
    	</body>
    </html>
    
  • 然後開啟新建的HTML檔案,就會看到:

  • 然後點選Submit review,就可以完成了

3.問題及解決方案

  • 問題1:kali安裝webgoat的時候,進入頁面然後登入後總是無法顯示。
  • 問題1解決方案:一開始認為是版本問題,新老版本試了幾次發現都不行,最後改用Windows安裝webgoat進行實驗。

4.學習感悟、思考等

這次實驗是Web安全,即進行了一些跟Web相關的實踐,通過這次實驗我學到了很多關於Web的攻擊方式。包括前端和後端,對之前沒接觸過的XSS和CSRF攻擊也有了新的認識。通過網上查詢資料,最終成功完成了這一次實驗。這次實驗也是這學期網路攻防課最後一次實驗了,感謝王老師一學期的講解與指導,也感謝劉老師和同學們的幫助。

參考資料