最新消息:图 床

利用 phar 拓展 php 反序列化漏洞攻擊面

COOL IAM 196浏览 0评论

作者:seaii@知道創宇404實驗室
時間:2018/08/23

英文版本:https://paper.seebug.org/988/

0x01 前言

通常我們在利用反序列化漏洞的時候,只能將序列化后的字符串傳入unserialize(),隨着代碼安全性越來越高,利用難度也越來越大。但在不久前的Black Hat上,安全研究員Sam Thomas分享了議題It’s a PHP unserialization vulnerability Jim, but not as we know it,利用phar文件會以序列化的形式存儲用戶自定義的meta-data這一特性,拓展了php反序列化漏洞的攻擊面。該方法在文件系統函數(file_exists()、is_dir()等)參數可控的情況下,配合phar://偽協議,可以不依賴unserialize()直接進行反序列化操作。這讓一些看起來“人畜無害”的函數變得“暗藏殺機”,下面我們就來了解一下這種攻擊手法。

0x02 原理分析

2.1 phar文件結構

在了解攻擊手法之前我們要先看一下phar的文件結構,通過查閱手冊可知一個phar文件有四部分構成:

1. a stub

可以理解為一個標誌,格式為xxx<?php xxx; __HALT_COMPILER();?>,前面內容不限,但必須以__HALT_COMPILER();?>來結尾,否則phar擴展將無法識別這個文件為phar文件。

2. a manifest describing the contents

phar文件本質上是一種壓縮文件,其中每個被壓縮文件的權限、屬性等信息都放在這部分。這部分還會以序列化的形式存儲用戶自定義的meta-data,這是上述攻擊手法最核心的地方。

转载请注明:IAMCOOL » 利用 phar 拓展 php 反序列化漏洞攻擊面

0 0 vote
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x