the_open_door
café
ESEN
← Volver al índice

BoxBilling authenticated RCE (CVE-2022-3552)

CVE-2022-3552 es una ejecución remota de código autenticada en BoxBilling (≤ 4.22.1.5), un sistema PHP de facturación y gestión de clientes. El fallo está en cómo el panel de administración maneja ciertos campos que termina deserializando o evaluando del lado del servidor: un atacante con sesión de administrador puede inyectar un payload (por ejemplo, un objeto PHP serializado o código en un campo que se procesa sin saneado) y forzar su ejecución, obteniendo una shell como el usuario del servicio web.

La parte "autenticada" es la clave: hay que llegar primero con credenciales de administrador válidas. En la práctica esas credenciales suelen filtrarse antes (un .git expuesto con bb-config.php, reutilización de contraseñas, valores por defecto). Con ellas, el exploit público hace login y entrega la shell:

python3 CVE-2022-3552.py --domain http://<host>/ -u 'admin@<host>' -p '<password>'

La salida confirma el flujo: Successfully logged in, Payload saved successfully, Getting Shell, y acto seguido cae la conexión entrante en el listener.

Por qué pasa. El panel confía en datos del lado del cliente y los procesa de forma insegura; un administrador (legítimo o suplantado) puede convertir esa confianza en RCE. Conceptualmente está cerca de una inyección de comandos o un RCE web: entrada controlada por el usuario que el servidor ejecuta.

Cómo detectarlo. La cadena empieza con un login de administrador (a veces desde una IP externa al rango habitual) seguido de una petición que guarda un campo con un objeto PHP serializado (O:<n>:"...": con clases de gadget) o código, algo que la operación normal del panel no envía. En el host, la firma definitiva es de linaje de procesos: el servidor web (php-fpm/apache, como www-data) lanzando sh/bash como hijo tras ese POST, seguido de una conexión saliente hacia el listener del atacante. Un admin que guarda configuración e inmediatamente el servidor abre una shell es la cadena.

Defensa. Actualizar BoxBilling por encima de la versión afectada, proteger el .git y los ficheros de configuración del document root, no reutilizar contraseñas y limitar las cuentas con acceso al panel de administración.

Máquinas donde se aplica