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:
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:
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:
Esta porción de código realiza cuatro acciones:
- Divide la cadena recibida como parámetro con la función explode(), tomando el punto como separador de las subcadenas.
- Comprueba que cada una de las subcadenas del array creado por explode() es un número entero.
- 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())
- 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