DVWA靶場通關筆記-弱會話IDs(Weak Session IDs Medium級別)

目錄

一、Session ID

二、代碼審計(Medium級別)

1、配置security為Medium級別

2、源碼分析

(1)index.php

(2)Medium.php

(3)對比分析

(4)滲透思路

三、滲透實戰

1、點擊生成會話ID

2、bp抓包分析

3、預測后續會話 ID


DVWA(Damn Vulnerable Web Application)中的 弱會話Weak Session IDs關卡是用于練習和演示弱會話ID的不同場景,不同安全等級存在不同的脆弱點和繞過方法,本小節對中等級別的關卡進行滲透實戰。

一、Session ID

Session ID(會話 ID)是 Web 應用程序中用于標識用戶會話的唯一標識符,是用戶訪問網站時的 “電子身份證”。會話id的核心作用和身份證類似,id用于區分不同的用戶,核心作用如下所示。

  1. 區分用戶會話:當用戶訪問網站時,服務器會為其創建一個會話(Session),并生成唯一的 Session ID,通過 Cookie 存儲在用戶瀏覽器或 URL 中。后續請求攜帶該 ID,服務器即可識別用戶身份,保持會話狀態(如登錄狀態、購物車數據等)。
  2. 跨請求狀態保持:由于默認情況下HTTP應用層協議是無狀態的,Session ID 讓服務器能 “記住” 用戶的操作,例如用戶登錄后,服務器通過 Session ID 關聯其權限和數據。

Session ID(會話 ID)通常使用Cookie 存儲:默認通過名為PHPSESSID(PHP)等的 Cookie 傳輸,瀏覽器自動攜帶。以DVWA的盲注關卡Impossible級別為例,使用bp抓包,如下報文的sesssion id使用PHPSESSID存儲,值為tssqfshe2838kcg5nbkf4464u3,具體如下所示。

二、代碼審計(Medium級別)

1、配置security為Medium級別

進入到弱會話id關卡,完整URL地址具體如下所示。

http://192.168.59.1/dvwa/vulnerabilities/weak_id/

2、源碼分析

(1)index.php

進入DVWA靶場源目錄,找到index.php源碼。

這段 PHP 代碼是 Damn Vulnerable Web Application (DVWA) “弱會話 ID 演示頁面的核心邏輯,通過對比不同安全級別的實現方式,幫助開發者理解弱會話 ID 的風險和安全的會話管理實踐。主要功能如下所示。

  • 安全級別控制:根據用戶 Cookie 中存儲的安全級別(低、中、高、安全),動態加載不同的會話 ID 生成算法實現文件,展示不同防護級別的會話管理場景。
  • 用戶交互界面
    • 提供一個 “Generate” 按鈕,每次點擊時會觸發會話 ID 的生成。
    • 頁面說明文字提示用戶每次點擊按鈕會設置一個名為 dvwaSession 的新 Cookie。
  • 會話 ID 生成演示:根據低、中、高、安全共4個級別演示會話id的生成。
  • 輔助功能
    • 提供幫助文檔和源代碼查看功能。
    • 根據不同安全級別顯示相應的會話 ID 生成結果

經過注釋后的詳細代碼如下所示。

<?php
// 定義網站根目錄路徑常量,用于后續文件引用
define( 'DVWA_WEB_PAGE_TO_ROOT', '../../' );
// 引入DVWA頁面基礎功能庫
require_once DVWA_WEB_PAGE_TO_ROOT . 'dvwa/includes/dvwaPage.inc.php';// 啟動頁面,驗證用戶是否已認證并初始化PHPIDS(入侵檢測系統)
dvwaPageStartup( array( 'authenticated', 'phpids' ) );// 創建新頁面實例
$page = dvwaPageNewGrab();
// 設置頁面標題
$page[ 'title' ]   = 'Vulnerability: Weak Session IDs' . $page[ 'title_separator' ].$page[ 'title' ];
// 設置頁面ID,用于導航和標識
$page[ 'page_id' ] = 'weak_id';
// 添加幫助按鈕和源代碼按鈕
$page[ 'help_button' ]   = 'weak_id';
$page[ 'source_button' ] = 'weak_id';// 連接數據庫
dvwaDatabaseConnect();// 設置HTTP請求方法(默認為GET)
$method            = 'GET';
// 初始化不同安全級別對應的源文件
$vulnerabilityFile = '';// 根據安全級別Cookie值選擇不同的實現文件
switch( $_COOKIE[ 'security' ] ) {case 'low':// 低安全級別:使用易預測的會話ID生成算法$vulnerabilityFile = 'low.php';break;case 'medium':// 中安全級別:部分增強的會話ID生成算法$vulnerabilityFile = 'medium.php';break;case 'high':// 高安全級別:進一步增強的會話ID生成算法$vulnerabilityFile = 'high.php';break;default:// 安全模式:使用安全的會話ID生成算法$vulnerabilityFile = 'impossible.php';$method = 'POST';break;
}// 引入選定的實現文件
require_once DVWA_WEB_PAGE_TO_ROOT . "vulnerabilities/weak_id/source/{$vulnerabilityFile}";// 構建頁面主體內容,包含說明文字和生成會話ID的按鈕
$page[ 'body' ] .= <<<EOF
<div class="body_padded"><h1>Vulnerability: Weak Session IDs</h1><p>This page will set a new cookie called dvwaSession each time the button is clicked.<br /></p><form method="post"><input type="submit" value="Generate" /></form>
$htmlEOF;/*
Maybe display this, don't think it is needed though
if (isset ($cookie_value)) {$page[ 'body' ] .= <<<EOFThe new cookie value is $cookie_value
EOF;
}
*/// 輸出最終HTML頁面
dvwaHtmlEcho( $page );?>

