使用のphar(再現するテスト環境)をPHPのデシリアライゼーションコマンドの実行を実装
序文
デシリアライゼーションの脆弱性一般的に言えば、最初の反応は、()関数をアンシリアライズすることです。しかし、セキュリティ研究者サム・トーマスが話題「これはPHPのアンシリアライズの脆弱性Jimの共有が、私たちはそれを知っていないように、」 フォームのPhar擬似プロトコル連載のメタデータの使用は、この機能の保存をカスタマイズするユーザーを送信し、抗シーケンスPHPを拡張攻撃面の。
pharの紹介
簡単に言えば、そのPHPのpharアーカイブです。これは、単一のファイルに、しかし、解凍およびPHPのアクセス、ファイルを実行できずに、複数のファイルをアーカイブすることができます:// PHP://などが、また、フローラッパー。
pharの構造は、4つの部分から構成され
フォーマットにおけるスタブのPharファイル識別子XXX <PHP XXX ;? __halt_compiler();?>。
マニフェストファイルは、圧縮、シーケンス内のストレージとしての属性情報を、
コンテンツは、コンテンツファイルを圧縮します。
署名署名、ファイルの終わりに。
、)(__halt_compilerなければならない2つのキーポイント、1つの識別文書があります;?>最後に、私たちは簡単に偽の画像ファイルやPDFファイルは、いくつかのアップロード制限をバイパスすることができることを意味以前の制限のない内容。第二に、デシリアライズ、phar形式のシーケンスに保存されたメタデータ情報が保存され、phar形式によるファイル操作関数がとき://ダミープロトコルデータファイルがphar形式がデシリアライズさ解析され、これは、ファイル操作機能の多くを持っていました。
で撮影した上:PHPGGCはPHPデシリアライズの脆弱性を理解しています。
https://kylingit.com/blog/%E7%94%B1phpggc%E7%90%86%E8%A7%A3php%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C %96%E6%でのBCの%8F%E6%以下のB4の%の9E /
再生処理
Pharファイルの生成
Pharファイルを構築するために私たち自身のファイル構造によると、PHPはPharクラスを構築しました。
Fr_genkfp
Evil.class.php
直接実行すると、エラーを取得します
理由:オフに設定phar.readonlyにphp.iniに必要。(私は、コンフィギュレーションファイルがサーバを再起動し、保存した後に変更する必要があり、これに多くの時間を無駄に)
生成vul.pharを行った後、図に示したバイナリエディタで開きます。
図から見ることができ、メタデータは、既にファイルのphar直列化された形で存在します。
説明:実際には、実行するコマンドのシーケンスは、圧縮ファイルのpharに保存されています
デシリアライズ
対応するシーケンスの、直列化復元操作は確かにあります。php
大部分のファイルシステム機能をphar://
解析するには、のために存在するmeta-data
直列化復元操作します。
テスト環境を次のようにtest.phpを
アクセスtest.phpを、http://127.0.0.1/test.php?url=phar://vul.phar、GETマップ
正常に実行されました。
防衛
- 機能を制御するときに、ファイルシステムパラメータ、厳格なフィルタリングのパラメータ。
- 厳格なだけでファイルヘッダをチェックするのではなく、アップロードされたファイルの内容を確認してください。
- 条件が許せにおけるシステム、機能コードのリスクを無効にするには、コマンドを実行します。