Escanear extensiones de archivo específicas en Gobuster

Beginner
Practicar Ahora

Introducción

Gobuster es una herramienta potente utilizada para la fuerza bruta de directorios y archivos en servidores web. Si bien se usa comúnmente para descubrir directorios ocultos, también se puede aprovechar para encontrar archivos con extensiones específicas. Esta capacidad es crucial en las pruebas de penetración y las evaluaciones de seguridad, ya que ayuda a identificar posibles puntos de entrada, archivos sensibles o configuraciones erróneas que podrían no ser inmediatamente obvias. Por ejemplo, encontrar archivos .php podría indicar una aplicación web, mientras que los archivos .bak o .old podrían revelar copias de seguridad de datos sensibles.

En este laboratorio, aprenderá a utilizar eficazmente la bandera -x de Gobuster para dirigirse a extensiones de archivo específicas durante su proceso de enumeración web. Comenzará identificando extensiones de archivo comunes y relevantes, construirá un comando básico de Gobuster y luego lo mejorará para incluir escaneo específico de extensiones. Finalmente, ejecutará el escaneo y analizará los resultados para comprender cómo interpretar la salida. Esta experiencia práctica le proporcionará una habilidad valiosa para un reconocimiento web más específico y eficiente.

Identificar extensiones de archivo de destino (ej. .php, .html)

En este paso, aprenderá a identificar extensiones de archivo comunes y relevantes que podría querer escanear durante una enumeración web. La elección de las extensiones a menudo depende de la pila tecnológica del objetivo (por ejemplo, .php para aplicaciones PHP, .aspx para ASP.NET, .jsp para aplicaciones Java) o de tipos de archivo comunes que podrían contener información sensible (por ejemplo, .txt, .bak, .zip, .sql).

Para este laboratorio, nos centraremos en algunas extensiones comunes relacionadas con la web: .php, .html y .txt. Estos se encuentran con frecuencia y sirven como buenos ejemplos para demostrar las capacidades de Gobuster.

Puede enumerar algunas extensiones comunes a tener en cuenta para sus escaneos. Si bien no necesita ejecutar ningún comando en este paso, comprender los tipos de archivos que está buscando es el primer paso crucial en cualquier escaneo dirigido.

Considere las siguientes extensiones comunes:

  • .php: Scripts PHP
  • .html, .htm: Páginas HTML
  • .txt: Archivos de texto, a menudo que contienen notas o registros
  • .js: Archivos JavaScript
  • .css: Hojas de estilo en cascada (Cascading Style Sheets)
  • .xml: Archivos XML
  • .json: Archivos de datos JSON
  • .bak, .old, .orig: Archivos de copia de seguridad
  • .zip, .tar.gz: Archivos comprimidos
  • .sql: Volcados de bases de datos

Saber qué extensiones apuntar ayuda a acotar su búsqueda y hace que su enumeración sea más eficiente.

Construir el comando base de gobuster dir

En este paso, construirá el comando básico gobuster dir. El modo dir en Gobuster se utiliza para la fuerza bruta de directorios y archivos. Antes de agregar opciones específicas de extensión de archivo, es una buena práctica comprender la estructura fundamental del comando.

Los componentes esenciales de un comando gobuster dir son:

  • gobuster dir: Especifica el modo (fuerza bruta de directorios/archivos).
  • -u <URL>: Especifica la URL de destino. Para este laboratorio, nuestro objetivo será http://localhost:8000, que está sirviendo archivos desde /tmp/web_root.
  • -w <wordlist>: Especifica la lista de palabras (wordlist) a utilizar para la fuerza bruta. Una lista de palabras común para la enumeración web es common.txt o directory-list-2.3-medium.txt. Para simplificar y agilizar en este laboratorio, utilizaremos una pequeña lista de palabras personalizada que incluye index, about, notes y admin.

Creemos una lista de palabras simple en su directorio ~/project.

echo -e "index\nabout\nnotes\nadmin\nconfig" > ~/project/small_wordlist.txt

Ahora, construyamos el comando base sin extensiones. Este comando intentará encontrar directorios o archivos que coincidan con las entradas en small_wordlist.txt.

gobuster dir -u http://localhost:8000 -w ~/project/small_wordlist.txt

Verá una salida similar a esta, mostrando los directorios/archivos encontrados sin extensiones específicas:

...
/index (Status: 200)
/about (Status: 200)
/notes (Status: 200)
/admin (Status: 200)
/config (Status: 200)
...

Esta salida muestra que Gobuster encontró entradas que coinciden con la lista de palabras, pero aún no nos dice sus tipos de archivo específicos.

Añadir la bandera -x para especificar extensiones

En este paso, aprenderá a utilizar la bandera -x en Gobuster para especificar las extensiones de archivo que desea escanear. Este es el núcleo para encontrar archivos de tipos específicos.

La bandera -x acepta una lista de extensiones separadas por comas. Por ejemplo, para escanear archivos .php y .html, usaría -x php,html. Gobuster luego agregará estas extensiones a cada entrada de su lista de palabras e intentará encontrar archivos como index.php, about.html, etc.

Modifiquemos el comando anterior para incluir las extensiones .php, .html y .txt.

gobuster dir -u http://localhost:8000 -w ~/project/small_wordlist.txt -x php,html,txt,bak

