web滲透PHP反序列化漏洞

?

?

?

?

?

?

?web滲透PHP反序列化漏洞

1)PHP反序列化漏洞

反序列我們可以控制對象中的值進行攻擊

O:1:"C":1:{s:3:"cmd";s:8:"ipconfig";}

http://127.0.0.1/1.php?x=O:1:%22C%22:1:{s:3:%22cmd%22;s:3:%22ver%22;}

?

常見的反序列化

魔術方法:PHP 中特殊方法(如__construct、__destruct、__wakeup等)在對象生命周期自動調用,若方法中存在危險操作(如命令執行),可被反序列化觸發。

漏洞繞過:如 CVE-2016-7124(PHP 5.6.25 前的__wakeup方法繞過,通過修改對象屬性數量使__wakeup失效)。

原生類:利用 PHP 內置類(如DirectoryIterator、SimpleXMLElement)實現文件遍歷、XXE 等攻擊。

Phar 文件:Phar 文件包含序列化元數據,即使無unserialize函數,通過文件操作函數(如file_exists)也可觸發反序列化。

字符串逃逸:當程序對序列化字符串進行過濾 / 替換時,可通過構造特殊字符串改變序列化結構,實現屬性注入。

?

黑盒查看漏洞:

功能關聯:觀察功能是否涉及對象存儲 / 傳輸(如用戶配置、會話管理、數據備份),此類功能可能使用序列化。

參數測試:對疑似傳入序列化數據的參數(如data、payload、user)傳入畸形序列化字符串,觀察是否返回 PHP 錯誤(如unserialize()錯誤)。

?

白盒代碼審計:

關鍵詞搜索:查找unserialize()函數,確認其參數是否可控(如來自用戶輸入的$_GET、$_POST、$_COOKIE)。

跟蹤變量:確認可控變量是否直接傳入unserialize(),且未經過嚴格過濾。

分析類結構:檢查反序列化涉及的類是否包含危險魔術方法或函數調用(如system()、exec())。

?

?

?

2)反序列檢查方法

黑盒測試:

參數探測:收集所有用戶可控參數(GET/POST/COOKIE/ 請求體),嘗試傳入基礎序列化字符串(如O:0:{}),觀察響應差異。

畸形測試:傳入不完整 / 錯誤的序列化數據(如O:1:"A":),若返回unserialize()相關錯誤(如Error at offset),說明存在反序列化操作。

功能觸發:結合業務功能(如提交配置、恢復數據),在關鍵步驟傳入惡意序列化字符串,觀察是否執行預期操作(如文件生成、命令輸出)。

?

白盒測試:

函數定位:全局搜索unserialize(),標記所有調用位置。

數據流分析:確認unserialize()的參數是否來自用戶輸入,是否經過過濾(如preg_replace、htmlspecialchars等),過濾規則是否可繞過。

類與方法審計:分析反序列化涉及的類及其魔術方法,判斷是否存在可利用的危險操作(如調用eval()、文件寫入等)。

?

?

?

3)反序列工具

PHPGGC:PHP 反序列化漏洞利用工具,包含多種框架(如 Laravel、ThinkPHP、Yii)的 Gadget 鏈,可直接生成惡意序列化字符串。

Burp Suite 插件:如Deserialization Scanner,可自動檢測請求中可能存在的反序列化參數并嘗試注入測試 payload。

手動構造工具:Python 腳本(如通過pickle模塊輔助生成符合格式的序列化字符串)、在線 PHP 序列化 / 反序列化工具(用于驗證 payload 格式)。

漏洞掃描器:Nessus、AWVS 等包含反序列化漏洞檢測模塊,可批量掃描目標是否存在相關漏洞。

?

?

?

4)靶場

DVWA(Damn Vulnerable Web Application):包含反序列化漏洞模塊,適合入門學習基礎利用。

CTF 平臺:CTFtime、XCTF 等平臺的 Web 題目中常見反序列化考點(如 “安恒杯”“西湖論劍” 相關題目)。

VulnHub 靶機:如Mutillidae II(包含反序列化漏洞場景)、Metasploitable 3(集成多種 Web 漏洞)。

框架漏洞環境:通過Vulhub搭建特定框架漏洞環境(如 ThinkPHP 5.x 反序列化漏洞、Laravel deserialization RCE)。

自定義環境:手動編寫含漏洞的 PHP 代碼(如調用unserialize($_GET['x'])且類中包含__destruct方法執行system()),本地測試驗證。

?

?

<?php

// 一個簡單的文件操作類

class FileHandler {

? ? private $filename;

? ? private $content;

?

? ? public function __construct($filename = '') {

? ? ? ? $this->filename = $filename;

? ? }

?

? ? // 魔術方法:當對象被反序列化時調用

? ? public function __wakeup() {

? ? ? ? // 危險操作:直接使用成員變量作為命令執行

? ? ? ? if (!empty($this->filename)) {

? ? ? ? ? ? // 這里存在命令注入漏洞

? ? ? ? ? ? exec("type " . $this->filename, $output);

? ? ? ? ? ? $this->content = implode("\n", $output);

? ? ? ? }

? ? }

?

? ? public function getContent() {

? ? ? ? return $this->content;

? ? }

}

