
استغلال RCE والبحث
ثغرة تنفيذ الأوامر عن بُعد عبر رفع الملفات غير المقيد في نظام إدارة مرضى العيادة الإصدار 1.0

يسمح تنفيذ الأوامر عن بُعد في نظام إدارة مرضى العيادة الإصدار 1.0 للمهاجم برفع شِل ويب (webshell) بلغة PHP بشكل تعسفي عبر وظيفة رفع صورة الملف الشخصي في ملف users.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;
}
# رفع شِل ويب بسيط إلى الجهاز الهدف -
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

RashidKhan Pathan (iHexCoder)، 9 سبتمبر 2022. تويتر: @itRashid