Hackear paginas web II (Fingerprinting and Information gathering)

En el articulo anterior (como hackear paginas web, en serio) de esta serie, se vio lo básico de las vulnerabilidades web mas comunes, que si bien no son todas ni son muchas las que se cubrieron, y no están cubiertas a un nivel muy profundo, nos dan un overview básico de por que un sitio web puede ser comprometido y nos dan un par de enlaces interesantes para ampliar nuestros conocimientos.

Nota: Quiero agradecer a COSO por permitirme utilizar su servidor para hacer las pruebas. No autorizo que nadie mas lo haga, aunque tal vez me autorice a mi para investigar quien esta intentando hacer fingerprinting de su servidor en un futuro. (seria interesante para un capitulo 3)

Quiero aclarar que este articulo lo escribo para mi mismo con fines de aprender y comprender mas del tema, y tener una referencia mas clara para utilizar en algún momento en el qué me pueda ser útil. En mi opinión, el tener una habilidad no nos da el derecho ni la obligación de usarla como queramos, y es responsabilidad de cada una de las personas que lea este articulo el uso que haga de él.

El propósito de este articulo es descubrir con quien tratamos: El servidor al que estamos investigando, de ahora en mas nombrado como COSO, ¿Qué versión de apache corre? ¿Corre un CMS en nadakedecir.net? y si es asi, ¿Qué versión es?, y ¿Qué plugins tiene instalados? Otras preguntas interesantes son ¿Existe algún medio de contacto que podría usar para comunicarme con COSO? ¿Puedo llegar a encontrar un dump de la base de datos en su public_html? Procedemos a responderlas todas.

Nota: La intención de este articulo no es ilustrar como se instalan las herramientas, ni como se usan las herramientas, sino lo que se puede llegar a hacer con ellas.

Conociendo a COSO (¿Qué servidor usa COSO? ¿En que OS lo corre?)

Este es un post con muchas preguntas ya, y queremos empezar a querer tener alguna respuesta. El mundo del fingerprinting es muy gracioso, porque podemos interesarnos mucho en una computadora en la que no deberíamos interesarnos tanto. ¿Qué tanto nos podemos interesar? Veamos ahora…

Todo con mucho cuidado, porque COSO también se puede interesar mucho por sus clientes :). Ademas este tipo de herramientas dejan MUCHÍSIMAS evidencias en el servidor que estamos investigando.

Respecto a la pregunta, lo podemos saber usando nmap. Esto nos va a decir que puertos tiene abiertos:

root@droope-VirtualBox:~ nmap -sV -O -A -T4 nadakedecir.net
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.3.3c
22/tcp open ssh OpenSSH 4.3 (protocol 2.0)
[...snip...]
25/tcp open smtp qmail smtpd
[...snip...]
80/tcp open http Apache httpd
| robots.txt: has 2 disallowed entries
|_/wp-admin/ /wp-includes/
|_html-title: nadakedecir*
106/tcp open pop3pw poppassd
110/tcp open pop3 Courier pop3d
[...snip...]
143/tcp open imap Courier Imapd (released 2004)
[...snip...]
443/tcp open ssl/http Apache httpd
[...snip...]
465/tcp open ssl/smtp qmail smtpd
[...snip...]
587/tcp open smtp qmail smtpd
[...snip...]
993/tcp open ssl/imap Courier Imapd (released 2004)
[...snip...]
995/tcp open ssl/pop3 Courier pop3d
[...snip...]
3306/tcp open mysql MySQL 5.1.54
[...snip...]
8443/tcp open ssl/https-alt?

Y tambien nos va a decir que sistema operativo potencialmente esta corriendo:

Running (JUST GUESSING) : Linux 2.6.X|2.4.X (94%), Google embedded (90%), Cisco Linux 2.6.X (89%), Riverbed embedded (89%), Buffalo embedded (87%), D-Link embedded (86%), Linksys embedded (86%), HP embedded (86%)
Aggressive OS guesses: Linux 2.6.30 (94%), Linux 2.6.9 (91%), Google Mini search appliance (90%), Linux 2.6.18 (CentOS 5.1, x86) (90%), Linux 2.6.18 (90%), Linux 2.6.9 - 2.6.27 (90%), Linux 2.6.9 (CentOS 4.4) (89%), Linux 2.6.11 (89%), Riverbed Steelhead 200 proxy server (89%), Linux 2.6.28 (88%)
No exact OS matches for host (test conditions non-ideal).

Esto también nos dijo que CMS esta usando, pero para hacerme el misterioso no voy a decir por que. Si abandonáramos el tutorial exactamente en este momento, ya sabríamos que COSO esta corriendo un worpdress. De todas maneras lo vamos a determinar mas adelante.

¿Quién es COSO? y ¿Cómo me contacto con él?

