Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
SuiteCRM-RCE — Informe sobre CVE-2020-28328: Ejecución remota de código en archivo de registro de SuiteCRM más algo de Cross-Site Scripting | Kitploit
Herramientas/GitHubGitHub/mcorybillington/suitecrm-rce
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPhishingPruebas de PenetraciónPapers e InvestigaciónAprendizaje y Educación
GitHubmcorybillington/suitecrm-rce

SuiteCRM-RCE

Informe sobre CVE-2020-28328: Ejecución remota de código en archivo de registro de SuiteCRM más algo de Cross-Site Scripting

Ver Repositorio
214hace 5 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2020-28328 Ejecución remota de código en SuiteCRM a través de la configuración del sistema de archivos de registro y envenenamiento del archivo de registro

Descripción general

Recientemente descubrí dos vulnerabilidades en SuiteCRM que proporcionan una cadena de ataque para que un usuario con pocos privilegios logre la ejecución de código en el sistema operativo subyacente. La cadena de ataque es Cross-Site Scripting, que puede usarse para realizar Cross-Site Request Forgery, lo que conduce a la ejecución remota de código al manipular la configuración de la aplicación y envenenar un archivo de registro. Todo esto se logra mediante una carga de archivo que contiene JavaScript malicioso que un usuario con pocos privilegios puede engañar a un usuario con privilegios administrativos para que ejecute. Los archivos de prueba de concepto y el video que he adjuntado demuestran a un usuario con pocos privilegios realizando este ataque y obteniendo una reverse shell en el sistema que aloja SuiteCRM.
Esto fue parcheado en la versión 7.11.17 de SuiteCRM.

Severidad

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
No estoy completamente de acuerdo con esta calificación, ya que el exploit requiere acceso administrativo, lo que cambiaría PR:L a PR:H, ajustando la puntuación final de 8.8 a 7.2. Yo lo calificaría como: Ref:

CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H

https://nvd.nist.gov/vuln/detail/CVE-2020-28328

Detalles de la versión

SuiteCRM Versión 7.11.15

Cross-Site Scripting (XSS)

El Cross-Site Scripting almacenado existe en la carga de archivos 'Crear Documentos'. Un usuario con pocos privilegios puede cargar un archivo con cualquier contenido. Luego, el usuario puede examinar el enlace proporcionado para descargar este documento y determinar la ubicación del archivo en el sistema de archivos localizando el parámetro id. Este valor largo y aleatorio es el nombre del archivo dentro del directorio /uploads/. El usuario puede colocar JavaScript arbitrario en este archivo y luego enviar el enlace a otro usuario. Esto puede usarse para secuestrar la sesión de otro usuario y/o realizar acciones en nombre de ese usuario, como se mostrará en el video de PoC.

Ejecución remota de código

Después de descubrir que podía convertirme en administrador mediante el secuestro de sesión a través del Cross-Site Scripting, descubrí que podía controlar las propiedades del sistema en 'Admin → Configuración del sistema', concretamente la propiedad del archivo de registro. Las extensiones de archivo de registro estaban bastante bloqueadas, pero pude usar BurpSuite para actualizar el valor de 'Nombre del archivo de registro' a cualquier valor arbitrario, incluyendo extensiones .php. Hice esto enviando una solicitud sin cambiar nada y capturando la solicitud POST que realmente actualiza los valores. Cambié el nombre del archivo mediante el parámetro logger_file_name a shell.php y simplemente dejé en blanco el campo 'Extensión'. Eso me proporcionó un archivo php al que podía acceder en el navegador en la raíz web, pero necesitaba algo de código php dentro del archivo para ejecutarlo.
A continuación, examiné la salida en el archivo y noté que podía controlar la entrada en el archivo a través de las propiedades del usuario si actualizaba un usuario (como el nombre o apellido del usuario), si el registro estaba configurado en info (que creo que era el valor predeterminado...). Entonces, capturé una solicitud en burp e inserté un código php <?php $id =id; echo $id; ?> en el campo last_name del formulario. Esto resultó en la salida del comando id en Linux en el contexto del usuario del servidor web, www-data. Los únicos caracteres que pude notar que se escapaban según el archivo de registro eran las comillas simples, las comillas dobles y las barras invertidas. Puedes verificar esto haciendo tail al archivo de registro sql en el backend.

Encadenando ambos para Cross-Site Request Forgery (Un clic -> shell)

Pude realizar todo esto como el usuario administrador porque pude obtener las cookies de sesión, sin embargo, para tener una cadena funcional, necesitaba que esto se ejecutara a través de JavaScript en el contexto del usuario administrador. Pude programar esto usando algunas solicitudes fetch para realizar cada una de estas solicitudes POST. La primera actualizaba las propiedades del sistema, la segunda actualizaba el campo 'Apellido' del usuario administrador, y la última realizaba una solicitud GET al archivo de registro recién creado con código php malicioso. El código php malicioso realizaba una solicitud curl a mi máquina, descargaba una reverse shell de bash, y luego canalizaba la salida de esa solicitud curl directamente a bash, ejecutando el código. Luego cargué esto usando el mismo método que discutí en la sección XSS y volví a visitar el nuevo enlace como usuario administrador. Con un servidor web alojando mi archivo bash y un listener de netcat en ejecución, pude obtener una reverse shell.

Mitigación

Cross-Site Scripting

Asegúrate de tener AllowOveride All configurado en Apache. nginx no tiene esta configuración y no lo probé en nginx.

Ejecución remota de código

Actualiza a la última versión de SuiteCRM, o al menos a la versión 7.11.17.
Este es el parche específico. Commit 1618af16eaa494c4551bac961e5ac8fc3d87ab8c

Reporte a SuiteCRM

SuiteCRM fue muy receptivo durante todo el proceso de notificación. Reconocieron el RCE, que fue parcheado. El XSS fue el resultado de una configuración del servidor web, por lo que no lo reconocieron como una vulnerabilidad. Sin embargo, señalaron que actualizarían la documentación a la luz de esto.

Cronograma

06 AGO 2020 -> Ambos problemas reportados a [email protected]
07 AGO 2020 <- SuiteCRM confirma la recepción del informe y eleva el problema al equipo de seguridad interno
21 AGO 2020 -> Me comuniqué con [email protected] para hacer un seguimiento
25 AGO 2020 <- SuiteCRM responde sobre la configuración del servidor web/XSS
26 AGO 2020 -> Respondo diciendo que la sugerencia de AllowOveride All mitiga el XSS
16 SEP 2020 -> Me comuniqué con [email protected] para hacer un seguimiento
17 SEP 2020 <- SuiteCRM responde confirmando el problema como un problema parcial
29 OCT 2020 Se publicó la actualización
03 NOV 2020 -> Me comunico con [email protected] para asegurarme de que no necesitan nada más de su parte antes de publicar el writeup
05 NOV 2020 <- SuiteCRM responde

Ahora que hemos publicado un parche para este problema y está en el dominio público, no hay problema con que publiques un blog post sobre las vulnerabilidades desde nuestra perspectiva.

05 NOV 2020 -> CVE solicitado por mí
06 NOV 2020 <- CVE-2020-28328 emitido

POC

https://www.exploit-db.com/exploits/49001

¡Gracias a SuiteCRM!

Fueron muy fáciles de trabajar y definitivamente planeo continuar buscando y reportando vulnerabilidades en este software!

Descargar herramienta