91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

PHP phar:協議對象注入技術介紹

發布時間:2020-08-07 08:03:19 來源:ITPUB博客 閱讀:198 作者:IT168GB 欄目:網絡安全

前言

在之前的BlackHat 2018大會上公布了一款針對PHP應用程序的全新攻擊技術。我們將通過這篇文章簡單介紹下。

來自Secarma的安全研究員Sam Thomas發現了一種新的開發技術,它可以導致 PHP對象注入漏洞 ——而無需使用PHPunserialize()函數。這項新技術是在BlackHat 2018大會上公布的,利用 PHP反序列化漏洞 升實現遠程代碼執行。我們在RIPS代碼分析引擎中添加了對這種新型攻擊的檢測。


常見樣式

大多數PHP文件操作允許在訪問文件路徑時使用各種url樣式,如data://、zlib://或php://。這些操作通常用于遠程文件,攻擊者可以在其中控制文件包含完整的文件路徑。

遠程文件包含漏洞利用:

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

Phar元數據

但到目前為止,很少有人關注phar://這個點。Phar(PHP Archive)文件的有趣之處在于它們包含序列化格式的 元數據 。讓我們創建一個Phar文件,并添加一個包含一些數據作為元數據的對象:


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

我們新建的test.phar文件有以下內容。我們可以看到對象被存儲為一個序列化的字符串。

PHP phar:協議對象注入技術介紹


PHP對象注入

如果現在通過phar://對我們現有的Phar文件執行文件操作,則其序列化元數據將被反序列化。這意味著我們在元數據中注入的對象被加載到應用程序的范圍中。如果此應用程序具有已命名的AnyClass類并且具有魔術方法destruct()或wakeup()定義,則會自動調用這些方法。這意味著我們可以在代碼庫中觸發任何析構函數或wakeup方法。更糟糕的是,如果這些方法對我們注入的數據進行操作,那么這可能會導致進一步的漏洞。


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

利用

首先,攻擊者必須能夠在目標Web服務器上植入一個Phar文件。Sam Thomas發現了一個如何將Phar文件隱藏到JPG文件中的 技巧 ,因此只要常見的圖片上傳功能就足夠。但這并不重要,因為如果攻擊者可以在ìnclude(),fopen(),file_get_contents(),file()等操作中控制完整的文件路徑,那么將會造成嚴重的安全漏洞。因此,通常會在用戶輸入中驗證這些功能。但是現在攻擊者可以通過phar://注入并獲得代碼執行。

到目前為止看起來無害的代碼示例:

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

總結

通過RIPS的分析,我們可以自動檢測用戶輸入是否在PHP文件操作中未經驗證。

這樣,我們檢測是否存在文件刪除、文件泄露、文件寫入,文件操作,文件創建、文件包含(等等)漏洞。

PHP phar:協議對象注入技術介紹

此外,RIPS對敏感字符串分析使我們能夠精確評估文件路徑是完全還是由攻擊者控制,以及是否可以phar://注入。最后,我們在RIPS代碼分析器中添加了一個名為Phar Deserialization的新漏洞類型,以檢測這種新類型的代碼風險。


本文轉載自“ FreeBuf.COM ”,原文由 周大濤編譯

向AI問一下細節

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

AI

呼图壁县| 乾安县| 彰化县| 南丰县| 彭山县| 海晏县| 广元市| 涟水县| 峨山| 什邡市| 平潭县| 通州区| 谷城县| 兴和县| 井研县| 毕节市| 岗巴县| 长治市| 乌海市| 屏南县| 芜湖市| 莲花县| 奈曼旗| 卢湾区| 涿州市| 融水| 南岸区| 建宁县| 安徽省| 涞水县| 松潘县| 苍南县| 福海县| 星子县| 兰坪| 桃江县| 宝坻区| 清水县| 通化市| 诸城市| 锡林浩特市|