Lo mas importante al encontrar una vulnerabilidad es encontrar la forma de contactarnos con el dueño del sitio web para que él pueda arreglarla antes de que alguien con malas intenciones la encuentre. En este tutorial no nos vamos a interesar en encontrar vulnerabilidades, pero quizás queramos contactarnos con el usuario por otros motivos.

Usando theHarvester vamos a obtener información sobre los humanos que trabajan con este dominio y otras cosas sobre el PC:

root@pc:~# python theHarvester.py -d nadakedecir.net -l 500 -b all
*************************************
*TheHarvester Ver. 2.1 (reborn)     *
*Coded by Christian Martorella      *
*Edge-Security Research             *
*cmartorella@edge-security.com      *
*************************************

Full harvest..
[-] Searching in Google..
	Searching 0 results...
	Searching 100 results...
	Searching 200 results...
	Searching 300 results...
	Searching 400 results...
	Searching 500 results...
[-] Searching in PGP Key server..
[-] Searching in Bing..
	Searching 100 results...
	Searching 200 results...
	Searching 300 results...
	Searching 400 results...
	Searching 500 results...
[-] Searching in Exalead..
	Searching 100 results...
	Searching 200 results...
	Searching 300 results...
	Searching 400 results...
	Searching 500 results...
	Searching 600 results...

[+] Emails found:
------------------
No emails found

[+] Hosts found in search engines:
------------------------------------
72.10.32.61:www.nadakedecir.net
72.10.32.61:mail.nadakedecir.net

[+] Proposed SET
---------------
[]
[+] Virtual hosts:
==================
72.10.32.61:www.twitter.korochi.com
72.10.32.61:notengoenie.com
72.10.32.61:naotenhocedilha.com
72.10.32.61:evapedroza.com
72.10.32.61:barquitosdepapel.com
72.10.32.61:www.eckell.com
72.10.32.61:www.avioncitosdepapel.com
72.10.32.61:juguetesdoblo.com
72.10.32.61:korochi.com
72.10.32.61:www.conaini.com.ar
72.10.32.61:www.quierohablarconelgerente.com
72.10.32.61:lucasworcel.com
72.10.32.61:nadakedecir.net
72.10.32.61:www.iguanaovera.com.ar
72.10.32.61:ipa.notengoenie.com
72.10.32.61:fabulosospremios.com.ar
72.10.32.61:korochi.net
72.10.32.61:ceciliasluga.com
72.10.32.61:coqueterias.net
72.10.32.61:www.ahhhproject.com.ar
72.10.32.61:www.worcel.com
72.10.32.61:twitter.korochi.com
72.10.32.61:iguanaovera.com.ar

Bueno! No nos vamos a poder comunicar con COSO. Ahi tenemos un par de otros hosts que se corren en la misma computadora, que tambien pueden ser puntos de entrada en este caso.

COSO, ¿Corre un CMS en nadakedecir.net?

Ahora vamos al jugo, investiguemos si COSO tiene un CMS instalado en su servidor. Para eso, vamos a hacer WAFP, o Web application finger printing. Es un nombre muy cheto, pero basicamente nos sirve para saber que es lo que e que tiene hostiao ai. Importante mencionar que deberian sin falta clickear ese link que les dejo ahi, porque probablemente sea un mucho mejor articulo que este.

La app que me afane de ese web para probar, es whatweb. A ver que hace:

root@pc:~# ./whatweb nadakedecir.net
http://nadakedecir.net [200] Apache, Country[UNITED STATES][US], Email[nadakedecirnet@gmail.com], HTTPServer[Apache], IP[72.10.32.61], MetaGenerator[WordPress 3.4.2], Plesk[Lin], Script[text/javascript], Title[ nadakedecir*], WordPress[3.4.2], X-Powered-By[PleskLin], x-pingback[http://nadakedecir.net/xmlrpc.php]

Bueno! Quien te dice! Encontro un mail, no me la esperaba: nadakedecirnet@gmail.com. Genial, considerando que esta en la primera página, debería haberlo encontrado el harvester. En definitiva yo ya sabía que esto era un wordpress, porque el escaneo del nmap me tiró un link al archivo robots.txt, que decía:

User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/

Tambien sabía que era un 3.4 porque hay un archivo de README que los wodpress dejan muy amablemente. Recomiendo el lugar donde aprendí esto, FLU project, que tiene una guia para fingerprinting de wordpress.

Tambien vamos a hacer uso de su aplicacion que nos permite determinar los plugins que tiene instalados un wordpress. Necesitamos descargar Flunym0us y tambien una lista de los plugins mas usados de wordpress, por ejemplo esta.

Sin mas, la corremos (tarda un buen rato, tiene que hacer miles de peticiones al servidor. Recomiendo cancelarlo luego de un tiempo.)

