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

miércoles, 24 de noviembre de 2010

Pywc 0.4

Hoy estrenamos nueva versión de Pywc:
  • Corregido un bug que incluía lo que sigue a "?" y "#" como parte de una URL relativa, vamos que con una URL como "blablabla.com/yoquese.php?asd=jejeje/123" , la ruta base antes quedaría en "blablabla.com/yoquese.php?asd=jejeje/" y ahora en "blablabla.com/" (como tiene que ser). 
  • Además se añadió un método para descargar datos que no se tienen que parsear (para imágenes o archivos binarios, por ejemplo).
 El código es este: pywc04.zip

Entonces la referencia quedaría así:

domingo, 21 de noviembre de 2010

PoC de login seguro sobre HTTP

A raíz de este hilo en HackXCrack decidí programar un sistema de login que permitiese cierta seguridad ante atacantes pasivos aún funcionando sobre HTTP en plano, todo de forma transparente al usuario.

La idea es simple, cuando el usuario se intenta loguear, se le asigna un token que se utilizará como salt de una función hash que se aplicará a la contraseña (yo he utilizado MD5 porque tenía el código en python a mano), el resultado de la función será el que se envíe. El utilizar un token es importante porque evita ataques de replay, es decir, que el atacante pase a través de la función hash, enviando el resultado directamente, no tendría que conocer la contraseña original si el resultado es siempre el mismo. Además es importante que el token lo establezca el servidor y nunca quién se loguee, ya que lo podría modificar para que fuera el mismo que el del usuario original, con lo que se vuelve al ataque de replay.

Pero tiene bastantes problemas:
  • Si el atacante es activo (puede interceptar la conexión y modificar datos al vuelo), puede cambiar el código fuente de la página, invalidando esto.
  • Las contraseñas han de guardarse en texto plano, para poder realizar el hash a posteriori.
  • Como consecuencia de lo anterior se produce un aumento muy considerable de la carga del servidor, ya que en vez de hacer el hash una sola vez (ya que se supone que las contraseñas se guardan ya hasheadas), en el peor caso, ha de comprobarse el hash de todas las contraseñas cada intento de login.
La prueba (todo muy mínimo) está alojada en md5poc.webcindario.com, el código fuente se puede descargar aquí [md5poc.zip]

Btw... 1 año!!

miércoles, 23 de junio de 2010

Descargando una lista de webproxys

No ando con mucho tiempo para programar, asi que se me ocurrio hacer un pequeño script en python aprovechando el pycrawler para que descargue una lista de webproxies, el codigo no es gran cosa, pero funciona :)

Nota: la lista se descarga de proxy.org

Este es el codigo (o para descargar [proxylist.py])

#!/usr/bin/env python
import pycrawler
import sys
if (len(sys.argv) > 1):
    f = open(sys.argv[1],'w')
else:
    f = open(raw_input('Se guardara en: '),'w')

print "Descargando lista de proxy's..."
c = pycrawler.crawler()
site = c.crawlsite('proxy.org')

# Se buscan los proxys en la pagina
for e in site.element_list:
    if (e.tag_type == "option") and ('value' in e.property):
        if ("." in e.property['value']):
            print "->",e.property['value']
            f.write(e.property['value']+"\n")

f.close()



Hasta otra

lunes, 21 de diciembre de 2009

pyCrawler 0.1 (Crawler en Python)

Esto es un ejemplo de como hacer un crawler (un script que va siguiendo los enlaces de las paginas web) escrito en python.

El proposito original del script era hacer mas sencillo el trabajo de moderacion de un sitio web, filtrando las imagenes (por url), textos, enlaces y titulos, a traves de una blacklist (nota: estas no traen por defecto ningun elemento, asi que hay que añadirlos a mano, en las lineas 170 y 171,implementadas como listas).

Lo que se hace al encontrar algo en la lista negra se define en la funcion Aviso (linea 16).

Como el proposito original era la moderacion, el script esta programado para no seguir ningun enlace fuera de ese sitio web (pero esto se puede cambiar facilmente).

Link: pyCrawler

Suerte y hasta otra.