Este comando le indica a Gobuster que busque index.php, index.html, index.txt, index.bak, about.php, about.html, about.txt, about.bak, y así sucesivamente, para cada entrada en su lista de palabras.

Ejecute el comando y observe la salida. Ahora debería ver resultados que incluyan explícitamente las extensiones de archivo.

...
/index.php (Status: 200)
/about.html (Status: 200)
/notes.txt (Status: 200)
/admin.php (Status: 200)
/config.bak (Status: 200)
...

Observe cómo la salida ahora muestra claramente los nombres de los archivos con sus respectivas extensiones, lo que indica que Gobuster encontró con éxito estos archivos.

Ejecutar el escaneo contra el objetivo

En este paso, ejecutará el comando completo de Gobuster con las extensiones especificadas contra nuestro objetivo simulado. Esta es la aplicación práctica de lo que ha aprendido.

Utilizaremos el comando del paso anterior, que incluye la URL de destino, la lista de palabras personalizada y la bandera -x con las extensiones .php, .html, .txt y .bak.

gobuster dir -u http://localhost:8000 -w ~/project/small_wordlist.txt -x php,html,txt,bak

Cuando ejecute este comando, Gobuster comenzará a iterar a través de la lista de palabras, agregando cada extensión especificada y realizando solicitudes al servidor http://localhost:8000.

La salida mostrará los archivos que descubre junto con sus códigos de estado HTTP. Un código de estado 200 OK indica que el archivo se encontró correctamente.

===============================================================
Gobuster v3.6
by OJ (https://github.com/OJ/gobuster)
===============================================================
[+] Url:                     http://localhost:8000
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /home/labex/project/small_wordlist.txt
[+] Extensions:              php,html,txt,bak
[+] Timeout:                 10s
===============================================================
2024/01/01 12:00:00 Starting gobuster in directory enumeration mode
===============================================================
/index.php            (Status: 200)
/about.html           (Status: 200)
/notes.txt            (Status: 200)
/admin.php            (Status: 200)
/config.bak           (Status: 200)
===============================================================
2024/01/01 12:00:00 Finished
===============================================================

Esta salida confirma que Gobuster identificó correctamente index.php, about.html, notes.txt, admin.php y config.bak en el servidor de destino.

Revisar los resultados de archivos con extensiones específicas

En este último paso, revisará e interpretará los resultados obtenidos de su escaneo con Gobuster. Comprender la salida es crucial para identificar información valiosa durante una evaluación de seguridad.

La salida del paso anterior enumera claramente los archivos encontrados junto con sus códigos de estado HTTP.

===============================================================
Gobuster v3.6
by OJ (https://github.com/OJ/gobuster)
===============================================================
[+] Url:                     http://localhost:8000
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /home/labex/project/small_wordlist.txt
[+] Extensions:              php,html,txt,bak
[+] Timeout:                 10s
===============================================================
2024/01/01 12:00:00 Starting gobuster in directory enumeration mode
===============================================================
/index.php            (Status: 200)
/about.html           (Status: 200)
/notes.txt            (Status: 200)
/admin.php            (Status: 200)
/config.bak           (Status: 200)
===============================================================
2024/01/01 12:00:00 Finished
===============================================================

Aquí se explica qué significa cada línea:

  • /index.php (Status: 200): Indica que se encontró un archivo llamado index.php en la raíz del servidor web y que el servidor respondió con un estado 200 OK, lo que significa que la solicitud fue exitosa.
  • /about.html (Status: 200): De manera similar, se encontró about.html.
  • /notes.txt (Status: 200): Se encontró un archivo de texto llamado notes.txt. Este podría contener información sensible.
  • /admin.php (Status: 200): Se encontró un archivo admin.php. Esta podría ser una interfaz administrativa, que a menudo es un objetivo para una mayor investigación.
  • /config.bak (Status: 200): Se encontró un archivo de respaldo llamado config.bak. Los archivos de respaldo a menudo contienen detalles de configuración sensibles o código fuente.

Al revisar estos resultados, puede identificar archivos que podrían ser interesantes para una mayor investigación. Por ejemplo, podría intentar acceder a /admin.php en un navegador web o descargar /config.bak para examinar su contenido.

Este escaneo dirigido por extensiones ayuda a descubrir archivos ocultos u olvidados que podrían conducir a vulnerabilidades o divulgación de información.

Resumen

En este laboratorio, ha aprendido con éxito a utilizar Gobuster para escanear extensiones de archivo específicas en un servidor web de destino. Comenzó comprendiendo la importancia de identificar extensiones de archivo relevantes, luego construyó un comando básico de gobuster dir y, finalmente, lo mejoró utilizando la bandera -x para dirigirse a archivos .php, .html, .txt y .bak.

Ejecutó el escaneo contra un servidor web simulado e interpretó los resultados, identificando varios archivos con sus respectivas extensiones y códigos de estado HTTP. Esta habilidad es invaluable para la enumeración web durante las pruebas de penetración, ya que le permite descubrir archivos ocultos que podrían contener información sensible, revelar la pila tecnológica o exponer posibles puntos de entrada.

Al dominar el uso de la bandera -x, puede realizar un reconocimiento más específico y eficiente, mejorando significativamente su capacidad para descubrir vulnerabilidades en aplicaciones web. Continúe practicando con diferentes listas de palabras y combinaciones de extensiones para perfeccionar aún más sus habilidades de enumeración web.