
Explotación e investigación de RCE
Ejecución remota de código mediante una vulnerabilidad de carga de archivos sin restricciones en el Sistema de Gestión de Pacientes de la Clínica v 1.0

La ejecución remota de código en el Sistema de Gestión de Pacientes de la Clínica v 1.0 permite al atacante cargar un webshell de PHP arbitrario mediante la funcionalidad de carga de foto de perfil en users.php
En el siguiente código fuente podemos ver que el desarrollador permite cargar directamente cualquier archivo multimedia sin restringir una extensión específica, lo que significa que podemos subir cualquier archivo con cualquier extensión, lo cual no es aceptable por razones de seguridad; y aprovechando esta falla de funcionalidad, un atacante podría cargar un webshell malicioso para obtener acceso completo al servidor con privilegios de root.
Página vulnerable - 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), 9 de septiembre de 2022. Twitter: @itRashid