PDF de programación - Una vulnerabilidad en Google AdSense. Extracción automática de enlaces de anuncios

Imágen de pdf Una vulnerabilidad en Google AdSense. Extracción automática de enlaces de anuncios

Una vulnerabilidad en Google AdSense. Extracción automática de enlaces de anunciosgráfica de visualizaciones

Publicado el 26 de Abril del 2017
579 visualizaciones desde el 26 de Abril del 2017
478,7 KB
10 paginas
Creado hace 4a (29/09/2015)
Título: Una vulnerabilidad en Google AdSense. Extracción automática de enlaces de anuncios.

Prof. Dr. Manuel Blázquez Ochando. Departamento de Biblioteconomía y Documentación.
Facultad de Ciencias de
la Documentación. Universidad Complutense de Madrid.
manublaz@ucm.es

Resumen: Partiendo de técnicas de XSS (Cross Site Scripting) y de Web Crawler es posible
superar las barreras del sistema de anuncios de Google Adsense, obteniendo los enlaces
validados de los anuncios publicados en un sitio web. Este método implica la obtención del
código fuente construido por el applet de java de Google para la publicación de anuncios, su
manipulación y final recuperación de enlaces. Una vez obtenidos los enlaces de los anuncios,
pueden aprovecharse las sesiones de los usuarios que visitan otras páginas web para cargar, en
segundo plano, mediante re-direccionamiento sencillo, al marco de un iframe oculto dichos
enlaces, de forma que las direcciones IP que efectúan los clics sean diferentes en cada caso.

Palabras clave: Google Adsense, Vulnerabilidad, Cross Site Scripting, XSS, anuncios, PPC, Pay
per click



Introducción
La correcta encriptación y codificación de los anuncios publicados por terceros resulta un
problema relevante para lograr la confianza y fiabilidad de los anunciantes en los sistemas de
pago por clic. Con este método, la empresa anunciadora retribuye a las páginas web que
publican sus anuncios, siempre y cuando los usuarios hagan clic en ellos, de forma proporcional
y transparente a su número de visitas y validación. Este sistema es utilizado por Google Adsense,
el servicio de publicidad de Google, que se encarga de gestionar los anuncios adecuados para
cada página web y perfil de usuario. Al estudiar el sistema de anuncios de Google, cabe formular
diversas preguntas ¿Cuál es el nivel de seguridad de los anuncios? ¿Pueden obtenerse los
enlaces automáticamente? ¿Es posible hacer clic de forma automática en los anuncios
obtenidos? En el artículo de (Mann, C.C. 2006) publicado en la revista Wired, se destaca la
desconfianza generada a causa del fraude de clics en los sistemas de anuncios como Google
AdSense. En concreto, se expone la hipótesis de que existen robots capaces de inflar el número
de clics que reciben los anuncios publicados en una página web, permitiendo el lucro de la
plataforma anunciadora.

Para responder a estas preguntas, se ha desarrollado una prueba de seguridad que combina
técnicas de Cross Site Scripting (XSS) y de Web Crawler para superar las barreras del sistema
hasta la obtención de los enlaces validados y legítimos generados por Google Adsense durante
la visita de un usuario en una página web. El resultado obtenido fue positivo y en octubre de
2013 se inició una ronda de contactos con Google para advertir del agujero de seguridad
detectado y colaborar en la resolución del mismo. En enero de 2014 Google no quiso afirmar ni
desmentir el problema, por lo que a día de hoy sigue sin ser resuelto. El presente artículo
pretende llamar la atención al respecto de este tipo de vulnerabilidades para que puedan ser
resueltas y tenidas en consideración por su peligrosidad.
Metodología
La vulnerabilidad de Google Adsense se puede secuenciar en dos fases. 1) Obtener los enlaces
de los anuncios originales de un sitio web de forma automática. 2) Ejecutar clics automáticos
sobre los anuncios obtenidos.



1) Obtener los enlaces de los anuncios originales de un sitio web de forma automática

El objetivo de la vulnerabilidad son todas aquellas páginas web que contengan anuncios de texto
de Google Adsense. En todo caso, los enlaces de los anuncios no son visibles si se observa el
código fuente de la página web. Sin embargo, si se analiza el elemento web correspondiente al
anuncio mediante un navegador DOM, sí es posible comprobar la dirección URL del enlace. Por
tanto, existen mecanismos de seguridad en Google AdSense que permiten construir los
elementos HTML de los anuncios mediante DOM y Java, una vez ha sido cargado el sitio web en
el navegador del cliente. De esta forma, se explica que los enlaces de los anuncios no sean
visibles en el código fuente de la página, aunque en realidad estén presentes. Esta medida de
seguridad está diseñada para evitar que puedan obtenerse los enlaces de forma automática,
considerándose una técnica inatacable según (GANDHI, M.; JAKOBSSON, M.; RATKIEWICZ, J.
2006, p.134). Por desgracia, sí es posible superar esta barrera; basta con obtener el código
fuente de la página web objetivo y detectar el código de Google AdSense, véase figura 1.

google_ad_client = "pub-1229649499684927";
google_ad_channel = "ANUNCIOS.COM"
google_ad_type = "text";
google_max_num_ads = 3;
google_language = "es";
google_safe = "high";
google_encoding = "utf8";
google_ad_width = 336;
google_ad_height = 280;
google_ad_format = "336x280_as";
google_color_border = "EEEEEE";
google_color_bg = "EEEEEE";
google_color_link = "000066";
google_color_text = "000000";
google_color_url = "CC0000";

