Mostrando entradas con la etiqueta HTML5. Mostrar todas las entradas
Mostrando entradas con la etiqueta HTML5. Mostrar todas las entradas

Ataques de inyección de código en aplicaciones móviles basadas en HTML5

Hola a tod@s

Con nuestros Smartphone escaneamos códigos QR, realizamos envíos de mensajes, escuchamos música o vemos videos. En estos pequeños gestos podemos estar expuestos a infectarnos o ser víctimas de robo de información.

Una tecnología emergente HTML5 se ha convertido en nuevo vector de ataque, el desarrollo de aplicaciones basadas en HTML5 ha ido ganando rápidamente popularidad en la industria móvil. Un reciente informe de Gartner dice que para el año 2016, cincuenta por ciento de las aplicaciones móviles utilizará las tecnologías basadas en HTML5.

¿Qué plataformas están afectadas?
Todos los principales sistemas móviles se verán afectados, incluyendo Android, iOS, Blackberry, Windows Phone, etc., porque todos ellos admiten aplicaciones móviles basadas en HTML5.

Un problema notorio de la tecnología basada en HTML5 es que código malicioso puede inyectar fácilmente en el programa y ejecutado. Es por ello que el ataque Cross-Site Scripting (XSS) sigue siendo uno de los ataques más comunes en la Web. Sólo pueden hacer objetivo a ataques XSS en aplicaciones web a través de un solo canal (es decir, Internet), pero con la adopción de la misma tecnología en dispositivos móviles, se ha descubierto que un tipo similar de ataque no puede ser sólo lanzado contra aplicaciones móviles, puede atacar de muchos canales, incluyendo código QR, exploración de Wi-Fi, canciones MP3, videos MP4, Mensajes SMS, etiquetas NFC, lista de contactos, etc.. Tanto como una aplicación basada en HTML5 muestra información obtenida del exterior o de la aplicación, puede ser una víctima potencial.

¿Qué hace una aplicación Vulnerable?

  1. En primer lugar, esta aplicación debe basarse en la tecnología basada en HTML5, es decir, su código (o parte de su código) está escrito en JavaScript. Si la aplicación está escrita usando el lenguaje nativo de la plataforma (por ejemplo Java para Andrid) y Object-C para iOS, es inmune a este tipo de ataques.
  2. En segundo lugar, si existe un canal para la aplicación recibir datos desde afuera. Los datos pueden ser desde fuera del dispositivo (por ejemplo, análisis de código QR) o desde otra aplicación en el mismo dispositivo (por ejemplo, la lista de contacto).
  3. En tercer lugar, la aplicación necesita mostrar la información desde afuera. La elección de las API para mostrar la información es crítica. Algunas API es seguro, pero muchos de ellos no lo son.
¿Cómo funciona el ataque?








No seáis malos.

Python.- HTML E-Mail Extractor (GUI) Newbie Style

En mi última entrada en este blog hablé de un script que programe en Python y que era capaz de hacer crawling por un pagina web y obtener los correos electrónicos que estuvieran en el código fuente. Ese script funcionaba pero tenia algunos errores que podéis ver en la entrada anterior. 

Así que he cogido una versión anterior de mi script le he quitado la parte del crawling y le he Interfaz Gráfica gracias a Tkinter, una librería de Python dedicada a ello . Hacia mucho que quería ponerme a ello y me gustaría contribuir a la comunidad con algún programa así que creo que mi HTML E-Mail Extractor (GUI) os podrá ser de ayuda. 


Como no, aquí tenéis el código. Para que los que no sepáis leerlo, como yo hace unos meses,  os diré que es un programa que lee el código fuente de una web mediante su url y mira en todo el texto de la web hasta que encuentra una expresión que corresponda al patrón de la expresión regular que hay en el código y que coincide con los de una dirección de Correo electrónico. 

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from Tkinter import * 
import urllib2
import re 


def mostrar(window): 
window.deiconify()
def ocultar(window):
window.withdraw()
def ejecutar(f): 
ventana.after(0,f)
def crawler(web):
try: 
respuesta = urllib2.Request(web) 
  pagina = urllib2.urlopen(respuesta).read()
  if pagina: 
#esto complia la exprsion siguiente
  patron = re.compile("[-a-zA-Z0-9._]+@[-a-zA-Z0-9_]+.[a-zA-Z0-9_.]+")
#se explica por si mismo 
smails = re.findall(patron,pagina)
listaemails = open ('listaemail.txt', 'a+')
d2 = str(smails)
listaemails.write(d2)
listaemails.close()
label3=Label(ventana, bg='white' ,text=" URL valida  ")
label3.grid(row=5, column=2) 
ejecutar(mostrar(ventana1))

except:
label3=Label(ventana, bg='white' ,text=" Pon una URL ")
label3.grid(row=5, column=2)


#Configuración ventanas

if __name__ == "__main__":

ventana = Tk()
ventana1 = Toplevel(ventana)
ventana.title('HTML Email Extractor')
ventana.config(bg='white')
ventana1.config(bg='white')
#ventana

label1=Label(ventana, bg='white',text="StateX Email Extractor", font= (16) )
label1.grid(row=1, column=2)
label2=Label(ventana,bg='white' ,text="Pon una URL:")
label2.grid(row=2,column =2)
caja = Entry(ventana)
caja.grid(row=3, column=2)
boton1 = Button(ventana, text="Start", bg='white', command=lambda: crawler(caja.get()))
boton1.grid(row=4, column=2)
 
