亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

針對PHP對象注入漏洞的新型利用方法是什么

發布時間:2021-10-19 18:31:12 來源:億速云 閱讀:389 作者:柒染 欄目:網絡安全

本篇文章為大家展示了針對PHP對象注入漏洞的新型利用方法是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

前言

就在前段時間的BlackHat黑客大會上,來自Secarma的安全研究專家Sam Thomas介紹了一種可導致嚴重PHP對象注入漏洞出現的新型漏洞利用技術,這種技術不需要使用到unserialize()這個PHP函數,雖然這是一種PHP反序列化漏洞,但它并不像大家所知道的那樣。在這種技術的幫助下,攻擊者將能夠提升相關漏洞的文件嚴重性,并最終實現遠程代碼執行。

不過大家不用擔心,RIPS已經將這種新型的攻擊類型增加到RIPS代碼分析引擎之中了,感興趣的同學可以點擊【 這里 】查看RIPS代碼分析Demo。

流封裝器

在訪問一條文件路徑時,大多數PHP文件操作都允許使用各種URL風格的封裝器,例如data://、zlib://或php://。其中的某些封裝器通常都會被攻擊者用來利用某些潛在的遠程文件包含漏洞,一旦利用成功,攻擊者將能夠控制目標文件的完整文件路徑。比如說,封裝器可以注入某些資源路徑,或注入需要直接執行的惡意PHP代碼:

include($_GET['file'])
include('php://filter/convert.base64-encode/resource=index.php');
include('data://text/plain;base64,cGhwaW5mbygpCg==');

Phar元數據

但是目前為止,還沒有人關注過phar://封裝器。之所以我們注意到了Phar文件(一種PHP文檔),是因為這種文件所包含的元數據采用的是一種序列化格式。接下來,我們一起創建一個Phar文件,并向其中添加一個包含數據的對象來作為元數據:

//create new Phar
$phar= new Phar('test.phar');
$phar->startBuffering();
$phar->addFromString('test.txt','text');
$phar->setStub('<?php__HALT_COMPILER(); ? >'); 
//add object of any class as meta data
classAnyClass {}
$object= new AnyClass;
$object->data= 'rips';
$phar->setMetadata($object);
$phar->stopBuffering();

我們新創建的這個test.phar文件現在擁有如下所示的內容,我們可以看見我們新添加的對象會以序列化字符串的形式進行存儲:

針對PHP對象注入漏洞的新型利用方法是什么

PHP對象注入

如果一個文件操作是通過phar://封裝器來對我們的Phar文件進行的話,文件所包含的序列化元數據將會被反序列化。這也就意味著,我們在元數據中注入的對象將會被加載到應用程序上下文中,如果目標應用程序有一個名叫AnyClass的類,并且定義了類似__destruct()或__wakeup()這樣的方法,那么這些方法將會自動被調用。因此,我們將能夠觸發代碼中任意的銷毀方法或喚醒方法。更嚴重的是,如果這些方法能夠直接對我們注入的數據對象進行操作的話,將導致更嚴重的漏洞出現。

class AnyClass {
       function __destruct() {
                echo $this->data;
       }
}
// output:rips
include('phar://test.phar');

漏洞利用

首先,攻擊者必須要制作一個Phar文件,并將其存儲在目標Web服務器中。但是Sam Thomas發現原來可以將Phar文件隱藏在一個JPG文件之中,所以這一步可以直接利用常見的圖片上傳功能來實現。

目前來說,還不足以造成嚴重的影響,因為如果攻擊者可以在類似include()、fopen()、file_get_contents()和file()這樣的操作中控制完整的文件路徑,那么這已經暴露了一個嚴重的安全漏洞了。因此,這些函數在處理用戶輸入數據時肯定會進行各種驗證。

不過,phar://封裝器在進行任意文件操作時都會觸發反序列化行為,因此類似file_exists()這樣的文件操作雖然只會檢查文件是否存在,這樣的實現不僅沒有考慮安全風險之類的問題,而且也沒有采取任何的保護措施。因此,攻擊者將能夠注入phar://封裝器并獲取到代碼執行權限。

下面給出的是目前看似無害的代碼段:

file_exists($_GET['file']);
md5_file($_GET['file']);
filemtime($_GET['file']);
filesize($_GET['file']);

RIPS的自動檢測機制

在RIPS的幫助下,我們將能夠對未經過濾或驗證的用戶輸入數據(針對PHP文件的操作)進行自動化檢測。這樣一來,我們就可以檢測文件刪除、文件披露、文件寫入、文件篡改、文件創建和文件包含漏洞。

針對PHP對象注入漏洞的新型利用方法是什么

除此之外,RIPS的上下文敏感字符串分析功能也可以幫助我們精準判斷文件路徑是否可以被攻擊者部分或完全控制,以及是否可以注入phar://封裝器。更加重要的是,RIPS甚至還可以檢測到潛在的對象注入漏洞利用鏈。

RIPS的研究人員已將這種類型的PHP對象注入攻擊標記為了Phar Deserialization,RIPS代碼分析器目前已支持檢測這種類型的代碼風險。

上述內容就是針對PHP對象注入漏洞的新型利用方法是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

交城县| 桐柏县| 潞城市| 赤峰市| 香港| 额敏县| 高雄市| 清镇市| 聊城市| 布尔津县| 永善县| 新泰市| 淳化县| 新巴尔虎右旗| 云阳县| 沂源县| 华容县| 乐至县| 紫阳县| 陕西省| 仁布县| 巫溪县| 全州县| 饶平县| 阳新县| 建始县| 宁波市| 迁西县| 丹棱县| 深泽县| 永善县| 北宁市| 仁怀市| 马边| 高唐县| 长治市| 永泰县| 石泉县| 泊头市| 九江市| 万山特区|