COMO UN HACKER VE TU PAGINA WEB

Cuando se trata de escribir código seguro, es importante ser capaz de pensar como un hacker. En este artículo nos acercamos a un sitio falso desde esta perspectiva.

La búsqueda de un objetivo

Desde escoger un sitio web desprevenido para ejecutar ataques de que es poco amigable (y también bastante ilegal), se puede demostrar el uso de una aplicación práctica conocida como Hacme Casino. Hacme Casino es una aplicación web de forma intencionada vulnerables escrita en Rails 1. Aunque la tecnología puede ser un poco anticuado, las mismas vulnerabilidades son todavía muy extendido en aplicaciones modernas y la metodología de ataque sigue siendo el mismo.

Metodología ataque

Cada ataque sigue la metodología: Reconocimiento, explotar, carga útil, botín.
  • Reconocimiento. Entender su objetivo. ¿Qué puertos están abiertos? ¿Qué servicios se están ejecutando? ¿Qué se construye con? ¿Cómo se pasa de datos? Cuanto mejor se puede entender su objetivo, más éxito tendrá en pasos posteriores
  • Exploit. Encontrar los puntos débiles. Se puede provocar errores 500 con datos arbitrarios? ¿Algo de software han conocido CVE (Vulnerabilidades y Exposiciones Comunes)?
  • Carga útil. Encontrar los datos específicos necesarios para lograr su objetivo. ¿Estás tratando de extraer las contraseñas con la inyección de SQL? Sesiones de compromiso con XSS? Ganar acceso a una consola a través de la carga de archivos?
  • Botín. Cosechar los beneficios de sus esfuerzos. Exfiltrate datos de usuario o de cuentas. Comprometer el servidor. Cerrarlo todo.

Paso 1. Reconocimiento

Vamos a explorar juntos. Cuando cargamos Hacme Casino, se nos presenta una pagina:

Aquí, es bueno mirar sólo por el sitio y ver qué páginas y funciones están disponibles. Burp Suite puede ser utilizado de forma pasiva el sitio mientras navegas.

No se puede hacer mucho sin una cuenta, por lo que una de las primeras cosas que debemos hacer es registrarse en una nueva cuenta. Cada campo aquí es un vector potencial de ataque, pero por ahora, sólo estamos observando.

Una vez que ha iniciado sesión, vemos algunos juegos que podía jugar si tuviéramos fichas. En la página de la cuenta, podemos transferir fichas a otros jugadores o simplemente dinero en efectivo. Mirando el cuadro de selección de transferencia, podemos ver que ya hay algunas otras cuentas. La inspección de esta caja con las herramientas de desarrolladores de Chrome, podemos tomar los nombres de cuentas de dichos usuarios.

1 andy_aces 2 bobby_blackjack 3 crystal_cardshark 4 demo

Paso 2. Exploit

Muy bien, ahora que tenemos algo de información sobre el servidor, vamos a empezar la búsqueda de algunos exploits. Hay una serie de CVEs publicados para las versiones de Ruby / Rails siendo utilizados, pero vamos a centrarnos en la aplicación en sí, por ahora.

Nos centraremos en el formulario de acceso para comenzar. Hacme Casino hace un buen trabajo aquí de dar un mensaje que no especifica si el nombre de usuario o contraseña es incorrecta. También da el mismo mensaje si existe o no una cuenta. Esto es importante porque al igual que en el tribunal de justicia, todo lo que diga puede y será usado en su contra.

Hay una falla aquí, sin embargo. Al escribir 'para la Logino Password, obtenemos un mensaje que dice An error occured during login.. Aunque es difícil conseguir cualquier otra información útil de esta forma manual, es suficiente para confirmar que la inyección de SQL es posible. En este punto, una herramienta como sqlmap podría ser utilizado para extraer los datos.

Puesto que no estamos recibiendo mucha información de la forma de la conexión, vamos a pasar a la otra forma relacionada con el usuario, el formulario de registro.

Tenemos que escribir al menos tres caracteres en el Desired logincampo, ya que se verifica en el back-end. Introducción de '''(cualquier número impar de oluntad también funciona) en este campo y llenar el resto de la forma normalmente produce un resultado interesante.

Hay una gran cantidad de información en esta página. Si su sitio web expone información de este tipo en la producción, por favor vaya Solución ahora!

La parte que más nos interesa en este momento es:

SQLite3 :: excepción de SQL: token no reconocido:

"5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8":

SELECT * FROM usuarios WHERE (login = '' '' '''

