
RCE エクスプロイトと研究
Clinic's Patient Management System v 1.0 の無制限ファイルアップロードの脆弱性によるリモートコード実行

Clinic's Patient Management System v 1.0 のリモートコード実行により、攻撃者は users.php のプロフィール画像アップロード機能を介して任意の PHP ウェブシェルをアップロードできます。
以下のソースコードでは、開発者が特定の拡張子を制限せずに任意のメディアファイルのアップロードを直接許可していることがわかります。つまり、セキュリティ上好ましくない任意の拡張子のファイルをアップロードできるということです。この機能の欠陥を利用して、攻撃者は悪意のあるウェブシェルをアップロードし、root 権限でサーバー全体へのアクセスを取得できる可能性があります。
脆弱なページ - users.php
// users.php
$status = move_uploaded_file(
$_FILES["profile_picture"]["tmp_name"],
'user_images/' . $targetFile
);
if ($status) {
try {
$con->beginTransaction();
$query = "INSERT INTO `users`(`display_name`,
`user_name`, `password`, `profile_picture`)
VALUES('$displayName', '$userName', '$encryptedPassword', '$targetFile');";
$stmtUser = $con->prepare($query);
$stmtUser->execute();
$con->commit();
$message = 'user registered successfully';
} catch (PDOException $ex) {
$con->rollback();
echo $ex->getTraceAsString();
echo $ex->getMessage();
exit;
}
} else {
$message = 'a problem occured in image uploading.';
}
header("location:congratulation.php?goto_page=users.php&message=$message");
exit;
}
# Upload a simple webshell to the target machine -
python3 CVE-2022-40471.py <target_ip> <target_port> <target_uri> <username> <password>
python CVE-2022-40471.py 127.0.0.1 80 /pms/ UserName Password

https://drive.google.com/file/d/1m-wTfOL5gY3huaSEM3YPSf98qIrkl-TW/view?usp=sharing
https://www.sourcecodester.com/php-clinics-patient-management-system-source-code
https://www.sourcecodester.com/sites/default/files/download/oretnom23/php-cpms.zip
RashidKhan Pathan (iHexCoder)、2022年9月9日。 Twitter: @itRashid