Airbnb y su Password Length Restriction que no tenía nada de restrictive

Imagen 1. Airbnb logo.

Por fin me han dado full disclosure en este fallo y ahora puedo publicarlo.

Un fallo en la restricción de longitud de contraseña de Airbnb podía provocar que con un numero de peticiones concretas se pudiese tirar uno de sus servidores abajo, mejor dicho, que pudieses hacer un Denial of Service de toda la vida.

Como bien sabemos un DoS teniendo los medios para hacerlo puede llegar a resultar bastante sencillo y esto era lo que ocurría con Airbnb. Ellos tenían un sistema de restricción de longitud de contraseña, que tenia un máximo 128 caracteres, este sistema funcionaba correctamente en el proceso de creación de una cuenta y en el de cambio de contraseña, si te pasabas de los 128 caracteres el propio formulario te indicaba que no se podían insertar más.

Es decir, tenían un algoritmo para la restricción de la longitud de la contraseña client-side, pero se habían olvidado de la restricción server-side. Tras realizar diversas pruebas me di cuenta de que este fallo solo estaba en el proceso de creación de cuenta, así que para ir un poco más allá, me creé una cuenta respetando su máximo de caracteres para la password, para que la restricción client-side no saltase y antes de que la petición de creación de al cuenta saliese de mi PC, la capturé con el proxy ZAP Attack y modifiqué la password por una de 100.000 caracteres.

Imagen 2. Mi password de 100.000 caracteres.

Esta es la petición que capturé, como podéis detallar se observan los valores en texto plano:

Imagen 3. Petición capturada

Una vez capturada la petición, se puede modificar el valor de la contraseña en este proceso y con ello nos saltamos las restricciones client-side y si el server no tiene restricciones ¡estaríamos registrados con nuestra super password!

¿por QUE TANTO REVUELO POR TU SUPER PASS?

El problema de esto es que como todos sabemos las passwords no se almacenan en texto plano (O AL MENOS NO SE DEBERÍA), se almacenan hasheadas con algún algoritmo criptográfico (DSA, SHA, MD5), esto hace que cada vez que iniciemos sesión con nuestro usuario y su super password el servidor tenga que hashear la super contraseña y contrastarla con el hash que tiene en su base de datos, esta labor consume bastante recursos del servidor, bastante recursos con respecto a lo que un simple inicio de sesión tendría que consumir.

Mi password era de cien mil caracteres era pequeña para un servidor de Airbnb, pero quizá no para tu web, así que no hagas como Airbnb, mete restricciones client-side y server-side y duerme tranquilo.

Anuncios

El libro de colorear de SELinux

Imagen 1. The SELinux coloring book.

Hace unos meses atrás escribí una entrada de como desactivar SELinux, ya que muchas veces lo encontramos más fácil que entender como funciona, ya que es un sistema complejo de entender y por supuesto de configurar.

Hoy realizando un curso me han recomendado este libro que hoy os comparto, y que podéis encontrar completo en el siguiente enlace: https://people.redhat.com/duffy/selinux/selinux-coloring-book_A4-Stapled.pdf

Básicamente como veis en la imagen 1, es un libro en el que nos enseñan como funciona exactamente SELinux pero como si fuese un libro de colorear para niños, y la verdad que se hace bastante gracioso y fácil de entender.

Imagen 2. Don’t eat that!

Así que echadle un vistazo y ¡dejad de desactivar SELinux!

Script para envío de comandos en paralelo a hosts remotos – Linux

Imagen 1. En paralelo

He estado un poco alejado del blog por que he estado trabajando en un pequeño proyecto que me ha quitado mas del tiempo esperado.

Con lo que respecta a este script, comentar que nace de la necesidad de ejecutar varios comandos a la vez en varias maquinas remotas por SSH. Antes de tener este script, lo que estaba haciendo era conectarme a las maquinas remotas por SSH y ejecutar los comandos en serie, es decir, tenía un script con un bucle para ejecutar ‘X‘ y ‘Z‘ comando en todas la maquinas remotas, el problema de esto era que los comandos debían ser ejecutados sobre 3000 maquinas, con previsión de tener que hacerlo hasta en un total de 6000