Y la contraseña = '5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8') LIMIT 1

¿Qué podemos deducir de esta línea? La base de datos es SQLite3, toda la consulta SQL utilizada para el inicio de sesión, y parece que las contraseñas se almacenan en sal SHA1. Veamos la consulta por ahora.

SELECT * DESDE usuarios DONDE (login = '' '' '' '

Y la contraseña = ' 5 baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 ')

Paso 3. Carga útil

¿Qué pasaría si tuviéramos que transformar esta alguna. Mediante el uso de la inyección de SQL, podemos retirar el cheque de la contraseña. Necesitamos cerrar la cita, entre paréntesis, y poner fin a la consulta. Para hacer eso, podemos seleccionar un usuario y añadir ');--a su nombre. Si entramos user');--, que haría que la consulta:

SELECT * DESDE usuarios DONDE (login = '' ); - Y password = ...

Todo después --se ignora, por lo que la consulta que se ejecuta es SELECT * DESDE usuarios DONDE (login = '' );

Como ya tenemos una lista de nombres de usuario, vamos a darle un un intento:

Paso 4. Loot

A partir de aquí, ahora tenemos acceso a cada cuenta en el sitio. Podemos transferir las fichas de otro jugador a nuestra cuenta. Podemos extraer las contraseñas SHA1 para su posterior agrietamiento fuera de línea. Incluso hay una manera de generar dinero ilimitado.

¿Qué podemos hacer como profesionales de la programacion de aplicaciones web?

Piense en la seguridad como un modo de pensar

Tenemos que entender que la seguridad es un estado mental. No es una herramienta que nos propusimos y olvidar. No es una decisión de código de una sola vez. Se necesita estar en la vanguardia de nuestras mentes durante nuestro trabajo diario.

Las aplicaciones serán utilizados en formas que no han sido distintas

Tenemos que entender que nuestros productos se pueden utilizar de una manera que no era nuestra intención. Los atacantes están tratando de engañar al sistema. Lo hacen mediante el envío de entradas extrañas, llamando directamente a los recursos, y viendo cómo los flujos de datos.

Una de las cuestiones más importantes para hacer como una información privilegiada es, 'Si quería romper esto, ¿qué haría?

Toda entrada es potencialmente peligrosa

Éste es sencillo de entender, pero fácil de olvidar. Cualquier información que llega desde el cliente está bajo el control del cliente y no se debe confiar implícitamente. Esto incluye, pero no se limita a: entrada de formulario, cabeceras, cookies, métodos de petición, los parámetros, y así sucesivamente.

A veces es más fácil de decir. Una cadena como "img src=d onerror=alert(document.cookie) se ve bastante sospechosas, pero la recepción de una solicitud cuyo origen dice 'google.com' pueden o no ser en realidad viene de Google. En este caso, ¿cómo podemos decir si es malicioso o no? Muchas veces no podemos, y es por eso que necesitamos tener otras protecciones en su lugar.

La seguridad por oscuridad no funciona!

La seguridad simplemente significa que ya que nadie sabe acerca de un sitio o recurso y no hay enlaces a la misma, que debe ser seguro. Esto no funciona. Nunca ha trabajado. Claro, puede tomar mucho tiempo para descubrir de forma manual, pero los que estamos en el software especial debe saber que para tareas que requieren mucho tiempo usamos guiones. Así, los hackers tienen secuencias de comandos también. Alguien va a encontrar su dominio alterno, alguien va a encontrar ese punto final indocumentado. Un negocio no está a salvo de los ataques simplemente porque no es un nombre familiar.

Recuerde respirar

Leer noticias sobre las últimas amenazas, los ataques y las violaciones pueden conseguir de forma aplastante. Es cierto que los atacantes están en el trabajo todos los días tratando de explotar a otros para obtener beneficios. Es fácil quedar tirado bajo por las olas sin fin de malas noticias. Al ser proactivo y abordar la seguridad desde el principio, podemos ayudar a evitar que se convierta en un problema en el primer lugar. Sin embargo, no podemos pensar con claridad y tomar decisiones adecuadas si estamos demasiado estresados. Por lo tanto, cuando las cosas empiezan a ser muy pesado, sólo recuerda a respirar.
Fecha actualización el 2017-09-30. Fecha publicación el 2017-9-18. Categoría: Hackers. Autor: Oscar olg Mapa del sitio Fuente: dzone
hacker