Se ha publicado una
nueva herramienta que permite saltar los filtros WAF y lograr ejecución de
código PHP en el servidor.
Daniel Púa
(@devploit), nuestro compañero en el laboratorio de Hispasec, ha desarrollado
una herramienta en PHP que aprovecha las operaciones XOR y las peculiaridades
del propio lenguaje PHP para saltar las protecciones de aplicaciones WAF (Web
Application Firewall).
La idea de
desarrollar la herramienta nace como necesidad durante una de las competiciones
CTF en las que Daniel compite a menudo. La competición de hacking BitUp
Alicante 2019 ponía a disposición de los participantes un reto de categoría web
donde, intencionalmente, se presentaba una página web desarrollada en PHP y
vulnerable a inyección de código.
No era sencillo
realizar la inyección de código, ya que para evitar la resolución directa del
reto, sus creadores incluyeron un WAF que filtrase y bloquease las peticiones,
evitando así que se pudiese ejecutar cómodamente el código necesario para
resolver el reto.
Intentando hacer un
bypass del firewall web o WAF, nuestro compañero tuvo en cuenta las
posibilidades que ofrecen las operaciones XOR, lo que, unido a la capacidad de
ejecución de una función indicando el nombre como una cadena de texto, permitía
realizar un bypass exitoso de las medidas de seguridad.
Analizando la base
matemática sobre las que se apoya el funcionamiento de la herramienta,
encontramos que realizando operaciones XOR con cadenas de texto en PHP somos
capaces de pasar nombres de funciones prohibidas al servidor. De esta forma,
podremos ejecutarlas.
El operador XOR, aplicado
sobre cadenas, funciona teniendo en cuenta lo siguiente:
Teniendo en cuenta el
funcionamiento de las operaciones XOR, podemos usar esta operación para, a
partir de dos o más cadenas de texto, generar una nueva cadena que contenga la
función prohibida que deseamos ejecutar, como si de un cifrado se tratase.
Adicionalmente, la
herramienta aprovecha la posibilidad de indicar el nombre de las funciones
utilizando cadenas de texto PHP, lo que permite utilizar la operación XOR para
codificar/cifrar las palabras prohibidas y lograr la ejecución de cualquier
función.
Al unir el uso de
operaciones XOR para codificar el nombre de las funciones no permitidas por el
WAF, con la posibilidad de de ejecutar funciones utilizando cadenas de texto
para referenciarlas, obtenemos una forma muy interesante de saltar las
protecciones del firewall para lograr la ejecución de código.
XORpass, como podemos
observar, es una idea muy interesante que nos puede ayudar mucho para la
resolución de retos en CTFs, pero no sólo es útil en CTFs. También puede ser de
gran utilidad en la explotación de vulnerabilidades en entornos reales en los
que estemos realizando un test de penetración sobre infraestructuras protegidas
por WAFs cuyo backend corra en PHP.
Descarga de herramienta
Desde repositorio de
Github: https://github.com/devploit/XORpass
Fuente: Hispasec