この記事は、PHP シリアル化/オブジェクト インジェクションの脆弱性分析に関する短い記事であり、ホストのリモート シェルを取得する方法について説明します。 PHP シリアル化について詳しく知りたい場合は、このリンクを参照してください。この脆弱性を自分でテストしたい場合は、XVWA と Kevgir を介してテストできます。
この脆弱性を悪用する最初のステップでは、ターゲット アプリケーションに PHP シリアル化があるかどうかのテストを開始します。テストを支援するために、Burpsuite の SuperSerial プラグインを使用しました。ダウンロード アドレスはここにあります。 PHP および Java シリアル化の存在を受動的に検出します。
アプリケーションで PHP シリアル化の使用が検出されたため、アプリケーション コードにリモート コード実行の脆弱性が含まれているかどうかの確認を開始できます。シリアル化されたオブジェクトはパラメーター "r" から取得されることに注意してください:
$var1=unserialize($_REQUEST['r']);
次に、逆シリアル化して評価します:
eval($this->inject);
次に、実行します:
echo "<br/>".$var1[0]." - ".$var1[1];
これにより、パラメーター r の PHP シリアル化オブジェクトをバイパスすると、次のようになります。コード実行の脆弱性が発生する可能性があります。
悪用
< ?php error_reporting(E_ALL); class PHPObjectInjection{ public $inject; function __construct(){ } function __wakeup(){ if(isset($this->inject)){ eval($this->inject); } } }//?r=a:2:{i:0;s:4:"XVWA";i:1;s:33:"XtremeVulnerable Web Application";} if(isset($_REQUEST['r'])){ $var1=unserialize($_REQUEST['r']); if(is_array($var1)){ echo "".$var1[0]." - ".$var1[1]; } }else{ echo "parameter is missing"; }? >
注: このファイルを Web サーバーに転送し、リバウンド シェル スクリプトでローカル IP とポートを変更する必要があります。エクスプロイト コード:
http://pentestmonkey.net/tools/php-reverse-shell/php-reverse-shell-1.0.tar.gzDemo
動画は以下のように表示されます:
※参照元:CD、FB編集者dawner編集、FreeBuf Hackers and Geeks (FreeBuf.COM)から転載する場合はその旨を明記してください