root@pc:~# python flunym0us.py -wp http://nadakedecir.net wp-plugins.lst

 Flunym0us is a scanner that allows you retrieve a list of all installed plugins
 in WordPress and Moodle

 Plugins:

 wp-db-backup

Asi que ahi tenemos un plugin, que podria tener una vulnerabilidad conocida, aunque no creo que sea el caso. Tambien podemos sospechar que, si el servidor esta mal configurado, el WP_BACKUP_DIR podria ser publico, creo que no es el caso.

Vamos a investigar eso con dirb. Esta complicado, hay que compilarlo, pero eventualmente hay que compilar algo. Yo lo compile, viene con wordlists en la carpeta worlists del source. Hay una alternativa en java llamada dirbuster, pero yo la verdad no soy un gran fanatico de las interfaces graficas. Lo voy a correr con dos diccionarios.

root@ip-10-29-235-201:/home/ubuntu/dirb# dirb http://nadakedecir.net/ wordlists/big.txt,wordlists/vulns/apache.txt

-----------------
DIRB v2.03
By The Dark Raver
-----------------

START_TIME: Fri Sep 21 00:56:00 2012
URL_BASE: http://nadakedecir.net/
WORDLIST_FILES: wordlists/big.txt,wordlists/vulns/apache.txt

-----------------

GENERATED WORDS: 4234

---- Scanning URL: http://nadakedecir.net/ ----
+ http://nadakedecir.net//
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/0/
    ==> DIRECTORY
+ http://nadakedecir.net/1
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/2
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/20
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/3
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/30
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/A
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/D
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/E
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/G
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/J
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/L
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/M
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/S
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/V
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/a
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/admin
    (FOUND: 302 [Moved Temporarily] - Size: 0)
+ http://nadakedecir.net/ar
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/archivo
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/archivos
    (FOUND: 200 [Ok] - Size: 17792)
+ http://nadakedecir.net/atom
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/cgi-bin/
    (FOUND: 403 [Forbidden] - Size: 275)
+ http://nadakedecir.net/css/
    ==> DIRECTORY
+ http://nadakedecir.net/d
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/demo/
    ==> DIRECTORY
+ http://nadakedecir.net/do
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/e
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/en
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/feed
    (FOUND: 200 [Ok] - Size: 10973)
+ http://nadakedecir.net/g
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/gr
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/img/
    ==> DIRECTORY
+ http://nadakedecir.net/j
    (FOUND: 301 [Moved Permanently] - Size: 0)

Esta es una busqueda de fuerza bruta, y si bien puede aportar algunos resultados, la verdad es que no sirve mucho. Vamos a hacer que la busqueda sea un poco mas efectiva. El comando que vamos a usar es

dirb http://nadakedecir.net/ wordlists/common.txt,wordlists/vulns/apache.txt -x mutations_common.txt

que significa: usame los diccionarios common y vulnerabilidades y agregale las extensiones de respaldo mas comunes. Basicamente estoy buscando un archivo, por ejemplo index.php~ que seria un respaldo de index.php. Lo corri por bastante tiempo, pero la verdad es que todavia no encontro nada. Habria que tunear las wordlists para que tengan info mas relevante.

Asique eso seria todo, el resumen ejecutivo seria este:

  • ¿Qué versión de apache corre? Lo averiguo usando NMAP.
  • ¿Corre un CMS en nadakedecir.net? ¿Qué version es? ¿Qué plugins tiene instalados? Lo averiguo usando whatweb && flunym0us
  • ¿Existe algún medio de contacto que podría usar para comunicarme con COSO? Lo averiguo usando theHarvester
  • ¿Puedo llegar a encontrar un dump de la base de datos en su public_html? Lo averiguo usando dirb

Ahora la pregunta que se me ocurre es, ¿Qué otras cosas sería interesante averiguar?

¡Espero su input en los comentarios!

Un abrazo enorme,
Pedro

7 Respuestas a “Hackear paginas web II (Fingerprinting and Information gathering)

  1. Bastante interesante me voy familiarizando con el tema,no sabia que se utilizaba linux,aver si te haces un post hackeando a un windows server 2008, ahh y me olvidaba ,ctienes akgunos cursillos o algunos manuales introductorios para empezar a hacer hacking a las paginas web, desde ya muchas gracias este es mi correo mrluisito5@gmail.com

    • Hola amigo!

      No se muy bien mucho sobre windows server, pero creo que este tipo de vulnerabilidades podria llegar a aplicar. Lo unico que cambiaria, y bastante, son las RFI y las LFI. :) Ahi es donde tus conocimientos del sistema son fundamentales.

      Un abrazo,
      Pedro

  2. Pingback: Compilado de enlaces | programacion@droope