lunes, 16 de julio de 2018

Ataques Web - Demostración - Command Execution

Esta vulnerabilidad permite ejecutar comandos de consola desde la web, pudiendo así ver, modificar y eliminar archivos y directorios del servidor. Las posibilidades de este ataque son infinitas, siendo su única limitación el usuario utilizado en la ejecución de los comandos (generalmente “apache”), por lo que para realizar ciertas acciones se dependería de los permisos que éste tenga.
Al igual que la vulnerabilidad File Inclusion, ésta se produce por confiar en la buena voluntad del usuario y no filtrar como es debido la información procedente de formularios HTML.

DVWA presenta en el nivel de seguridad low el siguiente script:




vulnerabilidad File Inclusion

Este script permite al visitante realizar ping a una IP (o host) a través de un formulario y a simple vista podría parecer bastante inocuo. Sin embargo, la información enviada a través del campo input del formulario no es tratada antes de llevar a cabo su ejecución por parte del servidor, por lo que un usuario malintencionado podría aprovecharse para ejecutar otros comandos diferentes usando la concatenación de comandos.

A continuación se muestran algunos ejemplos aprovechando la vulnerabilidad en la ejecución de comandos en el nivel de seguridad low:

Examinar el directorio raíz del sistema. Al hacer uso del operador || y haber fallado el ping que debía ejecutarse, se ejecuta el segundo comando:


se ejecuta el segundo comando


Mostrar información de la CPU.


Mostrar información de la CPU.



Prevención


El nivel de seguridad high de DVWA implementa el uso de la función stripslashes() para filtrar la cadena recibida por URL eliminando las barras si el string contuviera comillas escapadas.
Este nivel de seguridad incluye también un pequeño script para comprobar que la información recibida es una dirección IP:


comprobar que la información recibida es una dirección IP


Esta porción de código realiza cuatro acciones:


  1. Divide la cadena recibida como parámetro con la función explode(), tomando el punto como separador de las subcadenas.
  2. Comprueba que cada una de las subcadenas del array creado por explode() es un número entero.
  3. Comprueba que el tamaño del array sea 4 (formato de una dirección IP – XXX.XXX.XXX.XXX) con la función sizeof() (alias de la función count())
  4. Si las dos comprobaciones anteriores:



a. Son positivas, vuelve a juntar los números en una sola cadena de texto y ejecuta el resto de código del script original.

b. Si no, muestra un mensaje advirtiendo de que la dirección IP introducida es incorrecta.

No hay comentarios:

Publicar un comentario