
RCE-Exploit und Forschung
Remote-Code-Ausführung durch eine Schwachstelle beim uneingeschränkten Datei-Upload im Clinic's Patient Management System v 1.0

Remote-Code-Ausführung im Clinic's Patient Management System v 1.0 ermöglicht es einem Angreifer, eine beliebige PHP-Webshell über die Funktion zum Hochladen von Profilbildern in users.php hochzuladen.
Im folgenden Quellcode ist zu sehen, dass der Entwickler das Hochladen beliebiger Mediendateien direkt erlaubt, ohne eine bestimmte Erweiterung einzuschränken. Das bedeutet, dass wir dort Dateien mit beliebigen Erweiterungen hochladen können, was aus Sicherheitsgründen nicht in Ordnung ist. Mithilfe dieses Funktionsfehlers könnte ein Angreifer eine schädliche Webshell hochladen, um vollständigen Zugriff auf den Server mit Root-Rechten zu erlangen.
Verwundbare Seite - 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;
}
# Lädt eine einfache Webshell auf das Zielsystem hoch -
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. September 2022. Twitter: @itRashid