
RCE-эксплойт и исследование
Удалённое выполнение кода через уязвимость неограниченной загрузки файлов в Clinic's Patient Management System v 1.0

Удалённое выполнение кода в Clinic's Patient Management System v 1.0 позволяет атакующему загрузить произвольный 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;
}
# 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

RashidKhan Pathan (iHexCoder), 9 сентября 2022 года. Twitter: @itRashid