?

// 接收用戶輸入的序列化數據

if (isset($_GET['data'])) {

? ? $data = $_GET['data'];

? ? // 反序列化操作,存在安全風險

? ? $fileHandler = unserialize($data);

? ??

? ? if ($fileHandler instanceof FileHandler) {

? ? ? ? echo "<pre>文件內容:\n" . $fileHandler->getContent() . "</pre>";

? ? } else {

? ? ? ? echo "無效的數據格式";

? ? }

} else {

? ? echo "請通過data參數提交數據";

}

?>

?

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

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

相關文章

FPGA學習筆記——SPI讀寫FLASH

目錄 一、任務 二、需求分析 三、Visio圖 四、具體分析 五、IP核配置 六、代碼 七、實驗現象 一、任務 實驗任務&#xff1a; 1.按下按鍵key1&#xff0c;開啟讀ID操作&#xff0c;將讀出來的ID&#xff0c;通過串口發送至PC端顯示&#xff0c;顯示格式為“讀ID:XX-XX-XX…

一句話PHP木馬——Web滲透測試中的隱形殺手

文章目錄前言什么是"一句話木馬"&#xff1f;常見變種與隱藏技巧1. 函數變種2. 加密混淆3. 變量拆分4. 特殊字符編碼上傳技巧與繞過防御常見上傳繞過技巧檢測與防御措施1. 服務器配置2. 上傳驗證3. 代碼審計4. Web應用防火墻(WAF)實戰案例分析深度思考&#xff1a;安…

房屋租賃系統|基于SpringBoot和Vue的房屋租賃系統(源碼+數據庫+文檔)

項目介紹 : SpringbootMavenMybatis PlusVue Element UIMysql 開發的前后端分離的房屋租賃系統&#xff0c;項目分為管理端和用戶端以及房主端 項目演示: 基于SpringBoot和Vue的房屋租賃系統 運行環境: 最好是java jdk 1.8&#xff0c;我們在這個平臺上運行的。其他版本理論上…

C++動態規劃——經典題目(下)

上一篇文章沒有寫全&#xff0c;這篇再補兩道題酒鬼#include<bits/stdc.h> using namespace std; int dp[110][10]{0}; int a[1010]{0}; int n,m; int main() {cin>>n;dp[0][0]0;dp[1][0]0;dp[1][1]a[1];for(int i1;i<n;i){cin>>a[i];}for(int i2;i<n;…

介紹Ansible和實施Ansible PlayBook

第一章 介紹Ansible1. ansible的特點是什么&#xff1f;a. ansible使用yaml語法&#xff0c;語言格式簡潔明了。b. ansible不需要代理&#xff0c;僅僅通過SSH遠程連接就可以控制受管主機&#xff0c;是一種非常便捷、安全的方法。c. Ansible的功能強大&#xff0c;可以利用ans…

ComfyUI驅動的流程化大體量程序開發:構建上下文隔離的穩定系統

ComfyUI驅動的流程化大體量程序開發&#xff1a;構建上下文隔離的穩定系統 在現代軟件工程中&#xff0c;隨著程序體量的不斷增長&#xff0c;上下文污染&#xff08;Context Pollution&#xff09;和狀態依賴混亂已成為導致系統不穩定、調試困難、維護成本高昂的核心問題。尤…

基于SpringBoot的協同過濾余弦函數的美食推薦系統(爬蟲Python)的設計與實現

基于SpringBootvue的協同過濾余弦函數的個性化美食(商城)推薦系統(爬蟲Python)的設計與實現 1、項目的設計初衷&#xff1a; 隨著互聯網技術的快速發展和人們生活水平的不斷提高&#xff0c;傳統的美食消費模式已經無法滿足現代消費者日益個性化和多樣化的需求。在信息爆炸的時…

機器視覺學習-day19-圖像亮度變換

1 亮度和對比度亮度&#xff1a;圖像像素的整體強度&#xff0c;亮度提高就是所有的像素加一個固定值。對比度&#xff1a;當對比度提高時&#xff0c;圖像的暗部與亮部的差值會變大。OpenCV調整圖像亮度和對比度的公式使用一個&#xff1a;代碼實踐步驟&#xff1a;圖片輸入→…

redis詳解 (最開始寫博客是寫redis 紀念日在寫一篇redis)

Redis技術 1. Redis簡介 定義與核心特性&#xff08;內存數據庫、鍵值存儲&#xff09; Redis&#xff08;Remote Dictionary Server&#xff0c;遠程字典服務&#xff09;是一個開源的、基于內存的高性能鍵值存儲數據庫&#xff0c;由 Salvatore Sanfilippo 編寫&#xff0c;用…