#ventana 1

label4=Label(ventana1, bg ='white', text = "Correos almacenados con éxito") 
label4.grid(row=1, column=2)
boton2 = Button(ventana1, bg='white', text="Seguir",command= lambda: ejecutar(mostrar(ventana)) or caja.delete(0,END))
boton2.grid(row=3, column=2)
boton3 =  Button(ventana1, bg='white', text="Salir", command=  ventana.destroy)
boton3.grid(row=4, column=2)

#Estado inicial de las ventanas

ventana1.withdraw()
ventana.mainloop()

Si os lo queréis descargar tenéis la carpeta con el programa hecho un .exe, el programa en Python  y el script original del extractor en mi GitHub y espero que dentro de poco en el apartado Herramientas de esta Web ;) 

GitHub: 
Espero que os haya gustado y Sed Buenos con esto ;) 

Python,- HTML Crawler E-mail Extractor Newbie Style

Hace unas semanas Francisco Javier me dio la oportunidad de formar parte de esta comunidad y de escribir algún articulo. Así que, empecé a curiosear la pagina, a ver perfiles de los otros autores y ver cual era la mejor manera de empezar a escribir aquí. La verdad es que no quería publicar nada hasta que no tuviera una buena idea y viendo el nivel de mis compañeros posiblemente sea el mas Newbie de todos. Suponiendo esto y puestos a lanzar la novatada, he decidido reutilizar dos script que hice con Python para mi blog y me parece que puede quedar genial. 


Scripts usados:

Lo que queremos es un script que pueda leer el código fuente de una pagina y la interprete guardando los correos electrónicos en un .txt, en el caso de detectar alguno en el código, o, si encuentra un enlace, prosiga su búsqueda en la siguiente pagina y vuelva a comprobar si hay algún correo. Bueno,  por si no queda claro aquí os dejo el código: 

import re
import urllib

web =  raw_input("pega aqui la Url: ")
emails = []

patron= re.compile('''href=["'](.[^"']+)["']''')
patron2= re.compile("[-a-zA-Z0-9._]+@[-a-zA-Z0-9_]+.[a-zA-Z0-9_.]+")

busqueda = re.findall(patron, urllib.urlopen(web).read())
busqueda2= re.findall(patron2,urllib.urlopen(web).read())

emails.append(busqueda2)
d1 =  str(busqueda2)
ListaEmails = open('correos.txt','a+')
ListaEmails.write("--> "+ d1 +" <--")
ListaEmails.close()

for i in busqueda:
busqueda3 = re.findall(patron2,urllib.urlopen(i).read())
emails.append(busqueda3)
d2 =  str(busqueda3)
ListaEmails = open('correos.txt','a+')
ListaEmails.write("--> "+ d2 +" <--")
ListaEmails.close()
busqueda4 = re.findall(patron, urllib.urlopen(i).read())

for e in busqueda4:
busqueda5 = re.findall(patron2,urllib.urlopen(e).read())
emails.append(busqueda5)
d3 =  str(busqueda5)
ListaEmails = open('correos.txt','a+')
ListaEmails.write("--> "+ d3 +" <--")
ListaEmails.close()

print "Correos Guardadas con Exito."

Si, es una forma muy chapurrera de hacerlo, pero soy un Newbie y mas con Python. Así que, estoy abierto a criticas y a posibles mejoras. 

Lo he probado con esta web, una forma genial para garantizar mi permanencia, y este a sido el resultado: 


Como veis el script ha encontrado, aparte del noreply de blogger, el correo electrónico de Francisco Javier varias veces y el de dergli. También habréis visto en el código el programa se basa en el siguiente patrón para usar la librería re (Regular Expresions) y dar con los correos [-a-zA-Z0-9._]+@[-a-zA-Z0-9_]+.[a-zA-Z0-9_.]+ Lo cual comporta que si alguien ha escrito, como es en este caso, tod@s se nos mete en la lista. 

También en la ejecución de este script después de introducir la url de la pagina web, al encontrar una url la cual no pueda abrir, el programa parará de guardar correos electrónicos mostrándonos el siguiente problema. 


La verdad es que me lo he pasado bastante bien jugando con este script y creo que si le dedico un poco mas de tiempo puede salir algo muy chulo. Para los que queráis el script os dejo en enlace a GitHub aquí abajo: 
Acepto criticas y/o propuestas de mejora. 

Sed Buenos con esto ;) 

Reproductor de Cassette Antiguo con Audio de HTML5

Hola a tod@s!

El antiguo reproductor de cassette está más que desaparecido, es más es un artículo de colección, llego la era digital y se lo cargo, pero hoy quiero hacerle aquí un homenaje he querido compartir con vosotros un reproductor de cassette de la vieja escuela con audio de HTML5. 

Navegando por la red lo descubrí y me hizo gracia la idea. Es sólo un experimento, y la idea es imitar el comportamiento de una cinta de casete, (play, stop, rebovinar) y utilizar audio de HTML5. 


Imagen 1: Casete HTM5


Podéis ver como funciona esta aplicación.

Si eres desarrollador de HTM5 este post te puede servir de mucho, más si estabas buscando un reproductor para tu web o algo parecido, ya que su creador comparte el código fuente, podéis descargarlo en el siguiente enlace y probarlo.

 
No seáis malos.