PHPphar:協(xié)議對(duì)象注入技術(shù)介紹-創(chuàng)新互聯(lián)

前言

在之前的BlackHat 2018大會(huì)上公布了一款針對(duì)PHP應(yīng)用程序的全新攻擊技術(shù)。我們將通過(guò)這篇文章簡(jiǎn)單介紹下。

創(chuàng)新互聯(lián)主營(yíng)達(dá)茂旗網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App制作,達(dá)茂旗h5小程序設(shè)計(jì)搭建,達(dá)茂旗網(wǎng)站營(yíng)銷推廣歡迎達(dá)茂旗等地區(qū)企業(yè)咨詢

來(lái)自Secarma的安全研究員Sam Thomas發(fā)現(xiàn)了一種新的開(kāi)發(fā)技術(shù),它可以導(dǎo)致 PHP對(duì)象注入漏洞 ——而無(wú)需使用PHPunserialize()函數(shù)。這項(xiàng)新技術(shù)是在BlackHat 2018大會(huì)上公布的,利用 PHP反序列化漏洞 升實(shí)現(xiàn)遠(yuǎn)程代碼執(zhí)行。我們?cè)赗IPS代碼分析引擎中添加了對(duì)這種新型攻擊的檢測(cè)。

常見(jiàn)樣式

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

遠(yuǎn)程文件包含漏洞利用:

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

Phar元數(shù)據(jù)

但到目前為止,很少有人關(guān)注phar://這個(gè)點(diǎn)。Phar(PHP Archive)文件的有趣之處在于它們包含序列化格式的 元數(shù)據(jù) 。讓我們創(chuàng)建一個(gè)Phar文件,并添加一個(gè)包含一些數(shù)據(jù)作為元數(shù)據(jù)的對(duì)象:

// 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文件有以下內(nèi)容。我們可以看到對(duì)象被存儲(chǔ)為一個(gè)序列化的字符串。

PHP phar:協(xié)議對(duì)象注入技術(shù)介紹

PHP對(duì)象注入

如果現(xiàn)在通過(guò)phar://對(duì)我們現(xiàn)有的Phar文件執(zhí)行文件操作,則其序列化元數(shù)據(jù)將被反序列化。這意味著我們?cè)谠獢?shù)據(jù)中注入的對(duì)象被加載到應(yīng)用程序的范圍中。如果此應(yīng)用程序具有已命名的AnyClass類并且具有魔術(shù)方法destruct()或wakeup()定義,則會(huì)自動(dòng)調(diào)用這些方法。這意味著我們可以在代碼庫(kù)中觸發(fā)任何析構(gòu)函數(shù)或wakeup方法。更糟糕的是,如果這些方法對(duì)我們注入的數(shù)據(jù)進(jìn)行操作,那么這可能會(huì)導(dǎo)致進(jìn)一步的漏洞。

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

利用

首先,攻擊者必須能夠在目標(biāo)Web服務(wù)器上植入一個(gè)Phar文件。Sam Thomas發(fā)現(xiàn)了一個(gè)如何將Phar文件隱藏到JPG文件中的 技巧 ,因此只要常見(jiàn)的圖片上傳功能就足夠。但這并不重要,因?yàn)槿绻粽呖梢栽讪琻clude(),fopen(),file_get_contents(),file()等操作中控制完整的文件路徑,那么將會(huì)造成嚴(yán)重的安全漏洞。因此,通常會(huì)在用戶輸入中驗(yàn)證這些功能。但是現(xiàn)在攻擊者可以通過(guò)phar://注入并獲得代碼執(zhí)行。

到目前為止看起來(lái)無(wú)害的代碼示例:

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

總結(jié)

通過(guò)RIPS的分析,我們可以自動(dòng)檢測(cè)用戶輸入是否在PHP文件操作中未經(jīng)驗(yàn)證。

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

PHP phar:協(xié)議對(duì)象注入技術(shù)介紹

此外,RIPS對(duì)敏感字符串分析使我們能夠精確評(píng)估文件路徑是完全還是由攻擊者控制,以及是否可以phar://注入。最后,我們?cè)赗IPS代碼分析器中添加了一個(gè)名為Phar Deserialization的新漏洞類型,以檢測(cè)這種新類型的代碼風(fēng)險(xiǎn)。

本文轉(zhuǎn)載自“ FreeBuf.COM ”,原文由 周大濤編譯

網(wǎng)頁(yè)標(biāo)題:PHPphar:協(xié)議對(duì)象注入技術(shù)介紹-創(chuàng)新互聯(lián)
文章位置:http://bm7419.com/article34/hohse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、網(wǎng)站排名、App設(shè)計(jì)企業(yè)建站、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化