ホームページ  >  記事  >  バックエンド開発  >  PHP オブジェクト インジェクションの脆弱性の分析_PHP チュートリアル

PHP オブジェクト インジェクションの脆弱性の分析_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:07:53973ブラウズ

PHPオブジェクトインジェクションの脆弱性の分析

??

0、はじめに

Wuyun Knowledge Base を閲覧しているときに興味深い翻訳を見つけました: www.Bkjia.com

オブジェクトインジェクションと呼ばれる注入方法です。オブジェクトも注入できますか?

はい、汚染されたデータがある限り注入できないことはありませんが、この脆弱性は少し奇妙すぎるため、興味深いと思います。

1.原則

プログラムを作成するとき、多くの場合、ランタイム データをシリアル化する必要があります。いわゆるシリアル化とは、ランタイム データを特定の形式に従ってローカル ファイルに書き込むことです。このようにして、データをローカルに保存し、使用するときに、ファイルを直接読み取ることで実行時に生成されたデータを読み取ることができます。 PHP では、これらはシリアライズ関数とアンシリアライズ関数です。

インジェクションの原理は、次のような逆シリアル化中の汚染されたデータの導入によって引き起こされます。

$obj = unserialize($_GET[‘injection’]) ;

このステートメントを使用すると、シリアル化されたデータの形式に従って自分で構築し、必要なオブジェクト $obj を取得できます。

このオブジェクト $obj を取得するだけで何の役に立つのかと尋ねる人もいるかもしれません。まずは次の例を見てみましょう。

2. シナリオ

このシーンも翻訳のデモからのもので、復元したものは次のとおりです:

リーリー

上記のコードはユーザー制御可能なデータからシリアル化されたデータを取得し、unserialize メソッドを呼び出して $_GET['usr_serialized'] を逆シリアル化し、この $obj を私たちが制御できるようになります。

通常の方法は次のように送信します:

http://127.0.0.1/code/objin.php?usr_serialized=O:4:User:2:{s:3:age;i:20;s:4:name;s:4:John;}

上記のシリアル化されたデータは、$age=20、$name=John の User クラスのオブジェクトです。

この時点で、 echo $obj; はオブジェクトを直接エコーし、マジック メソッド __toString を呼び出すことができます。つまり、操作の効果は次のとおりです。

上記のコードはユーザー制御可能なデータからシリアル化されたデータを取得し、unserialize メソッドを呼び出して $_GET['usr_serialized'] を逆シリアル化し、この $obj を私たちが制御できるようになります。

通常の方法は次のように送信します:

http://127.0.0.1/code/objin.php?usr_serialized=O:4:User:2:{s:3:age;i:20;s:4:name;s:4:John;}

上記のシリアル化されたデータは、$age=20、$name=John の User クラスのオブジェクトです。

この時点で、 echo $obj; はオブジェクトを直接エコーし、マジック メソッド __toString を呼び出すことができます。つまり、操作の効果は次のとおりです。

3. 脆弱性マイニング

この種の脆弱性は非常に隠されていますが、一度現れると非常に効果的です。マイニングの主な目的は、unserialize 関数のパラメーターが汚染されたデータかどうかを確認することです。対応するコントロールの場所を見つけて、どのクラス (このシナリオの FileClass クラスなど) を使用して攻撃を完了できるかを確認します。

http://www.bkjia.com/PHPjc/953320.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/953320.html技術記事 PHP オブジェクト インジェクションの脆弱性を分析する?? 0. はじめに Wuyun Knowledge Base を閲覧しているときに、興味深い翻訳を見つけました: www.Bkjia.com これは、オブジェクト インジェクションと呼ばれるインジェクション方法について説明しています。オブジェクトも注入できますか? ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。