Con este script lo que he conseguido es enviar uno o varios comandos hasta un total de 8000 dispositivos a la vez. Para ver mejor la problemática: tenia que conectarme por SSH al dispositivo, realizar unas modificaciones en ciertos ficheros del sistema y a continuación reiniciar el dispositivo, esto con 3000 dispositivos tomaba hasta 1 h 30 min el proceso era el siguiente:

Continuar leyendo “Script para envío de comandos en paralelo a hosts remotos – Linux”

La larga historia de bloquear anuncios de Youtube en Pi-hole

He estado trabajando en otros proyectos, por lo tanto no he tenido tiempo para publicar algo en el blog. Sin embargo sigo en la interminable búsqueda de bloquear los anuncios de Youtube a nivel de red usando Pi-Hole. Hasta ahora he ido actualizando el script en mi Github: https://github.com/deividgdt/ytadsblocker/blob/master/ytadsblocker.sh

Imagen 1. Youtube Ads Blocker

De momento he conseguido bloquear la mayoría de anuncios, sin embargo aún sabiendo como bloquearlos todo, no puedo modificar el script para ello, por que tras estar haciendo diversas pruebas el script acaba provocando que Youtube deje de funcionar.

Continuar leyendo “La larga historia de bloquear anuncios de Youtube en Pi-hole”

Bloquear anuncios de Youtube en Pihole

Imagen 1. Pi-Hole y Raspberry Pi

Ya llevo más de un mes usando la Raspberry Pi con Pi-hole, y la verdad que no puedo estar más contento, Pihole ha estado funcionando sin parar desde entonces, y al igual que mi Raspberry no ha tenido ningún problema. El único inconveniente que me he encontrado a día de hoy han sido los anuncio de YouTube, los cuales han sido prácticamente imposibles de bloquear del todo. Hace poco he hecho una pequeña investigación de los subdominios que genera Google para los anuncios de YouTube, y estos tienen el siguiente formato: 

r1—sn-4g57kn7d.googlevideo.com

Leyendo varios foros he visto que hay algunas personas que han generado listas publicas con estos cientos de estos subdominios, sin embargo, en mi caso, esas listas no me han servido de nada ya que desde el apartado “Query log” de Pi-Hole pude ver que los subdominios consultados con los anuncios eran muy diferentes de los que estaban en estas listas. 

Continuar leyendo “Bloquear anuncios de Youtube en Pihole”

Adios anuncios con Pi-Hole y Raspberry Pi

pihole
Imagen 1. Pi-Hole

Hace poco he adquirido mi primera Raspberry, he cogido la última la 3B+, y la verdad que en menos de una semana ya le estoy sacando un gran provecho, sobre todo gracias a Pi-Hole.

Básicamente lo que hace esta maravilla es montar un servidor DNS que resuelve los dominios relacionados con publicidad con la ip 0.0.0.0, con ello conseguimos quitar toda la publicidad de la red de nuestra casa. Pi-Hole por defecto hace uso de 5 listas de dominios relacionados con publicidad en general y otros relacionados con malware, pero si queremos podemos añadir nuestras propias listas, o podremos añadir nuestros propias expresiones regulares para que, por ejemplo, bloquee todas las paginas web relacionadas con “porn“, al mas puro estilo de Squid. Continuar leyendo “Adios anuncios con Pi-Hole y Raspberry Pi”

Haciendo ficheros intocables con chattr en Linux

Una forma muy sencilla de evitar que los ficheros mas importantes de nuestro sistema sean modificados o borrados, es que solo nosotros como administradores tengamos permisos de escritura y lectura sobre dichos archivos; pero que ocurre cuando somos nosotros mismos que por error eliminamos un fichero vital, o que un script que hemos creado, por error elimine o modifique un fichero vital (?)… ahí es donde no nos sirve el hecho de que solo nosotros tengamos permisos… Una de las soluciones más rápidas que he descubierto es el comando chattr, con este comando haremos que nuestros directorios o ficheros sean intocables.

La sintaxis del comando para convertir el fichero “ficheroimportante.bkp” en intocable, sería: Continuar leyendo “Haciendo ficheros intocables con chattr en Linux”