Buenos días!
El otro día os enseñe como modificar la base de datos de triviados para ganar siempre en un dispositivo iOS.
Pues he seguido trasteando con otras apps, entre ella facebook. Y me he dado cuenta de que en la base de datos que guarda en nuestro dispositivo, guarda también los emails de nuestros amigos de facebook! Sí, los emails que usan para acceder a su cuenta!
Esto podría facilitar que se realizase phishing enviando un email..
Pero donde esta la base de datos? Como la obtengo? Si leiste la entrada de triviados ya sabrás como conseguir la base de datos de facebook de tu iPhone.
Por tanto, necesitaremos iTools 2013 para acceder a los archivos de las apps de nuestro dispositivo. Accedemos a los archivos de Facebook (como ya se dijo en el post de Triviados). Una vez dentro, la base de datos que nos interesa se encuentra en: "/Library/Caches". Y es el archivo llamado "fbsyncstore.db". Para poder abrirlo, ya sabéis, arrastramos al escritorio y lo abrimos con SQLite Manager (extensión de Firefox).
Una vez abierto, la tabla que nos interesa, es la llamada "contact_points". En esta tabla tenemos los emails de nuestros contactos e incluso los teléfonos móviles. Como podréis ver, en la tabla no hay columna de nombre o apellidos, solo de ID, así que nos es fácil ver a quien pertenece cada email.. Pero tenemos una tabla llamada "people" que si tiene relacionados los IDs y los nombres y apellidos.. Así que con una simple consulta SQL podemos ver fácilmente a quien corresponde cada email. Esta consulta, por ejemplo:
SELECT first, last, value FROM contact_points E, people P where contact_point_id like '%contact_email%' and P.person_id=E.person_id
Y nos dará un resultado como este:
Y esto es todo! Me parecía curioso e interesante publicar esto :)
Espero les haya gustado!
Un saludo y hasta la próxima!
Blog sobre seguridad Informática escrito por un novato. Todos empezamos siendo novatos, aprendiendo poco a poco! También podéis seguirme en Twitter: @alberto__segura
viernes, 6 de septiembre de 2013
domingo, 1 de septiembre de 2013
Ganando SIEMPRE a Atriviate (Triviados) en iOS (iPhone/iPad/iPod)
Buenas tardes a todos! Después de tanto tiempo sin escribir nada, hoy os voy a enseñar como ganar siempre en Atriviate(Triviados) para iOS. Aunque puede aplicarse a cualquier las app de iOS.
Para hacer esto necesitaremos usar Windows, el programa para gestión de dispositivos iOS iTools 2013 y SQLite Manager (plugin para Firefox).
Lo primero es conectar por USB nuestro dispositivo iOS. Una vez conectado cerramos iTunes si se ha abierto e iniciamos el iTools.
En el menu de la izquierda nos vamos al apartado "Applications", y nos aparecera una lista con las apps que tenemos instaladas.
Buscamos Atriviate, hacemos click sobre ella y despues hacemos click sobre el boton "Browse".
A continuación se nos abre una ventana dentro del iTools con la carpeta en la que esta instalada la app. Debeis saber que las bases de datos que usan las apps están en "/Documents" y son archivos .sqlite. En esta entrada nos vamos a centrar en la base de datos, pero podéis mirar mas archivos de otros directorios según lo que busquéis (otro archivo interesante es el de preferencias, que se encuentra en "/Library/Preferences", es el único .plist que te dejará abrir)
Como se puede ver en la imagen, el archivo de base de datos que buscamos es "Model.sqlite". Ahora lo arrastramos al escritorio, para poder modificarlo con SQLite Manager. Para abrir la base de datos con SQLite Manager. Abrimos SQLite Manager y vamos a: "Archivo->Conectar Base de Datos" y abrimos el archivo Model.sqlite que guardamos en el escritorio. Ahora podemos ir viendo las tablas que forman la base de datos. Nos centraremos en la tabla "ZPREGUNTAS", en esta tabla se guardan todas las preguntas que se van solicitando al servidor. ¿Por qué? Porque la app funciona de manera que la primera vez que jugamos pide las preguntas de la categoría que nos ha tocado jugar, y este nos envía unas 20 preguntas de esa categoría. De este modo, las preguntas se guardan, y conforme se van contestando esas 20 preguntas se van eliminando, cuando no quedan mas se piden nuevas. Ya podéis ir intuyendo que es lo que vamos a hacer.. Si, lo que vamos a hacer es rellenar la tabla de preguntas con preguntas que tengan la misma respuesta como correcta. Pues como veis, en esta tabla se guarda el enunciado, las respuestas, la respuesta correcta (un numero del 1 al 4) y el id de pregunta en el servidor, entre otras cosas..
Ya sabéis lo que vamos a hacer, así que si no sabeis SQL lo mas sencillo es jugar una partida y obtener preguntas con ids validos.
Despues podéis cambiar la categoria haciendo doble click en la columna, para no tener que jugar todas las categorias de preguntas.
Una vez que tenemos al menos 1 pregunta de cada categoria(son 7 categorias, la columna categoria puede tomar valores del 1 al 7, dependiendo de la categoria), hacemos que todas las respuestas correctas sean la misma, por ejemplo, que todas sean la primera opción. Esto lo podemos hacer facilmente haciendo click en "Ejecutar SQL" y ejecutando lo siguiente:
UPDATE ZPREGUNTAS SET ZCORRECTA='1'
Y damos en "Ejecutar SQL". Una vez hecho esto todas las preguntas que tengamos en la base de datos tendrán como opción correcta la primera respuesta.
Pero hay un problema.. Si tenemos pocas preguntas en la base de datos, en cuanto se acaben se pedirán mas al servidor ... :S
Por este motivo, debemos insertar mas preguntas "personalizadas". La manera mas sencilla es usar las que ya tenemos, para repetirlas en la base de datos. Así que simplemente usamos la siguiente instrucción SQL:
INSERT INTO ZPREGUNTAS(Z_ENT ,Z_OPT, ZCATEGORIA , ZCORRECTA , ZIDPREGUNTA , ZIDIOMA , ZPREGUNTA , ZRES1 , ZRES2 , ZRES3 , ZRES4 ) SELECT Z_ENT ,Z_OPT, ZCATEGORIA , ZCORRECTA , ZIDPREGUNTA , ZIDIOMA , ZPREGUNTA , ZRES1 , ZRES2 , ZRES3 , ZRES4 FROM ZPREGUNTAS
Lo que hace es simplemente insertar en la tabla preguntas, preguntas con esas columnas (las que van entre parentesis), usando las filas (preguntas) que ya existen en la tabla. Para los que sepan de SQL, como veréis, "duplicamos" las preguntas con todos los campos excepto el campo "Z_PK", ya que este campo es la clave primaria, que como sabréis no puede ser la misma para mas de una fila.
Una vez hecho esto se nos duplican todas las preguntas, si lo repetimos varias veces tendremos mas preguntas. No os paséis porque si creáis demasiadas preguntas, la app luego irá muy lenta, pues tiene que cargar demasiadas preguntas de la base de datos.
Bien, pues ahora queda usar la nueva base de datos en la app.. pero este archivo esta protegido, así que no bastará con arrastrarlo a la capeta "/Documents" de la app y reemplazar la antigua (si lo probáis veréis que da error). El único modo es crear un backup de la app usando iTools.
Usando la opción que veis en la imagen "Backup program and documents". Esto nos generará un archivo IPA en nuestro escritorio. Lo que haremos será abrirlo con WinRar y entrar en la carpeta "/Container/Documents" y ahora arrastramos nuestra nueva base de datos con nuestras preguntas al archivo, lo que reemplazará la base de datos que se guardo en el backup. Y ya simplemente eliminamos nuestra app del dispositivo y despues instalamos el backup en nuestro dispositivo, arrastrando el archivo IPA a iTools.
Una vez se haya instalado la app, podremos usarla como siempre y podremos ganar siempre respondiendo con la primera opción :)
He escrito un poco a prisa y corriendo esta entrada, así que espero que sea entendible para todos. Si tienen algún problema diganlo por comentarios. No sean malos!! :P
Para hacer esto necesitaremos usar Windows, el programa para gestión de dispositivos iOS iTools 2013 y SQLite Manager (plugin para Firefox).
Lo primero es conectar por USB nuestro dispositivo iOS. Una vez conectado cerramos iTunes si se ha abierto e iniciamos el iTools.
En el menu de la izquierda nos vamos al apartado "Applications", y nos aparecera una lista con las apps que tenemos instaladas.
Buscamos Atriviate, hacemos click sobre ella y despues hacemos click sobre el boton "Browse".
A continuación se nos abre una ventana dentro del iTools con la carpeta en la que esta instalada la app. Debeis saber que las bases de datos que usan las apps están en "/Documents" y son archivos .sqlite. En esta entrada nos vamos a centrar en la base de datos, pero podéis mirar mas archivos de otros directorios según lo que busquéis (otro archivo interesante es el de preferencias, que se encuentra en "/Library/Preferences", es el único .plist que te dejará abrir)
Como se puede ver en la imagen, el archivo de base de datos que buscamos es "Model.sqlite". Ahora lo arrastramos al escritorio, para poder modificarlo con SQLite Manager. Para abrir la base de datos con SQLite Manager. Abrimos SQLite Manager y vamos a: "Archivo->Conectar Base de Datos" y abrimos el archivo Model.sqlite que guardamos en el escritorio. Ahora podemos ir viendo las tablas que forman la base de datos. Nos centraremos en la tabla "ZPREGUNTAS", en esta tabla se guardan todas las preguntas que se van solicitando al servidor. ¿Por qué? Porque la app funciona de manera que la primera vez que jugamos pide las preguntas de la categoría que nos ha tocado jugar, y este nos envía unas 20 preguntas de esa categoría. De este modo, las preguntas se guardan, y conforme se van contestando esas 20 preguntas se van eliminando, cuando no quedan mas se piden nuevas. Ya podéis ir intuyendo que es lo que vamos a hacer.. Si, lo que vamos a hacer es rellenar la tabla de preguntas con preguntas que tengan la misma respuesta como correcta. Pues como veis, en esta tabla se guarda el enunciado, las respuestas, la respuesta correcta (un numero del 1 al 4) y el id de pregunta en el servidor, entre otras cosas..
Ya sabéis lo que vamos a hacer, así que si no sabeis SQL lo mas sencillo es jugar una partida y obtener preguntas con ids validos.
Despues podéis cambiar la categoria haciendo doble click en la columna, para no tener que jugar todas las categorias de preguntas.
Una vez que tenemos al menos 1 pregunta de cada categoria(son 7 categorias, la columna categoria puede tomar valores del 1 al 7, dependiendo de la categoria), hacemos que todas las respuestas correctas sean la misma, por ejemplo, que todas sean la primera opción. Esto lo podemos hacer facilmente haciendo click en "Ejecutar SQL" y ejecutando lo siguiente:
UPDATE ZPREGUNTAS SET ZCORRECTA='1'
Y damos en "Ejecutar SQL". Una vez hecho esto todas las preguntas que tengamos en la base de datos tendrán como opción correcta la primera respuesta.
Pero hay un problema.. Si tenemos pocas preguntas en la base de datos, en cuanto se acaben se pedirán mas al servidor ... :S
Por este motivo, debemos insertar mas preguntas "personalizadas". La manera mas sencilla es usar las que ya tenemos, para repetirlas en la base de datos. Así que simplemente usamos la siguiente instrucción SQL:
INSERT INTO ZPREGUNTAS(Z_ENT ,Z_OPT, ZCATEGORIA , ZCORRECTA , ZIDPREGUNTA , ZIDIOMA , ZPREGUNTA , ZRES1 , ZRES2 , ZRES3 , ZRES4 ) SELECT Z_ENT ,Z_OPT, ZCATEGORIA , ZCORRECTA , ZIDPREGUNTA , ZIDIOMA , ZPREGUNTA , ZRES1 , ZRES2 , ZRES3 , ZRES4 FROM ZPREGUNTAS
Lo que hace es simplemente insertar en la tabla preguntas, preguntas con esas columnas (las que van entre parentesis), usando las filas (preguntas) que ya existen en la tabla. Para los que sepan de SQL, como veréis, "duplicamos" las preguntas con todos los campos excepto el campo "Z_PK", ya que este campo es la clave primaria, que como sabréis no puede ser la misma para mas de una fila.
Una vez hecho esto se nos duplican todas las preguntas, si lo repetimos varias veces tendremos mas preguntas. No os paséis porque si creáis demasiadas preguntas, la app luego irá muy lenta, pues tiene que cargar demasiadas preguntas de la base de datos.
Bien, pues ahora queda usar la nueva base de datos en la app.. pero este archivo esta protegido, así que no bastará con arrastrarlo a la capeta "/Documents" de la app y reemplazar la antigua (si lo probáis veréis que da error). El único modo es crear un backup de la app usando iTools.
Usando la opción que veis en la imagen "Backup program and documents". Esto nos generará un archivo IPA en nuestro escritorio. Lo que haremos será abrirlo con WinRar y entrar en la carpeta "/Container/Documents" y ahora arrastramos nuestra nueva base de datos con nuestras preguntas al archivo, lo que reemplazará la base de datos que se guardo en el backup. Y ya simplemente eliminamos nuestra app del dispositivo y despues instalamos el backup en nuestro dispositivo, arrastrando el archivo IPA a iTools.
Una vez se haya instalado la app, podremos usarla como siempre y podremos ganar siempre respondiendo con la primera opción :)
He escrito un poco a prisa y corriendo esta entrada, así que espero que sea entendible para todos. Si tienen algún problema diganlo por comentarios. No sean malos!! :P
miércoles, 24 de julio de 2013
phpTuenti API
Buenos días!
Después de bastante tiempo si escribir nada, hoy escribo para compartir con vosotros una pequeña API no oficial en PHP para Tuenti hecha por mi.
El enlace a GitHub: https://github.com/segura2010/phpTuenti
Ahí tienen la API y para cada función una breve descripción.
Espero que les sea útil :)
Si alguien quiere añadir algo a la API o modificar algo para mejorarla puede decirlo y colaborar :)
Por cierto, como alguno me comentó cuando hice la API para Python que por que no le ponía una licencia, he decidido añadirle una licencia Creative Commons a la API !
Intentaré escribir con mas frecuencia!! Hasta la próxima! :)
Después de bastante tiempo si escribir nada, hoy escribo para compartir con vosotros una pequeña API no oficial en PHP para Tuenti hecha por mi.
El enlace a GitHub: https://github.com/segura2010/phpTuenti
Ahí tienen la API y para cada función una breve descripción.
Espero que les sea útil :)
Si alguien quiere añadir algo a la API o modificar algo para mejorarla puede decirlo y colaborar :)
Por cierto, como alguno me comentó cuando hice la API para Python que por que no le ponía una licencia, he decidido añadirle una licencia Creative Commons a la API !
Intentaré escribir con mas frecuencia!! Hasta la próxima! :)
jueves, 30 de mayo de 2013
Vulnerabilidad XSS en el Nuevo Minijuegos
Hola a todos! Llevo tiempo sin escribir, ya que estoy algo liado con examenes y prácticas.. Pero saco algo de hueco para relajarme un momento y contaros una nueva vulnerabilidad que acabo de encontrar en Minijuegos.com
Como sabréis, han rediseñado toda su web, y con los cambios que han realizado se han dejado un XSS! ¿Donde está el XSS? Donde suelen estar todos! En el buscador!! El vector utuilizado es uno que me gusta bastante:
";alert('XSS');</script>
Como veis, lo que ocurre es que al añadir nuestra url de búsqueda en un script y no filtrar comillas ni nada pues podemos cerrar la inicialización de la variable y colocar nuestro código JavaScript! Después de añadir nuestro código, simplemente cerramos el script para evitar de manera fácil y rápida errores de sintaxis en nuestro código que produzcan que no se ejecute.
El fallo ha sido reportado a Minijuegos.com y arreglado.. Link con el ejemplo:(http://goo.gl/4uVUU) (Ya no funciona)
Actualización: Ya se ha corregido el fallo. Muy simpatico el chico que contestó al email! Me han regalado gemas de Minijuegos!! :D
Espero les haya resultado interesante!
Hasta la próxima!!
Como sabréis, han rediseñado toda su web, y con los cambios que han realizado se han dejado un XSS! ¿Donde está el XSS? Donde suelen estar todos! En el buscador!! El vector utuilizado es uno que me gusta bastante:
";alert('XSS');</script>
Como veis, lo que ocurre es que al añadir nuestra url de búsqueda en un script y no filtrar comillas ni nada pues podemos cerrar la inicialización de la variable y colocar nuestro código JavaScript! Después de añadir nuestro código, simplemente cerramos el script para evitar de manera fácil y rápida errores de sintaxis en nuestro código que produzcan que no se ejecute.
El fallo ha sido reportado a Minijuegos.com y arreglado.. Link con el ejemplo:(http://goo.gl/4uVUU) (Ya no funciona)
Actualización: Ya se ha corregido el fallo. Muy simpatico el chico que contestó al email! Me han regalado gemas de Minijuegos!! :D
Espero les haya resultado interesante!
Hasta la próxima!!
sábado, 13 de abril de 2013
XSS en Tuenti. Capitulo 5: Mensajes Privados.
Muy buenas a todos! Hace muchisimo que no escribo.. Perdonad por dejar abandonadillo el blog.. espero ir escribiendo mas a menudo ! :)
Hoy os voy a hablar de un nuevo XSS en Tuenti! Empezamos!
La vulnerabilidad XSS a tratar se encuentra en el sistema de Mensajes
Privados.
Como bien sabemos los los mensajes privados permiten añadir enlaces a otras
webs. Si aprovechamos esta funcionalidad podemos obtener una vulnerabilidad
del tipo XSS. Como se puede ver en la imagen de abajo podemos ejecutar
código malicioso usando el siguiente vector de ataque:
http://cualquierDominio/algoPorAqui"onmouseover="alert(/XSS/);"
Como vemos usamos las comillas para cerrar la propiedad “href” y a
continuación poder añadir el código malicioso deseado..
Puede parecer una vulnerabilidad no muy peligrosa, pero como ya se vio en el
XSS en MySpace (http://elladodelnovato.blogspot.com.es/2013/01/vulnerabilidad-xss-en-el-nuevo-myspace.html) pueden modificarse los estilos del enlace usando la propiedad “style” para
modificar el texto y colocarlo al comienzo, con una letra mucho mas grande y
transparente, de manera que sea mucho mas fácil que el usuario pase por
encima del enlace, sin darse ni cuenta.
Además tenemos una restricción, si en algún momento colocamos un espacio,
la url se corta y el sistema no lo añade al enlace, por lo que hay que poner todo
seguido, sin espacios. Aunque esto no debería ser un gran problema :)
Esta vulnerabilidad la he encontrado hoy mismo! He enviado un email informando del problema y no he recibido respueta, aunque si que han reparado ya la vulnerabilidad.. Así que desde aquí decir que me ha encantado su forma de agradecer, y no solo eso, sino que me parece lamentable que ni siquiera hayan respondido para decir que iban a mirarlo..
Así que un poco enfadado he decidido no solo publicarlo ya (ya que esta "solucionado"), sino publicar la forma de volver a explotar el XSS, ya que esta arreglado de forma CHAPUCERA..
Lo único que hay que hacer es usar el mismo vector pero con la siguiente modificación:
http://cualquierDominio/algoPorAqui"onmouseover=alert(/XSS/)//
Como vemos ahora la propiedad "href" no es la que falla, sino que es la propiedad "data-on-click-label" , que además nos añade una dificultad (por la cual tenemos que añadir las "//" al final de nuestro vector de ataque), esta dificultad como podéis ver es que nos deja las comillas de cierre de la propiedad.. Como veis, poniendo las dos barritas (//) evitamos que no se ejecute el javascript por error.. ya que lo que hacemos es usar las barritas para que tome como comentario las comillas y no haya errores. Y ya tenemos nuestro XSS funcionando de nuevo! ;)
Me parece muy lamentable que no hayan comprobado que se filtraba bien y que no había otra propiedad que fallaba..
ACTUALIZACIÓN: Acabo de recibir un email de respuesta de un trabajador de Tuenti agradeciendo la colaboración y explicandome lo ocurrido.. Debo decir que por una parte comprendo que no respondiesen, ya que era sábado por la mañana.. es más, pensé que ni siquiera lo arreglarían y pensaba no publicarlo hasta el martes para darles tiempo, pues entendía que siendo fin de semana sería más complicado. Pero sigo pensando que si se preocuparon de arreglarlo también podrían haber enviado un email en el que simplemente informasen de que iban a mirarlo, no pido nada mas.. Para yo saber si realmente les ha llegado el email (ya me ha pasado en otra ocasión que no les llegó). Así que entiendo que en fin de semana estuviesen justos de tiempo y tal, pero si te pones arreglarlo lo primero (en mi opinión) es arreglarlo bien, no a medias.. y avisar de que has recibido el email y vas a mirarlo.. En todo caso, decir que me parece bien que hayan sacado tiempo para arreglarlo antes que nada, preocupandose de la seguridad de sus usuarios.
Espero volver pronto a escribir una nueva entrada y no volver a dejar abandonado el blog!! Un saludo y hasta la proxima!! :)
Hoy os voy a hablar de un nuevo XSS en Tuenti! Empezamos!
La vulnerabilidad XSS a tratar se encuentra en el sistema de Mensajes
Privados.
Como bien sabemos los los mensajes privados permiten añadir enlaces a otras
webs. Si aprovechamos esta funcionalidad podemos obtener una vulnerabilidad
del tipo XSS. Como se puede ver en la imagen de abajo podemos ejecutar
código malicioso usando el siguiente vector de ataque:
http://cualquierDominio/algoPorAqui"onmouseover="alert(/XSS/);"
Como vemos usamos las comillas para cerrar la propiedad “href” y a
continuación poder añadir el código malicioso deseado..
Puede parecer una vulnerabilidad no muy peligrosa, pero como ya se vio en el
XSS en MySpace (http://elladodelnovato.blogspot.com.es/2013/01/vulnerabilidad-xss-en-el-nuevo-myspace.html) pueden modificarse los estilos del enlace usando la propiedad “style” para
modificar el texto y colocarlo al comienzo, con una letra mucho mas grande y
transparente, de manera que sea mucho mas fácil que el usuario pase por
encima del enlace, sin darse ni cuenta.
Además tenemos una restricción, si en algún momento colocamos un espacio,
la url se corta y el sistema no lo añade al enlace, por lo que hay que poner todo
seguido, sin espacios. Aunque esto no debería ser un gran problema :)
Esta vulnerabilidad la he encontrado hoy mismo! He enviado un email informando del problema y no he recibido respueta, aunque si que han reparado ya la vulnerabilidad.. Así que desde aquí decir que me ha encantado su forma de agradecer, y no solo eso, sino que me parece lamentable que ni siquiera hayan respondido para decir que iban a mirarlo..
Así que un poco enfadado he decidido no solo publicarlo ya (ya que esta "solucionado"), sino publicar la forma de volver a explotar el XSS, ya que esta arreglado de forma CHAPUCERA..
Lo único que hay que hacer es usar el mismo vector pero con la siguiente modificación:
http://cualquierDominio/algoPorAqui"onmouseover=alert(/XSS/)//
Como vemos ahora la propiedad "href" no es la que falla, sino que es la propiedad "data-on-click-label" , que además nos añade una dificultad (por la cual tenemos que añadir las "//" al final de nuestro vector de ataque), esta dificultad como podéis ver es que nos deja las comillas de cierre de la propiedad.. Como veis, poniendo las dos barritas (//) evitamos que no se ejecute el javascript por error.. ya que lo que hacemos es usar las barritas para que tome como comentario las comillas y no haya errores. Y ya tenemos nuestro XSS funcionando de nuevo! ;)
Me parece muy lamentable que no hayan comprobado que se filtraba bien y que no había otra propiedad que fallaba..
ACTUALIZACIÓN: Acabo de recibir un email de respuesta de un trabajador de Tuenti agradeciendo la colaboración y explicandome lo ocurrido.. Debo decir que por una parte comprendo que no respondiesen, ya que era sábado por la mañana.. es más, pensé que ni siquiera lo arreglarían y pensaba no publicarlo hasta el martes para darles tiempo, pues entendía que siendo fin de semana sería más complicado. Pero sigo pensando que si se preocuparon de arreglarlo también podrían haber enviado un email en el que simplemente informasen de que iban a mirarlo, no pido nada mas.. Para yo saber si realmente les ha llegado el email (ya me ha pasado en otra ocasión que no les llegó). Así que entiendo que en fin de semana estuviesen justos de tiempo y tal, pero si te pones arreglarlo lo primero (en mi opinión) es arreglarlo bien, no a medias.. y avisar de que has recibido el email y vas a mirarlo.. En todo caso, decir que me parece bien que hayan sacado tiempo para arreglarlo antes que nada, preocupandose de la seguridad de sus usuarios.
Espero volver pronto a escribir una nueva entrada y no volver a dejar abandonado el blog!! Un saludo y hasta la proxima!! :)
sábado, 2 de marzo de 2013
XSS Persistente en Steam
Hola de nuevo!
Hoy os traigo una vulnerabilidad XSS en la web de Steam. La vulnerabilidad se encuentra en los títulos de los anuncios de grupos. Así que si ponemos código en el título conseguiremos que se inyecte (esperad un poco para ver donde! Impacientes xD ). Aquí tenéis una imagen para explicar donde hay que poner el código.
Una vez tenemos nuestro anuncio de grupo, al aceptarlo todos los participantes del grupo recibirán una notificación del anuncio. Pero lo que nos interesa es el panel de novedades del usuario, ya que los usuarios que estén suscritos al grupo verán en su panel de novedades el anuncio del grupo y.. si, aquí está el XSS. Les dejo imagenes del XSS tanto usando un navegador como usando el cliente de Steam. ;)
Bueno, pues el fallo ha sido reportado a Steam y aún no ha sido corregido, pero un empleado de Steam ha respondido al reporte y me gustaría compartir su respuesta, a ver si es que yo soy un poco tonto o que pasa..
Y esto es todo por hoy, espero que les haya gustado :)
ATENCIÓN: No me hago responsable del uso de la información aquí publica. El único objetivo de este blog es informar y enseñar.
Hoy os traigo una vulnerabilidad XSS en la web de Steam. La vulnerabilidad se encuentra en los títulos de los anuncios de grupos. Así que si ponemos código en el título conseguiremos que se inyecte (esperad un poco para ver donde! Impacientes xD ). Aquí tenéis una imagen para explicar donde hay que poner el código.
Una vez tenemos nuestro anuncio de grupo, al aceptarlo todos los participantes del grupo recibirán una notificación del anuncio. Pero lo que nos interesa es el panel de novedades del usuario, ya que los usuarios que estén suscritos al grupo verán en su panel de novedades el anuncio del grupo y.. si, aquí está el XSS. Les dejo imagenes del XSS tanto usando un navegador como usando el cliente de Steam. ;)
Bueno, pues el fallo ha sido reportado a Steam y aún no ha sido corregido, pero un empleado de Steam ha respondido al reporte y me gustaría compartir su respuesta, a ver si es que yo soy un poco tonto o que pasa..
Y esto es todo por hoy, espero que les haya gustado :)
ATENCIÓN: No me hago responsable del uso de la información aquí publica. El único objetivo de este blog es informar y enseñar.
lunes, 18 de febrero de 2013
XSS en Series.ly y un interesante vector
Hola a todos!
Hoy os traigo un XSS no persistente en Series.ly. Esta vulnerabilidad se encuentra en el buscador.
El vector usado es el siguiente:
'};alert('segura201093');</script>
Aquí una imagen con la que se ve claramente lo que ocurre:
Como podéis ver, estamos dentro de un script, asique simplemente cerramos la comilla y la llave. De este modo, podemos añadir nuestro código Javascript y ejecutarlo. Cerramos la parte de javascript con la etiqueta "</script>" para que se ejecute nuestro código, y que no de error al encontrar lo que le seguía a la variable que cerramos.
Quería comentar este vector, por que me parece interesante, y por que he visto algunos vectores del tipo:
";</script><script>alert(1);</script>
Estos vectores debo de reconocer que me parecen bastante absurdos.. ya que si lo que quieres es ejecutar javascript me parece absurdo que quieras salir del código javascript para después volver a hacerte uno tu.. Además si aprovechas que ya estás dentro de un script evitas los problemas del AntiXSS de Chrome.. Hay muchas webs vulnerables a este vector XSS, ya que nos meten la cadena de busqueda en un script para trabajar con ella. De manera que aunque pensemos que no se produce un XSS, si nos fijamos en el código fuente podemos crearnos nuestro vectores de ataque que funcionen correctamente en la web que queremos. Por eso lo que recomiendo es saber que estáis haciendo y mirar bien las partes del código en las que se incluye nuestra cadena de texto. De esta manera podremos crear nuestros propios vectores que si que pueden funcionar en la aplicación.
Cada web tiene sus características así que puede que un vector no funcione, pero si sabes que hace la web, puedes hacerte un vector bueno ;)
Y ya sabéis, si estáis dentro de un script no cerréis para luego volver a abrir el vuestro.. Aprovechad las facilidades que ya nos dan!
IMPORTANTE: La vulnerabilidad en Series.ly fue reportada pero no he recibido respuesta ni ha sido reparada. Así que no me hago responsable de lo que hagan los lectores con los conocimientos que se muestran aquí.
Espero les haya gustado y gracias por leer. :)
Hoy os traigo un XSS no persistente en Series.ly. Esta vulnerabilidad se encuentra en el buscador.
El vector usado es el siguiente:
'};alert('segura201093');</script>
Aquí una imagen con la que se ve claramente lo que ocurre:
Como podéis ver, estamos dentro de un script, asique simplemente cerramos la comilla y la llave. De este modo, podemos añadir nuestro código Javascript y ejecutarlo. Cerramos la parte de javascript con la etiqueta "</script>" para que se ejecute nuestro código, y que no de error al encontrar lo que le seguía a la variable que cerramos.
Quería comentar este vector, por que me parece interesante, y por que he visto algunos vectores del tipo:
";</script><script>alert(1);</script>
Estos vectores debo de reconocer que me parecen bastante absurdos.. ya que si lo que quieres es ejecutar javascript me parece absurdo que quieras salir del código javascript para después volver a hacerte uno tu.. Además si aprovechas que ya estás dentro de un script evitas los problemas del AntiXSS de Chrome.. Hay muchas webs vulnerables a este vector XSS, ya que nos meten la cadena de busqueda en un script para trabajar con ella. De manera que aunque pensemos que no se produce un XSS, si nos fijamos en el código fuente podemos crearnos nuestro vectores de ataque que funcionen correctamente en la web que queremos. Por eso lo que recomiendo es saber que estáis haciendo y mirar bien las partes del código en las que se incluye nuestra cadena de texto. De esta manera podremos crear nuestros propios vectores que si que pueden funcionar en la aplicación.
Cada web tiene sus características así que puede que un vector no funcione, pero si sabes que hace la web, puedes hacerte un vector bueno ;)
Y ya sabéis, si estáis dentro de un script no cerréis para luego volver a abrir el vuestro.. Aprovechad las facilidades que ya nos dan!
IMPORTANTE: La vulnerabilidad en Series.ly fue reportada pero no he recibido respuesta ni ha sido reparada. Así que no me hago responsable de lo que hagan los lectores con los conocimientos que se muestran aquí.
Espero les haya gustado y gracias por leer. :)
miércoles, 6 de febrero de 2013
API de Tuenti en Python!
Buenas Tardes a todos!
Hace algún tiempo que llevo preparando una API en Python para Tuenti. Ya esta bastante avanzada y he decidido sacarla hoy para que todo el que quiera pueda usarla!
Acepto criticas constructivas. No soy experto en Python y hacer esta API ha sido una excusa para ir aprendiendo este lenguaje. Quizá sea mejorable, y haya formas mas fáciles de hacer las cosas e incluso estoy seguro de que puede mejorarse mucho esta API. Así que todo el que tenga ideas y mejoras para la API serán bien recibidas para mejorar todo lo posible la API.
Espero que les sea útil y espero que escriban comentando si les ha servido, o si creen que algo puede mejorarse o añadirse algo.
Les dejo el link para que puedan ver mi trabajo: Tuenti for Python
Muchas Gracias por leer!
jueves, 31 de enero de 2013
#NewTuenti #NuevoTuenti XSS
Buenas a todos!
Como sabréis, Tuenti esta preparando su rediseño. De momento esta en versión Beta para que el que quiera pueda ir viendo como va quedando. Hace tiempo habilitaron los eventos en el #NuevoTuenti, y como es de esperar había XSS por todos lados... aunque ya los corrigieron. Hace poco han habilitado las páginas de Tuenti, que como os imaginareis tienen sus bonitos XSS..
El XSS del que os voy a hablar es el siguiente:
El XSS se produce por que no se filtra el nombre de la página al usarlo en la frase: "(Nombre de la página) aún no ha compartido ningún momento."
Os dejo un link directo a la página del PoC: http://www.tuenti.com/#m=Page&func=index&page_key=1_2661_67450625
Recordad que solamente se ejecutará el alert si tenéis activado el #NuevoTuenti.
Para acabar solamente decir que una red social con tantos usuarios y que quiere crecer más, creo que es una vergüenza que le pasen estas cosas.. Esta claro que un descuido lo tiene cualquiera, pero es que Tuenti SIEMPRE tiene descuidos con todas las nuevas funciones que van sacando. No demuestran tener ni una mínima preocupación por la seguridad del usuario. Creo que es algo tan simple como una función sencillita que simplemente se llama y se le pasa como argumento una cadena y la devulve arreglada. No es más, pero parece que les cuesta trabajo. Esperan a que les envíes el fallo y ya si eso lo arreglan, sino pues nada...
Así que nada, gracias por leer y hasta la próxima! :)
ATENCIÓN: No me hago responsable de lo que se haga con la información aquí publicada. Yo simplemente informo y lo que hagan los que leen es su responsabilidad.
Como sabréis, Tuenti esta preparando su rediseño. De momento esta en versión Beta para que el que quiera pueda ir viendo como va quedando. Hace tiempo habilitaron los eventos en el #NuevoTuenti, y como es de esperar había XSS por todos lados... aunque ya los corrigieron. Hace poco han habilitado las páginas de Tuenti, que como os imaginareis tienen sus bonitos XSS..
El XSS del que os voy a hablar es el siguiente:
El XSS se produce por que no se filtra el nombre de la página al usarlo en la frase: "(Nombre de la página) aún no ha compartido ningún momento."
Os dejo un link directo a la página del PoC: http://www.tuenti.com/#m=Page&func=index&page_key=1_2661_67450625
Recordad que solamente se ejecutará el alert si tenéis activado el #NuevoTuenti.
Para acabar solamente decir que una red social con tantos usuarios y que quiere crecer más, creo que es una vergüenza que le pasen estas cosas.. Esta claro que un descuido lo tiene cualquiera, pero es que Tuenti SIEMPRE tiene descuidos con todas las nuevas funciones que van sacando. No demuestran tener ni una mínima preocupación por la seguridad del usuario. Creo que es algo tan simple como una función sencillita que simplemente se llama y se le pasa como argumento una cadena y la devulve arreglada. No es más, pero parece que les cuesta trabajo. Esperan a que les envíes el fallo y ya si eso lo arreglan, sino pues nada...
Así que nada, gracias por leer y hasta la próxima! :)
ATENCIÓN: No me hago responsable de lo que se haga con la información aquí publicada. Yo simplemente informo y lo que hagan los que leen es su responsabilidad.
lunes, 28 de enero de 2013
XSRF Series.ly
Hola a todos!
Despues de un tiempo sin escribir, liado preparando examenes, he hecho un hueco para enseñarles una vulnerabilidad XSRF o CSRF en Series.ly.
Un XSRF consiste en que una web no comprueba si la petición se realiza desde ella misma, es decir, confía en que el usuario hace la petición desde alguna parte de la web propia web. La web simplemente hace uso de la cookies para aplicar los cambios al usuario que lo solicita. De este modo, podemos hacer una web maliciosa que realice una petición para cambiar datos o publicar algo en nombre del usuario. Si el usuario tiene abierta una sesión la web aceptará la petición y realizará los cambios.
Espero haberme explicado.. sino os recomiendo preguntar a Wikipedia o Google ;)
Bueno pues como digo, la web Series.ly tiene una vulnerabilidad XSRF, asique he hecho un PoC para que vean como funciona.
Si entran a su cuenta de Series.ly y con la sesión abierta entran a este link que he preparado:
http://segura2010.16mb.com/poc/seriesly.html
Entonces al entrar, sus datos (concretamente el nombre, el apellido, y el Código Postal) cambiarán.
Imaginen que les pasan un link y no saben que cambia los datos, de manera oculta los esta cambiando pero no se dan cuenta.. Estos ataques son peligrosos e interesantes.
El enlace de arriba con el PoC, lo que hace es cargar un iframe oculto que es el que envía la petición.
Espero que se haya entendido :)
Les dejo el código de los dos archivos html del PoC para que vean como funciona:
https://github.com/segura2010/XSRF-PoC/blob/master/Series.ly%20XSRF%20PoC
Cualquier duda o sugerencia dejenlo en los comentarios.
Gracias por leer! :)
Despues de un tiempo sin escribir, liado preparando examenes, he hecho un hueco para enseñarles una vulnerabilidad XSRF o CSRF en Series.ly.
Un XSRF consiste en que una web no comprueba si la petición se realiza desde ella misma, es decir, confía en que el usuario hace la petición desde alguna parte de la web propia web. La web simplemente hace uso de la cookies para aplicar los cambios al usuario que lo solicita. De este modo, podemos hacer una web maliciosa que realice una petición para cambiar datos o publicar algo en nombre del usuario. Si el usuario tiene abierta una sesión la web aceptará la petición y realizará los cambios.
Espero haberme explicado.. sino os recomiendo preguntar a Wikipedia o Google ;)
Bueno pues como digo, la web Series.ly tiene una vulnerabilidad XSRF, asique he hecho un PoC para que vean como funciona.
Si entran a su cuenta de Series.ly y con la sesión abierta entran a este link que he preparado:
http://segura2010.16mb.com/poc/seriesly.html
Entonces al entrar, sus datos (concretamente el nombre, el apellido, y el Código Postal) cambiarán.
Imaginen que les pasan un link y no saben que cambia los datos, de manera oculta los esta cambiando pero no se dan cuenta.. Estos ataques son peligrosos e interesantes.
El enlace de arriba con el PoC, lo que hace es cargar un iframe oculto que es el que envía la petición.
Espero que se haya entendido :)
Les dejo el código de los dos archivos html del PoC para que vean como funciona:
https://github.com/segura2010/XSRF-PoC/blob/master/Series.ly%20XSRF%20PoC
Cualquier duda o sugerencia dejenlo en los comentarios.
Gracias por leer! :)
martes, 15 de enero de 2013
Vulnerabilidad XSS en el Nuevo Myspace
Buenas Tardes!
Hace poco me he enterado que habian activado el nuevo diseño de MySpace, asique para descansar un poco de estudiar he entrado a verlo.. y me he encontrado un bonito XSS persistente.
El XSS proviene de que no se filtra correctamente la direccion de la pagina web que puedes añadir a tu perfil de mySpace. Solo se filtran las etiquetas HTML.. De modo que si jugamos con las comillas y los eventos Javascript.. tenemos el siguiente vector:
""onmouseover="alert('XSS')"
No se muy bien por que pero se deben poner dos comillas al principio, ya que una se pierde (probablemente en algún filtro).
Os dejo una imagen:
ATENCIÓN: No me hago responsable del uso que se le de a la información publicada en este blog. Esta información tiene como objetivo APRENDER y NO PERJUDICAR de NINGÚN modo a nadie.
Esta vulnerabilidad no ha sido arreglada por mySpace. Y tampoco he encontrado por ningún sitio una forma de ponerme en contacto con mySpace para reportar la vulnerabilidad. Si quieren que reporten vulberabilidades que pongan a la vista un lugar al que reportar.
Hace poco me he enterado que habian activado el nuevo diseño de MySpace, asique para descansar un poco de estudiar he entrado a verlo.. y me he encontrado un bonito XSS persistente.
El XSS proviene de que no se filtra correctamente la direccion de la pagina web que puedes añadir a tu perfil de mySpace. Solo se filtran las etiquetas HTML.. De modo que si jugamos con las comillas y los eventos Javascript.. tenemos el siguiente vector:
""onmouseover="alert('XSS')"
No se muy bien por que pero se deben poner dos comillas al principio, ya que una se pierde (probablemente en algún filtro).
Os dejo una imagen:
Como veis el código se ejecuta en la pagina de nuestro perfil al pasar el ratón por encima del enlace a nuestra web. Al principio puede parecer poco "útil" pero si ademas de un evento javascript le añadimos un poco de CSS (usando la propiedad style="position:fixed;top:0px;....") podemos tener un enlace que ocupe toda la web, invisible, y tenemos muy fácil que se pase por encima el ratón y se ejecute el javascript. Y así tenemos un XSS permanente que puede ir muy bien para por ejemplo hacer un bonito Worm.. ya que el XSS se ejecuta al ver nuestro perfil.
ACTUALIZACIÓN: También es vulnerable a este vector de XSS en los titulos de los "Mixes". Al usar el título del "Mix" para crear un boton.
Imagen:
Actualización: Myspace ha arreglado las vulnerabilidades XSS.
Actualización:
@vlycser ha encontrado otra vulnerabilidad XSS en el buscador de Myspace.
(Comentarios)
Gracias por leer! :)
domingo, 13 de enero de 2013
XSS en WhatsApp
Buenos días!
Hoy os traigo un XSS no persistente en la web de Whatsapp. Se encuentra en el buscador de preguntas frecuentes (FAQ).
Os dejo la imagen:
Como podéis ver nos mete la consulta dentro de un script, asique si cerramos las comillas y paréntesis necesarios conseguiremos ejecutar cualquier codigo javascript en cualquier navegador, ya que usando este vector no funcionan los filtros anti XSS de los navegadores.
El vector de ataque es el siguiente:
");alert("XSS");</script>
Como podeis ver primero se cierran las comillas , luego los parentesis y finalmente añadimos un ";" para cerrar la instrucción. Y a partir de ahí insertamos nuestro código.
¿Para que generar un script si ya nos dejan dentro de uno? Que aprovechándolo tenemos un XSS valido para cualquier navegador.
El fallo no esta arreglado asique os dejo la url para que lo veáis: http://www.whatsapp.com/faq/search/?q=%22);alert(%22Whatsapp%20XSS%20by%20@segura201093%22);%3C/script%3E
Esta vulnerabilidad junto con algún exploit, como por ejemplo el 0day que ha salido recientemente de Java se puede usar para por ejemplo crear un iframe oculto y enviar el enlace a una victima. Al ser un enlace a la web de Whatsapp la victima no sospechará.
Una prueba mas de que Whatsapp se toma en serio la seguridad. ;)
Gracias por leer.
Hoy os traigo un XSS no persistente en la web de Whatsapp. Se encuentra en el buscador de preguntas frecuentes (FAQ).
Os dejo la imagen:
Clic para ver mas grande
Como podéis ver nos mete la consulta dentro de un script, asique si cerramos las comillas y paréntesis necesarios conseguiremos ejecutar cualquier codigo javascript en cualquier navegador, ya que usando este vector no funcionan los filtros anti XSS de los navegadores.
El vector de ataque es el siguiente:
");alert("XSS");</script>
Como podeis ver primero se cierran las comillas , luego los parentesis y finalmente añadimos un ";" para cerrar la instrucción. Y a partir de ahí insertamos nuestro código.
¿Para que generar un script si ya nos dejan dentro de uno? Que aprovechándolo tenemos un XSS valido para cualquier navegador.
El fallo no esta arreglado asique os dejo la url para que lo veáis: http://www.whatsapp.com/faq/search/?q=%22);alert(%22Whatsapp%20XSS%20by%20@segura201093%22);%3C/script%3E
Esta vulnerabilidad junto con algún exploit, como por ejemplo el 0day que ha salido recientemente de Java se puede usar para por ejemplo crear un iframe oculto y enviar el enlace a una victima. Al ser un enlace a la web de Whatsapp la victima no sospechará.
Una prueba mas de que Whatsapp se toma en serio la seguridad. ;)
Gracias por leer.
miércoles, 9 de enero de 2013
Vulnerabilidad XSS en Twitter
Buenas Tardes a todos!!
Despues de algún tiempo sin escribir, hoy os traigo una pequeña vulnerabilidad XSS en Twitter. Hace algún tiempo que la encontré y a través de mi cuenta en twitter avisé que en cuanto el fallo estuviese corregido lo publicaría aquí.
El fallo se encuentra en la ventanita que se nos abre para agregar a un usuario a una lista de Twitter, concretamente es el nombre de la lista lo que no se filtra y hace que si este contiene código se ejecute.
Aquí una imagen, que vale mas que mil palabras ;)
La vulnerabilidad es complicada de explotar, ya que, como podeis comprobar, los nombres de listas no pueden superar los 25 caracteres y es necesario que la "victima" intente agregar a la lista a algún usuario. Aún así es un XSS.
Como agradecimiento Twitter me añadió a su Hall of Fame de Seguridad, o como ellos lo llaman "WhiteHat List". Podéis verlo aquí: https://twitter.com/about/security (Al final del año 2012).
Y esto es todo por hoy! Gracias por leer! :)
Despues de algún tiempo sin escribir, hoy os traigo una pequeña vulnerabilidad XSS en Twitter. Hace algún tiempo que la encontré y a través de mi cuenta en twitter avisé que en cuanto el fallo estuviese corregido lo publicaría aquí.
El fallo se encuentra en la ventanita que se nos abre para agregar a un usuario a una lista de Twitter, concretamente es el nombre de la lista lo que no se filtra y hace que si este contiene código se ejecute.
Aquí una imagen, que vale mas que mil palabras ;)
Clic para ver más grande
La vulnerabilidad es complicada de explotar, ya que, como podeis comprobar, los nombres de listas no pueden superar los 25 caracteres y es necesario que la "victima" intente agregar a la lista a algún usuario. Aún así es un XSS.
Como agradecimiento Twitter me añadió a su Hall of Fame de Seguridad, o como ellos lo llaman "WhiteHat List". Podéis verlo aquí: https://twitter.com/about/security (Al final del año 2012).
Y esto es todo por hoy! Gracias por leer! :)