
Código de prueba de concepto para CVE-2020-7388, una RCE no autenticada como SYSTEM en el servicio AdxDSrv de Sage X3.
Código de prueba de concepto para CVE-2020-7388, un RCE no autenticado como SYSTEM en el servicio AdxDSrv de Sage X3
Sage X3 expone un servicio administrativo en el puerto TCP/1818 (por defecto, aunque configurable) bajo el proceso "AdxDSrv.exe", parte del componente AdxAdmin. Este servicio se utiliza para la administración remota de la solución ERP de Sage a través de la consola Sage X3. Una vulnerabilidad dentro del servicio permite a un actor malintencionado elaborar una solicitud al servicio expuesto para ejecutar comandos en el servidor como el usuario "NT AUTHORITY/SYSTEM".
El informe detallado del exploit se puede encontrar en nuestra publicación original en el blog de Rapid7: https://www.rapid7.com/blog/post/2021/07/07/cve-2020-7387-7390-multiple-sage-x3-vulnerabilities/
AdxDSrv se ejecuta en el puerto TCP 1818 por defecto y aparece como un servicio desconocido en Nmap. Este repositorio contiene dos scripts NSE para identificar servicios vulnerables y el propio AdxDSrv.
python3 adxsrv_bypass.py --cmd <comando a ejecutar como SYSTEM> --ip <objetivo remoto> --port <puerto del servicio AdxDSrv>
Nota: este es un PoC rudimentario que envía flujos de bytes en un orden específico y podría necesitar ajustes. Nuestro tiempo limitado con acceso al software impidió afinar los exploits. Si encuentras una instancia vulnerable y mejoras el PoC, ¡envía un PR! O si estás intentando mejorarlo y quieres colaborar, no dudes en contactarnos.
Durante una prueba de penetración de red en 2020, Cale Black identificó nuevas vulnerabilidades en el panel de administración web del ERP X3 de Sage. Esto impulsó una investigación más profunda de la aplicación entre Jonathan Peterson (@deadjakk), Aaron Herndon (@ac3lives), Cale Black, Ryan Villarreal (@XjCrazy09) y William Vu. Nos sumergimos e identificamos el servicio personalizado AdxDSrv de Sage X3, que se utilizaba para la administración remota. Tras algo de ingeniería inversa y fuzzing, conseguimos cuatro CVEs, uno de ellos un RCE remoto no autenticado con CVSS 10. Un gran reconocimiento al que cargó con el mayor peso aquí, @Deadjakk, por gran parte de la ingeniería inversa y los primeros prototipos del PoC.