<div id="GoogleAdSense">
<script language="JavaScript" type="text/javascript">



</script>
<div id="GoogleAd">
<span>Enlaces patrocinados</span>
<script language="JavaScript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"
type="text/javascript"></script>
</div>
</div>
Figura 1. Código java de Google AdSense

El archivo con extensión de java “show_ads.js” es el encargado de embeber los anuncios en el
código HTML de la página web objetivo una vez ésta ha sido cargada por completo en el
navegador. No obstante, no los añade directamente, sino que introduce dos ventanas marco
<iframe> a las que denominaremos “Iframe 1” e “Iframe 2”, véase figura 2.

<!-- Iframe 1 -->
<iframe width="0" height="0" frameborder="0" marginwidth="0" marginheight="0" vspace="0"
hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" style="display:none"
id="google_esf" name="google_esf"
src="http://googleads.g.doubleclick.net/pagead/html/r20140904/r20140417/zrt_lookup.html"></ifr
ame>

<!-- Iframe 2 -->
<iframe id="google_ads_frame1" name="google_ads_frame1" width="336" height="280"
frameborder="0" src="http://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-
1229649499684927&amp;format=336x280_as&amp;output=html&amp;h=280&amp;adk=3476478377&amp;w=336&
amp;lmt=1410413197&amp;num_ads=3&amp;channel=ANUNCIOS.COM&amp;ad_type=text&amp;color_bg=EEEEEE
&amp;color_border=EEEEEE&amp;color_link=000066&amp;color_text=000000&amp;color_url=CC0000&amp;
oe=utf8&amp;flash=14.0.0&amp;hl=es&amp;url=http%3A%2F%2Flocalhost%2Fvigilante%2Fexploits%2Fexp
loit2.php&amp;adsafe=high&amp;dt=1410420397140&amp;bpp=10&amp;bdt=23&amp;shv=r20140904&amp;cbv
=r20140417&amp;saldr=sa&amp;correlator=8467094044672&amp;frm=20&amp;ga_vid=482323067.141042039
7&amp;ga_sid=1410420397&amp;ga_hid=2126412725&amp;ga_fc=0&amp;u_tz=120&amp;u_his=2&amp;u_java=
1&amp;u_h=900&amp;u_w=1600&amp;u_ah=856&amp;u_aw=1600&amp;u_cd=24&amp;u_nplug=14&amp;u_nmime=1
00&amp;dff=times%20new%20roman&amp;dfs=16&amp;adx=8&amp;ady=8&amp;biw=1600&amp;bih=795&amp;eid
=317150304%2C317150313&amp;oid=3&amp;rx=0&amp;eae=0&amp;fc=8&amp;brdim=0%2C0%2C0%2C0%2C1600%2C
0%2C1600%2C856%2C1600%2C795&amp;vis=1&amp;abl=CS&amp;ppjl=u&amp;fu=0&amp;ifi=1&amp;xpc=EvP9Cmk
S4y&amp;p=http%3A//localhost&amp;dtd=50" marginwidth="0" marginheight="0" vspace="0"
hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true"></iframe>

Figura 2. Inserción de iframes de show_ads.js

El Iframe 1 contiene un método de verificación de la concordancia e integridad del código de
Google AdSense dentro de la página web en la que se está cargando (Linden, J.; Teeter, T. 2006).
Este sistema asigna el identificador de anuncio y usuario necesarios para ejecutar el código
inserto en el Iframe 2, dificultando así manipulaciones en el código fuente de los anuncios para
su extracción automática. Por otra parte, el Iframe 2 carga una página web dinámica que
contiene los anuncios propiamente dichos. Por tanto, para que la carga de los anuncios en el
Iframe 2 sea validada y permitida por el Iframe 1, se necesita ejecutar todo el código de Google
AdSense y posteriormente extraer el enlace de la página web dinámica del Iframe 2. Para ello es
posible utilizar técnicas de XSS y JavaScript. En concreto, se añade a la capa “GoogleAdSense”

un formulario denominado “technical1” con un campo que almacene la dirección URL del Iframe
2. Esto se consigue mediante las instrucciones que se muestran en la figura 3.


Método de reemplazo del código fuente de la página web objetivo. Se puede apreciar cómo
la capa GoogleAdSense es reescrita junto con el formulario “technical1” que servirá de
recipiente de datos.

$html1 = preg_replace("/<div id=\"GoogleAdSense\">/", "<div id=\"GoogleAdSense\"> + Formulario
technical1", $html1);


Formulario “technical1”, introducido dentro de la capa “GoogleAdSense” que contiene el
área de texto “code1”, en el que se almacenará la dirección URL del “Iframe2”, una vez éste
se ejecute en la página web.

<div id="GoogleAdSense">
<div>
<form name='technical1' action='$_SERVER[PHP_SELF]' method='post'>
<textarea id='code1' name='code1'></textarea>
</form>
</div>
</div>


Código JavaScript para extraer la dirección URL del “Iframe2”, copiarla y pegarla en el área de
texto “code1” del formulario “technical1”.

<script>
window.onload = init;
function init() {
document.getElementById('code1').value=document.getElementById('google_ads_frame1').src;
document.technical1.submit();
}
</script>

Figura 3. Código para extraer el enlace del Iframe 2

El script de la figura 3 se ejecuta un
  • Links de descarga
http://lwp-l.com/pdf3221

Comentarios de: Una vulnerabilidad en Google AdSense. Extracción automática de enlaces de anuncios (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad