miércoles, 8 de abril de 2015

[Arthusu] Mi metodologia pruebas de penetracion

Introduccion

Bienvenidos a este tutorial, si es que le podemos llamar de esa forma, ultimamente he estado publicando algo, entonces se me ocurrio que a ustedes les serviria un poco este tipo de tutorial ya que he buscado mucha informacion en la red y he recogido lo que me parece mas importante que pueden utilizar para este tipo de cosas.

Antes que nada decirles que hay un proyecto muy conocido de documentacion sobre vulnerabilidades web llamado OWASP el cual contiene una guia muy buena en la cual pueden aprender demasiado sobre este tipo de metodologia.


Esta imagen la he encontrado en google y como dicen que una imagen vale mas que mil palabras, pues aqui les dejo las fases para el proceso de analisis.


1.- Preparacion y Planeamiento

Lo primero es intentar obtener la mayor informacion sobre el objetivo a analizar.

En este caso tendre en mi objetivo: animextremist.com

Es una pagina la cual visito continuamente, bueno veremos como hacer poco a poco, este tipo de prueba, claro yo lo hare a mi manera, ya que otros pueden utilizar otro tipo de herramientas o solo utilizar este concepto de manera que les pueda 'servir'.

http://whois.domaintools.com/ <- Esta es una herramienta muy util para mi me da mucha informacion sobre el dominio, en su version de paga es mucho mas util.

Con la informacion recogida se los datos siguientes:

80.82.78.206 esta alojado en un servidor dedicado de godaddy.com
El email del admin es juanelo512@hotmail.com
Su nombre es Juan Celis Garcia
Su calle: Peralvillo 22 edificio c-301
Su colonia: Colonia Morelos
Su ciudad: Mexico City
Su pais: Mexico
Su codigo postal: City 06200
Su telefono: 55269882

Informacion sobre el servidor: Apache/2.2.29 (Unix) mod_ssl/2.2.29 OpenSSL/1.0.1e-fips mod_bwlimited/1.4 
Usaba Cloudflare

PHP_VERSION 5.4.36
Dominio asociado: http://myanx.com/

Gracias al uso de las redes sociales hoy en dia podemos sacar mucha informacion, por ejemplo usando Facebook, coloco el correo que encontre anteriormente:

juanelo512@hotmail.com y encuentro esto:
https://www.facebook.com/animextremist.anx

Ok, tiene su correo con su cuenta de animextremist pero veo que tiene 2 amigos, dentro de esos dos amigos busco a Juan Celis! :P

https://www.facebook.com/juan.celis.904

He aqui Juan Celis Administrador de AnimeXtremist Mi idolo :) 

Encontrando mas informacion:

Su hermana: https://www.facebook.com/cicky.celis

Ahora podemos buscar sobre el en google utilizando Su nombre y donde estudio, ejemplo: Juan celis Unitec, esa informacion la saque desde facebook.

https://twitter.com/Seiji_Ibiki


Con esto concluimos que el uso de las redes sociales para obtener informacion es de demasiada ayuda, algunas redes sociales pueden ser:

* Twitter
* LinkedIn
* Google+
* Instagram
* Facebook

Tambien si este fuera un servidor compartido, podriamos hacer uso de BING para buscar algunos de lso dominios compartidos, ejemplo:

IP: xxx.xxx.xxx.xxx

Aqui no se acaba, podemos intentar recopilar informacion de subdominios, utilizando Google.

site: elsitio.com -site:elsitio.com

http://ftp.animextremist.com

Tambien en este ejemplo con Shodan hemos encontrado su panel de cPanel:

https://80.82.78.206:2087
https://80.82.78.206:2083
https://80.82.78.206:2096
https://80.82.78.206:2078/


ftp://80.82.78.206/

Otra manera de buscar informacion con google es utilizando sus keywords, por ejemplo:

site:animextremist.com filetype:txt

Siguiendo con las keywords de google pues como hay bastantes formas utiles solo hay que jugar con ellas, de todas maneras si puedo pronto hare algun tutorial sobre Google Hacking :P

http://www.animextremist.com/noticias/noti543.php?subaction=showfull

http://animextremist.com/mangas-online/the-breaker-new-wave/capitulo-3/

http://www.animextremist.com/series/dbzpelis_archivos/

http://www.animextremist.com/fansub/
?subaction=showcomments
&id=1195023652
&archive=
&start_from=
&ucat=3
&


http://www.animextremist.com/fansub/noticias/data/
http://animextremist.com/cgi-sys/scgiwrap

Algunos errores:


site:animextremist.com intext:"seijixt"


Warning: include(../comentarios/show_news.php): failed to open stream: No such file or directory in /home/seijixt/public_html/noticias/noti543.php on line 401

Warning: include(): Failed opening '../comentarios/show_news.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/seijixt/public_html/noticias/noti543.php on line 401

Warning: include(../comentarios/show_news.php): failed to open stream: No such file or directory in /home/seijixt/public_html/noticias/noti543.php on line 404

Warning: include(): Failed opening '../comentarios/show_news.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/seijixt/public_html/noticias/noti543.php on line 404


2004.12.08 19:46 B D:\Juan\Animextremist\animextremist\series\dbzpelis_archivos\dbzpeli1.jpg --> 65.110.45.90 /public_html/series/dbzpelis_archivos dbzpeli1.jpg

2004.12.08 19:46 B D:\Juan\Animextremist\animextremist\series\dbzpelis_archivos\dbzpeli2.jpg --> 65.110.45.90 /public_html/series/dbzpelis_archivos dbzpeli2.jpg

2004.12.08 19:46 B D:\Juan\Animextremist\animextremist\series\dbzpelis_archivos\dbzpeli3.jpg --> 65.110.45.90 /public_html/series/dbzpelis_archivos dbzpeli3.jpg

2004.12.08 19:46 B D:\Juan\Animextremist\animextremist\series\dbzpelis_archivos\dbzpeli4.jpg --> 65.110.45.90 /public_html/series/dbzpelis_archivos dbzpeli4.jpg



Con esto tenemos el posible nombre de usuario del cPanel :D
seijixt :P y la ruta :D, hace un tiempo hice un post sobre brute force el cual podriamos intentar, o simplemente intentar acceder con las peores contraseñas

Otra cosa que podemos hacer es usar algun brute forcing de directorios o simplemente hacer un crawler o spider para encontrar mas informacion.

Un ejemplo Yo utilizo ZAP de OWASP o DirBuster para buscar URL's, puntos de entrada, y directorios de la pagina que no son muy accesibles... Burp Suite tambien es una herramienta genial para esto.

Gracias a ZAP encontramos una posible Inyeccion SQL, ademas de un monton de urls y parametros:

http://animextremist.com/dd3.php?ver=H' 
http://www.animextremist.com/mangas.htm?ord=genero&id=18'
SQLI: http://www.animextremist.com/mangas.htm?ord=genero&id=18 and 0 union select version() %23  hola

http://www.animextremist.com/foro/
http://animextremist.com/mangas-online/user/user/


Usa una base de datos MySQL. Cuando obtengamos los datos solo es necesario usar algun Admin Finder Online o una tool que te hayas creado.

http://animextremist.com/login.php
http://www.animextremist.com/pruebas/Admin.html

http://www.animextremist.com/tools/

Lo siguiente es reconocer los servicios que se estan usando. Aqui utilizaremos herramientas como NMAP.

Ejemplo: nmap -sV -T4 -O -Pn 80.82.78.206

Starting Nmap 6.40 ( http://nmap.org ) at 2015-03-22 19:33 Hora estándar Montañas (México)

Nmap scan report for 80.82.78.206

Host is up (0.19s latency).

Not shown: 982 closed ports

PORT     STATE    SERVICE      VERSION

21/tcp   open     ftp          Pure-FTPd

22/tcp   open     ssh          OpenSSH 5.3 (protocol 2.0)

25/tcp   open     smtp         Exim smtpd 4.84

53/tcp   open     domain

80/tcp   open     http         Apache httpd 2.2.29 ((Unix) mod_ssl/2.2.29 OpenSSL/1.0.1e-fips mod_bwlimited/1.4)

110/tcp  open     pop3         Dovecot pop3d

135/tcp  filtered msrpc

139/tcp  filtered netbios-ssn

143/tcp  open     imap         Dovecot imapd

443/tcp  open     ssl/http     Apache httpd 2.2.29 ((Unix) mod_ssl/2.2.29 OpenSSL/1.0.1e-fips mod_bwlimited/1.4)

445/tcp  filtered microsoft-ds

465/tcp  open     ssl/smtp     Exim smtpd 4.84

587/tcp  open     smtp         Exim smtpd 4.84

993/tcp  open     ssl/imap     Dovecot imapd

995/tcp  open     ssl/pop3     Dovecot pop3d

1025/tcp filtered NFS-or-IIS

3306/tcp open     mysql        MySQL (unauthorized)

6129/tcp filtered unknown

Device type: general purpose|firewall|WAP|webcam

Running (JUST GUESSING): Linux 2.6.X|3.X|2.4.X (94%), Check Point Linux 2.6.X (85%), Tandberg embedded (85%), Fortinet Linux 2.6.X (85%)

OS CPE: cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:2.6.18 cpe:/o:linux:linux_kernel:2.4 cpe:/h:tandberg:vcs cpe:/o:fortinet:linux_kernel:2.6

Aggressive OS guesses: Linux 2.6.32 - 2.6.39 (94%), Linux 3.2 - 3.6 (92%), Linux 2.6.32 - 3.0 (92%), Linux 3.4 (91%), Linux 2.6.39 (91%), Linux 2.6.32 (91%), Linux 2.6.32 - 2.6.35 (90%), Linux 3.1.9 (90%), Linux 3.5 (89%), Linux 3.0 - 3.9 (88%)

No exact OS matches for host (test conditions non-ideal).

Network Distance: 26 hops

Service Info: Host: server.animextremist.com



OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .

Nmap done: 1 IP address (1 host up) scanned in 44.42 seconds


Una de las paginas que no mencione aqui para obtener una mayor informacion es ir a archive.org y ver las paginas de antes ya que muchas veces se encuentran todavia disponibles.

XSS: http://www.animextremist.com/profile/chapter.php?resume_id=69&user=Seiji&user_id=6"></title><script>alert(/arthusu/)</script>



2.- Testeo y Evaluacion

Este paso mas que nada es encontrar vulnerabilidades y obtener acceso, para ello podemos ayudarnos de un sin fin de herramientas pero las que mas utilizo son:

* Acunetix (Detectar vulnerabilidades)
* Vega (Escaner de Vulnerabilidades)
* Waf00f (Detectar Firewall)
* Nikto (Detectar vulnerabilidades)
* NMAP (Servicios)
* ZAP (Directorios,Campos de entrada,  DirBuster)
* Burp Suite  (Directorios, Spider)
* Nessus (Detectar Vulnerabilidades)
* Metasploit (Explotar Vulnerabilidades)
* Google (Recolectar informacion)

A mi en lo personal no me gusta muchos utilizar herramientas, no es por que no sean buenas, sino por que muchas veces hacen mucho "ruido" y alertan rapidamente a un firewall o al administrador. Ademas de aveces tardar demasiado.

En el paso anterior encontramos una vulnerabilidad SQLi sin necesidad de usar herramientas.

Pero no hay nada de malo en usar herramientas ya que traen muchas vulnerabilidades que puedes no conocer ya que sea actualizan dia a dia. Y podemos obtener informacion muy interesante de ellas.


Hay otro tipo de ataque que al parecer se presenta mucho en esta pagina que es bruteforce.


Lo siguiente que podemos hacer es buscar exploits para los servicios anteriores usando Google, ejemplo:


OpenSSL/1.0.1e-fips  exploit




3.- Redaccion de Reportes


Esta suele ser la parte mas aburrida ya que tienes que redactar todo lo que hicistes para encontrar vulnerabilidades, ya sea a nivel web o sistema, tienes que redactarlo bonito de una manera que los "clientes" lo entiendan. Para una mejor redaccion puedes utilizar una plantilla e ir ordenando todas las vulnerabilidades encontradas anteriormente en un archivo final entregado al cliente.

Les dejare algunas plantillas utiles para crear su reporte final.


Security_Assessment_Template.doc
V_Scan_Handout_Sample_Report.pdf
App_CA_Security_Assessment_Summary_Template_030408...


Despedida


Hasta aqui termina este pequeño "tutorial", intente no hacerlo largo por que se aburririan. Espero que a mas de uno les sea de utilidad. Le agradesco a Cesar de Alguienenlafisi por ayudarme, y a todas las personas que me han ayudado en este largo camino.





No hay comentarios:

Publicar un comentario en la entrada