Advertencia: Estimado lector, este post puede ser muy largo y CORRE EL PELIGRO DE APRENDER ALGO. Si usted es del tipo de usuarios (Next,Next,Next,Finish) le recomiendo mejor bajarse LOIC para DoS y otros programas de bruteforce.

<< Contexto >>

Antes de empezar a ver todo esto quiero explicar algunos motivos de la entrada del dia de hoy. Hace unas semanas me di cuenta (tarde) de que estuve sufriendo un ataque de Denegación de Servicio, cuando lo vi, me puse en modo de Defensa *Feel like a Ninja* al final “mis amigos” del trabajo me mandan la siguiente foto:

Este fue el regalo que me ofrecieron por los tres años que cumplio Neobits.org Pero sin desviarnos lo que me interesa vean es la imagen.Por lo que recuerdo podría decir que; Lo encerrado en rojo es una ASUS con Linux Mint KDE, la computadora de en medio es una maquina con Windows 7, y  la Mac con Windows 8 corriendo varias consolas con Powershell.

Lo que hicieron fueron muchas consultas con cURL, Wget y PowerShell, pero como pueden ver en las imágenes, mandan mucha basura a stdout (Lo cual es completamente innecesario).

A raíz de esto, se me ocurrió mostrar como podemos hacer este tipo de cosas, pero mas elegantes y funcionales =)

¡Empecemos!

Continue reading »

 

Crear un captcha básico con PHP y GD explicado desde cero

El 16/04/2012, en Captcha, por hecky 12.177 veces visto

Hoy vamos a crear un captcha MUY CASERO y básico en PHP con la ayuda de la libreria GD. Vamos a ir explicando paso a paso cada pedazo de código y al final de la lectura espero que todos se vayan con una sonrisa habiendo aprendido correctamente como se hace.

En varias entradas de mi blog ya hemos usado esta libreria GD. Pero hoy recurriremos de nuevo a ella de una manera muy fácil.

El objetivo sera crear un captcha “presentable”, Legible y de alguna manera “seguro”. Lo dividiremos en 8 etapas (8 captchas) para obtener un unico resultado.

Captcha 1

Lo primero que debemos hacer es crear nuestro recurso que es una imagen, para lo que utilizaremos una función llamada “imagecreatetruecolor” a la cual solo debemos definirle ancho y alto de la imagen deseada.

imagecreatetruecolor nos permite crear una imagen que maneje transparencias y ciertos tipos de fuentes de letra (Posteriormente se utilizaran)
imagecreate Bien podriamos usar esta función que es mas sencilla, pero que no nos da las funcionalidades de imagecreatetruecolor

1
2
3
$ancho=100;
$alto=55;
$image=imagecreatetruecolor($ancho,$alto);

Una vez creado el recurso vamos a pintar esa rectángulo con un color de fondo. Este color de fondo sera aleatorio. Para ello usaremos la función imagecolorallocate la cual define un color del modo RGB.

imagecolorallocate($recurso,$R,$G,$B); De esta manera definiremos los colores deseados.

Como se quiere que sea variable el color, usaremos la funcion rand() (Que de ahora en adelante es nuestra mejor amiga).

rand($MinVal,$MaxVal); A la función rand() se le define el rando de valores que puede tomar. En el caso de los colores RGB solo pueden ir de 0 al 255.

1
2
3
4
$rgb[0] = rand(0,255);
$rgb[1] = rand(0,255);
$rgb[2] = rand(0,255);
$RandomColor=imagecolorallocate($image,$rgb[0],$rgb[1],$rgb[2]);

Continue reading »

 

Antes que nada quiero aclarar dos cosas:

  1. Las vulnerabilidades ya las “corregimos
  2. Este articulo lo publico con la COMPLETA AUTORIZACIÓN de la “SECRETARIA DE ASUNTOS ESCOLARES de la Facultad de Arquitectura

Hace unas semanas me encontre algunas simples vulnerabilidades que afectaban gravemente el sistema de la “Secretaria de Asuntos Escolares” de la facultad de Arquitectura, estas vulnerabilidades afectaban a los alumnos de la siguiente forma:

  • Revelaban TODA su información confidencial!!! (Cuando digo toda, es TODA!!!!) entre lo que se destacaba (Nombre, Fotografia, dirección COMPLETA, Fecha de Nacimiento, CURP, Telefono, celular, mail, y contacto de emergencia)
  • Permitía cambiar sus datos personales. (Hasta se podia modificar el Nombre)
  • Permitía modificar su fotografia.
  • Revelaba sus materias inscritas y por ende su horario.
  • Se podían crear cuentas falsas para subir cualquier tipo de contenido (Imagenes, documentos, texto, malware, pornografía,etc…)
  • Y por ultimo se podian averiguar numeros de cuentas validos de los alumnos.

Vamos por partes y ver cada uno de los puntos.

El sistema vulnerable es el que otorga acceso a los alumnos para poder actualizar sus datos y obtener su ficha de comprobante. En este panel se pide el numero de cuenta y contraseña (Por defecto fecha de nacimiento)

Al ingresar LEGITIMAMENTE para actualizar los datos, la url formada es algo así:

http://escolares.arq.unam.mx/escolares_l/view/datos_alumno/actualizarDatosAlumno.php?sid=NUMERO-DE-SESION&carrera=ARQUITECTURA

En primera instancia vemos que los datos se estan pasando por el metodo GET y la variable “sid” es la que obtiene el Numero de Sesion. Este numero de sesion es aleatorio y de 26 caracteres. Cuando vi ese numero de sesión supe podia haber algo medio chueco. Asi que lo que hice fue restarle -1 al ultimo caracter para ver que sucedia. Si el numero de sesion era 89e94f7c8c505c77fa9ca94112 lo converti a 89e94f7c8c505c77fa9ca94111

Obviamente esto no me llevo a nada. Sin embargo se me ocurrio algo mejor =)

SQL inyection

Si a la variable “sid” le inyectaba un SQL inyection. VOILA!!! Al final nuestra URL maliciosa sera:

http://escolares.arq.unam.mx/escolares_l/view/datos_alumno/actualizarDatosAlumno.php?sid=%27%20or%20%271%27%20=%20%271&carrera=ARQUITECTURA

¿Que pasa con esa URL?

Al ingresar a esta URL nos devolvia un perfil seleccionado aleatoriamente de cualquier alumno. Pudiendo ver todos sus datos como se muestra en la siguiente imagen:

Continue reading »

 
Navega1234...1020...Última »