Los Caballeros

"Sobre seguridad, programación, modding, frikismo, etc... "

PHP: Que no hacer con los regex

Twitter icon Twitter icon
El cómo maneja PHP los regex tiene sus detalles... por ejemplo, no es lo mismo:

if(preg_match("/^[\w\d]+$/",$_GET['xian'])){
[...]
}

Que:

if(!preg_match("/[^\w\d]/",$_GET['xian'])){
[...]
}

Por ejemplo:

GET /echo.php?xian=00a%0a

El primero hace match... pero el segundo no... ¿Por qué? el LF se toma cómo el fin de la linea ($) por el contrario en el segundo regex no se especifica ese carácter por lo que se abarca todo :D...

Por otro lado...
if(!preg_match("/[^\d\w\s]/",$_GET['xian'])){
[...]
}

y
if(preg_match("/^[\d\w\s]+$/",$_GET['xian'])){
[...]
}


Inyectando: /echo.php?xian=00a%0a0a%0axianur0%20was%20here

Ambos hacen match (tomen en cuenta que \s no es solo espacios ;) )...

Con esto podemos inyectar CRLF's entre otras cosas...

y hay mil y un bypass a esto ;)

Saludos!

Snort... recuento de hechos

Twitter icon Twitter icon

(Representación artística de un Snort)

Snort (Sus scrofa adorno) es una especie de mamífero (consumido por mamones) artiodáctilo de la familia Sourcefire (y primo de la Suidae). Es un animal doméstico usado en la alimentación humana. Algunas culturas lo consideran un animal sagrado debido a que creen que brinda protección contra la magia negra y la mala suerte (algunos inclusive le hacen sacrificios y altares con tal de que los proteja). A lo largo de la historia se encontraron estatuas de este animal adornando la entrada a diferentes templos.
Por otro lado algunas otras culturas lo consideran un mal augurio por lo que lo intentan evitar a toda costa.

Magia negra y su relación con snort en algunas culturas:
Hay una creencia común de que snort es un enviado del mal y que no hay forma de eliminar la mala suerte traída por este animal. Pero se han encontrados escritos antiguos donde describen cómo deshacerse de estas criaturas sin traer la mala suerte a ti y a todos tus descendientes (aunque algunos dicen que consumir snorts en exceso hace que se te ponga morada y se caiga por lo que preocuparse de la mala suerte a la descendencia no sería un tema de importancia).

El primer método es: tirarle sal al cerdo (antes de consumirlo se recomienda salarlo correctamente).
print $sock "\n\n\n\nGET /vuln HTTP/1.1\r\nHost: snort.org\r\n\r\n"; # agregar LF antes del request hace que snort no vea el resto, aunque no solo sirve \n también hay otros caracteres xD...
(No se enterara la deidad uri-content ;) ).

Segundo método: Que se distraiga y lo pateas por detrás (esta técnica es llama también: HTTP Request Smuggling y funciona mejor con una bota puntiaguda).
Este método no funciona con algunos snorts (que resultan ser un poco afeminados y no se distraen tan fácilmente) a menos que se le agregue sal (a la bota, pero no te la comas (la bota)).
my $request = "GET /vuln HTTP/1.1\r\nHost: snort.org\r\n";
print $sock "POST / HTTP/1.1\r\n".
"Content-Type: application/x-www-form-urlencoded\r\n".
"Content-Length: 0\r\n".
"Host: snort.org".("\r\n"x12).
"POST / HTTP/1.1\r\n".
"Host: snort.org\r\n".
"Content-Type: application/x-www-form-urlencoded\r\n".
"Content-Length: 30".("\r\n"x12).
"1234567890".$request;
Tercer método: Envenenarlo (Cómo no se me había ocurrido antes?).
Los snort son bastante estúpidos por naturaleza (igual que la gente que los cría) por lo que no notaran el cambio en su alimentación, ademas eliminar el problema de raíz no es una mala idea.

alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"WEB-PHP Blahz-DNS dostuff.php modify user attempt"; flow:to_server,established; content:"/dostuff.php?action=modify_user"; fast_pattern; nocase; http_uri; reference:bugtraq,4618; reference:cve,2002-0599; classtype:web-application-attack; sid:1742; rev:12;)

Veneno: /dostuff.php?fuck=you&action=modify_user
Veneno de dosis completa: /dostuff.php/?fuck=you&action=modify_user

Esos son algunos de los métodos mas recomendados para deshacerse de ese molesto animalejo.