【MD文本編輯器Typora】實用工具推薦之——輕量級 Markdown 編輯器Typora下載安裝使用教程 辦公學習神器

本文將向大家介紹一款輕量級 Markdown 編輯器——Typora&#xff0c;并詳細說明其下載、安裝與基本使用方法。 引言&#xff1a; MD 格式文檔指的是使用 Markdown 語言編寫的文本文件&#xff0c;其文件擴展名為 .md。 Markdown 是一種由約翰格魯伯&#xff08;John Gruber&am…

Vue2+Element 初學

大致實現以上效果 一、左側自動加載菜單NavMenu.vue 菜單組件&#xff0c;簡單調整了一下菜單直接的距離&#xff0c;代碼如下&#xff1a;<template><div><template v-for"item in menus"><!-- 3、有子菜單&#xff0c;設置不同的 key 和 inde…

Shell編程知識整理

文章目錄一、Shell介紹1.1 簡介1.2 Shell解釋器二、快速入門2.1 編寫Shell腳本2.2 執行Shell腳本2.3 小結三、Shell程序&#xff1a;變量3.1 語法格式3.2 變量使用3.3 變量類型四、字符串4.1 單引號4.2 雙引號4.3 獲取字符串長度4.4 提取子字符串4.5 查找子字符串五、Shell程序…

AI與低代碼的激情碰撞:微軟Power Platform融合GPT-4實戰之旅

引言 在當今數字化飛速發展的時代,AI 與低代碼技術正成為推動企業變革的核心力量。AI 憑借其強大的數據分析、預測和決策能力,為企業提供了智能化的解決方案;而低代碼開發平臺則以其可視化、快速迭代的特性,大大降低了應用開發的門檻和成本。這兩者的結合,開啟了一場全新的…

豆包1.6+PromptPilot實戰:構建智能品牌評價情感分類系統的技術探索

豆包1.6PromptPilot實戰&#xff1a;構建智能品牌評價情感分類系統的技術探索 &#x1f31f; Hello&#xff0c;我是摘星&#xff01; &#x1f308; 在彩虹般絢爛的技術棧中&#xff0c;我是那個永不停歇的色彩收集者。 &#x1f98b; 每一個優化都是我培育的花朵&#xff0c;…

如何在VsCode中使用git(免敲命令版本!保姆級!建議收藏!)

目錄 文章目錄 前言 一、電腦安裝git 二、在vscode安裝git插件 三、克隆倉庫 四、提交代碼 五、創建分支、切換分支、合并分支 1、創建分支 2、切換分支 3、合并分支 六、創建標簽和推送標簽 七、解決沖突 八、拉取、抓取倉庫 九、Reivew代碼 總結 前言 隨著Vscode的推出和普及…

3.kafka常用命令

在 0.9.0.0 之后的 Kafka&#xff0c;出現了幾個新變動&#xff0c;一個是在 Server 端增加了 GroupCoordinator 這個角色&#xff0c;另一個較大的變動是將 topic 的 offset 信息由之前存儲在 zookeeper 上改為存儲到一個特殊的 topic&#xff08;__consumer_offsets&#xff…

主從DNS和Web服務器搭建過程

完整服務器搭建流程 環境說明 主服務器&#xff1a;192.168.102.128 - DNS Web 從服務器&#xff1a;192.168.102.133 - 從DNS 網站&#xff1a;www.zhangsan.com (HTTPS加密)、www.lisi.com (HTTP) 手動配置主服務器和從服務器的ip地址&#xff0c;dns&#xff0c;網關…

信號無憂,轉決千里:耐達訊自動化PROFIBUS集線器與編碼器連接術

在工業自動化領域&#xff0c;尤其是高端裝備制造、智能產線、精密運動控制等場景中&#xff0c;系統穩定性與信號實時性一直是工程師關注的核心。隨著設備智能化程度不斷提高&#xff0c;編碼器作為運動控制的關鍵反饋元件&#xff0c;其數量與分布密度顯著增加&#xff0c;對…

大模型微調示例四之Llama-Factory-DPO

大模型微調示例四之Llama-Factory-DPO一、強化學習數據處理二、配置訓練文檔三、模型預測一、強化學習數據處理 原始數據地址&#xff1a;https://nijianmo.github.io/amazon/index.html 第一步&#xff1a;讀取 video game 信息 import codecs, json, re from random impor…

Java 將HTML文件、HTML字符串轉換為圖片

在 Java 開發中&#xff0c;我們經常會遇到將 HTML 內容轉換為圖片的需求&#xff0c;比如生成網頁報告截圖、電商商品詳情頁預覽圖、在線文檔縮略圖等。本文將介紹如何使用 Free Spire.Doc for Java 庫來實現這一功能。 Free Spire.Doc for Java 是一款免費庫且無需任何依賴&a…