(2)Medium.php

進入DVWA靶場源目錄,找到Medium.php源碼。

打開源碼medium.php,分析可知這段代碼實現了一個簡單的會話 ID 生成機制功能,如下所示。

代碼的功能如下所示。

  • 當用戶通過 POST 請求訪問頁面時。
  • 生成一個基于當前時間戳的會話 ID
  • 將該 ID 存儲在名為dvwaSession Cookie 中。
  • 未設置 Cookie 的安全屬性(如SecureHttpOnly

詳細注釋后的代碼如下所示。

<?php
// 初始化HTML輸出變量(用于存儲頁面內容)
$html = "";// 檢查當前請求是否為POST方法(例如用戶點擊表單提交按鈕)
if ($_SERVER['REQUEST_METHOD'] == "POST") {// 將會話ID設置為當前時間戳(以秒為單位)$cookie_value = time();// 設置名為"dvwaSession"的Cookie,值為當前時間戳// 默認有效期:瀏覽器關閉時失效// 默認路徑:當前頁面所在路徑// 未設置Secure屬性(允許HTTP傳輸)// 未設置HttpOnly屬性(允許JavaScript訪問)setcookie("dvwaSession", $cookie_value);
}
?>

(3)對比分析

low級別和Medium級別的區別如下所示。

對比項

Low級別

Medium級別

會話 ID 生成方式

基于會話計數器遞增(初始值 0,每次請求 + 1

基于當前時間戳time()函數返回秒級時間戳

可預測性

高(攻擊者可通過猜測遞增規律預測會話 ID

中(短時間內可能重復,如同一秒內的請求)

唯一性

低(會話重置或服務器重啟可能導致 ID 重復)

中(同一秒內的請求會生成相同 ID

安全性

低(會話固定攻擊風險高,且 ID 易被枚舉)

中(時間戳雖動態但粒度粗,仍有被預測風險)

(4)滲透思路

核心問題:具有弱會話 ID(Predictable Session ID)攻擊可能性。

  • 會話 ID 可預測

    • 時間戳以秒為單位遞增,攻擊者可輕松計算未來 / 過去的會話 ID。
    • 示例:若當前時間戳為1630482000,攻擊者可猜測下一個可能是1630482001。
  • 時間精度不足

    • 同一秒內的所有請求會生成相同的會話 ID,導致沖突。
    • 攻擊者可通過并發請求碰撞有效會話。
  • 缺乏隨機性

    • 完全依賴確定性的系統時間,無隨機因子。
    • 攻擊者無需破解,直接推算即可。
  • Cookie 安全缺失

    • 未設置Secure屬性,Cookie 可通過 HTTP 明文傳輸。
    • 未設置HttpOnly屬性,易受 XSS 攻擊竊取。
    • 未設置有效期(默認會話 Cookie),用戶關閉瀏覽器后需重新認證。

影響:攻擊者可通過時間戳或枚舉會話 ID 值,偽造合法用戶會話,獲取未授權訪問權限。

三、滲透實戰

1、點擊生成會話ID

bp開啟攔截功能,進入靶場的脆弱的session id關卡,點擊生成會話id三次,如下所示。

2、bp抓包分析

第1個報文的session id為dvwaSession=1747368161,如下圖所示。

1747368161 對應的 UTC 時間是?2024 12 16 13:22:41,可以通過如下函數進行轉換,說明這個為時間戳轉換,具體code如下所示。

from datetime import datetime
print(datetime.utcfromtimestamp(1747368161).strftime('%Y-%m-%d %H:%M:%S'))
# 輸出:2024-12-16 13:22:41

2個報文的session iddvwaSession=17473683801747368380 對應的 UTC 時間是?2024 12 16 13:26:20),如下圖所示。?

3、預測后續會話 ID

由于會話 ID 是簡單通過時間戳轉換,攻擊者可通過如下方式進行預測。

  • 記錄受害者登錄時的時間戳(如1747368380
  • 預測后續會話 ID 范圍(如17473683011747368360
  • 逐個嘗試這些值,直到獲取訪問權限

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/88291.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/88291.shtml
英文地址,請注明出處:http://en.pswp.cn/web/88291.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

編輯器Vim的快速入門

如大家所了解的&#xff0c;Vim是一個很古老的編輯器&#xff0c;但是并沒有隨著時間的流逝消失在編輯器/IDE 的競爭中&#xff0c;Vim 獨創的模式機制和 hjkl 移動光標方式使得使用者在編輯文件時可以雙手不離開鍵盤&#xff0c;極大地提升了工作效率。由于 Vim 學習曲線極為陡…

深度學習核心:從基礎到前沿的全面解析

&#x1f9e0; 深度學習核心&#xff1a;從基礎到前沿的全面解析 &#x1f680; 探索深度學習的核心技術棧&#xff0c;從神經網絡基礎到最新的Transformer架構 &#x1f4cb; 目錄 &#x1f52c; 神經網絡基礎&#xff1a;從感知機到多層網絡&#x1f5bc;? 卷積神經網絡&am…

MySQL索引:數據庫的超級目錄

MySQL索引&#xff1a;數據庫的「超級目錄」 想象你有一本1000頁的百科全書&#xff0c;要快速找到某個知識點&#xff08;如“光合作用”&#xff09;&#xff1a; ? 無索引&#xff1a;逐頁翻找 → 全表掃描&#xff08;慢&#xff01;&#xff09;? 有索引&#xff1a;直接…

景觀橋 涵洞 城門等遮擋物對汽車安全性的影響數學建模和計算方法,需要收集那些數據

對高速公路景觀橋影響行車視距的安全問題進行數學建模&#xff0c;需要將物理幾何、動力學、概率統計和交通流理論結合起來。以下是分步驟的建模思路和關鍵模型&#xff1a;一、 核心建模目標 量化視距&#xff08;Sight Distance, SD&#xff09;&#xff1a;計算實際可用視距…

Git 用戶名和郵箱配置指南:全局與項目級設置

查看全局配置 git config --global user.name # 查看全局name配置 git config --global user.email # 查看全局email配置 git config --global --list # 查看所有全局配置查看當前項目配置 git config user.name # 查看當前項目name配置 git config user.email # 查看當前項目…

視頻序列和射頻信號多模態融合算法Fusion-Vital解讀

視頻序列和射頻信號多模態融合算法Fusion-Vital解讀概述模型整體流程視頻幀時間差分歸一化TSM模塊視頻序列特征融合模塊跨模態特征融合模塊概述 最近看了Fusion-Vital的視頻-射頻&#xff08;RGB-RF&#xff09;融合Transformer模型。記錄一下&#xff0c;對于實際項目中的多模…

frp內網穿透下創建FTP(解決FTP“服務器回應不可路由的地址。使用服務器地址替代”錯誤)

使用寶塔面板&#xff0c;點擊FTP&#xff0c;下載Pure-FTPd插件 點擊Pure-FTPd插件&#xff0c;修改配置文件&#xff0c;找到PassivePortRange, 修改ftp被動端口范圍為39000 39003&#xff0c;我們只需要4個被動端口即可&#xff0c;多了不好在內網穿透frp的配置文件中增加…

STM32控制四自由度機械臂(SG90舵機)(硬件篇)(簡單易復刻)

1.前期硬件準備 2s鋰電池一個&#xff08;用于供電&#xff09;&#xff0c;stm32f103c8t6最小系統板一個&#xff08;主控板&#xff09;&#xff0c;兩個搖桿&#xff08;用于搖桿模式&#xff09;&#xff0c;四個電位器&#xff08;用于示教器模式&#xff09;&#xff0c…

華為OD機試_2025 B卷_最差產品獎(Python,100分)(附詳細解題思路)

題目描述 A公司準備對他下面的N個產品評選最差獎&#xff0c; 評選的方式是首先對每個產品進行評分&#xff0c;然后根據評分區間計算相鄰幾個產品中最差的產品。 評選的標準是依次找到從當前產品開始前M個產品中最差的產品&#xff0c;請給出最差產品的評分序列。 輸入描述 第…

飛算JavaAI:重塑Java開發效率的智能引擎

飛算JavaAI:重塑Java開發效率的智能引擎 一、飛算JavaAI核心價值 飛算JavaAI是全球首款專注Java語言的智能開發助手,由飛算數智科技(深圳)有限公司研發。它通過AI大模型技術實現: 全流程自動化:從需求分析→軟件設計→代碼生成一氣呵成工程級代碼輸出:生成包含配置類、…

Java和Go各方面對比:現代編程語言的深度分析

Java和Go各方面對比&#xff1a;現代編程語言的深度分析 引言 在當今的軟件開發領域&#xff0c;選擇合適的編程語言對項目的成功至關重要。Java作為一門成熟的面向對象語言&#xff0c;已經在企業級開發中占據主導地位超過25年。而Go&#xff08;Golang&#xff09;作為Google…

CloudCanal:一款企業級實時數據同步、遷移工具

CloudCanal 是一款可視化的數據同步、遷移工具&#xff0c;可以幫助企業構建高質量數據管道&#xff0c;具備實時高效、精確互聯、穩定可拓展、一站式、混合部署、復雜數據轉換等優點。 應用場景 CloudCanal 可以幫助企業實現以下數據應用場景&#xff1a; 數據同步&#xff…

如何發現 Redis 中的 BigKey?

如何發現 Redis 中的 BigKey&#xff1f; Redis 因其出色的性能&#xff0c;常被用作緩存、消息隊列和會話存儲。然而&#xff0c;在 Redis 的使用過程中&#xff0c;BigKey 是一個不容忽視的問題。BigKey 指的是存儲了大量數據或包含大量成員的鍵。它們不僅會占用大量內存&…

Golang讀取ZIP壓縮包并顯示Gin靜態html網站

Golang讀取ZIP壓縮包并顯示Gin靜態html網站Golang讀取ZIP壓縮包并顯示Gin靜態html網站1. 讀取ZIP壓縮包2. 解壓并保存靜態文件3. 設置Gin靜態文件服務基本靜態文件服務使用StaticFS更精細控制單個靜態文件服務4. 完整實現示例5. 高級優化內存映射優化使用Gin-Static中間件6. 部…

參數列表分類法:基本參數與擴展參數的設計模式

摘要 本文提出了我設計的一種新的函數參數設計范式——參數列表分類法&#xff0c;將傳統的"單一參數列表"擴展為"多參數列表協同"模式。通過引入"基本參數列表"和"擴展參數列表"的概念&#xff0c;為復雜對象構建提供了更靈活、更具表…

Ajax之核心語法詳解

Ajax之核心語法詳解一、Ajax的核心原理與優勢1.1 什么是Ajax&#xff1f;1.2 Ajax的優勢二、XMLHttpRequest&#xff1a;Ajax的核心對象2.1 XHR的基本使用流程2.2 核心屬性與事件解析2.2.1 readyState&#xff1a;請求狀態2.2.2 status&#xff1a;HTTP狀態碼2.2.3 響應數據屬性…

ArcGIS 打開 nc 降雨量文件

1. 打開ArcToolbox&#xff0c;依次打開 多維工具 → 創建 NetCDF 柵格圖層&#xff0c;將 nc 文件拖入 輸入 NetCDF 文件輸入框&#xff0c;確認 X維度&#xff08;經度&#xff09;、Y維度&#xff08;經度&#xff09; 的變量名是否正確&#xff0c;點擊 確定。圖 1 加載nc文…

01-elasticsearch-搭個簡單的window服務-ik分詞器-簡單使用

1、elasticsearch下載地址 如果是其他版本可以嘗試修改鏈接中的版本信息下載 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-windows-x86_64.zip 2、ik分詞器下載地址 ik分詞器下載的所有版本地址&#xff1a;Index of: analysis-ik/stable/…

[數據結構與算法] 優先隊列 | 最小堆 C++

下面是關于 C 中 std::priority_queue 的詳細說明&#xff0c;包括初始化、用法和常見的應用場景。什么是 priority_queue&#xff1f; priority_queue&#xff08;優先隊列&#xff09;是 C 標準庫中的一個容器適配器。它和普通隊列&#xff08;queue&#xff09;最大的不同在…

零基礎入門物聯網-遠程門禁開關:硬件介紹

一、成品展示 遠程門禁最終效果 二、項目介紹 整個項目主要是實際使用案例為主&#xff0c;根據自己日常生活中用到物聯網作品為原型&#xff0c;通過項目實例快速理解。項目分為兩部分&#xff1a;制作體驗和深入學習。 制作體驗部分 會提供所有項目資料及制作說明文檔&a…