Inicio Overthewire - Bandit (26-30)
Entrada
Cancelar

Overthewire - Bandit (26-30)

Penúltima entrada de los retos de Bandit, y en él, se agrupan los retos relacionados con git, programa usado para realizar control de versiones de los ficheros.

Es muy usado en entornos de desarrollo, para generar diferentes ramas, poder volver atrás en algún punto, y para poder publicar el código desarrollado en repositorios online, como puedan ser Github o Gitlab.

El problema del control de versiones, es que cierta información puede quedar expuesta, y se debe tener cuidado, como se verá a continuación.


Bandit 26.

El enunciado dice que se intente ahora conseguir la contraseña para el usuario bandit27, lo que hace entender es que el reto 26 es la continuación del 25.

Accediendo con el usuario bandit26 con el método del usuario reto 25 se debe enumerar el directorio del usuario bandit26 para ver que se debe hacer, puesto que no se facilita más información.

1
2
3
4
bandit26@bandit:~$ ls -lrt
total 12
-rw-r----- 1 bandit26 bandit26  258 May  7  2020 text.txt
-rwsr-x--- 1 bandit27 bandit26 7296 May  7  2020 bandit27-do

Dentro del directorio se encuentran el fichero usado en el reto anterior para mostrar el banner en ascii, y otro fichero que al revisar, se puede observar que es un binario ELF compilado, que además dispone de permisos SUID para el usuario bandit27.

1
2
bandit26@bandit:~$ file bandit27-do
bandit27-do: setuid ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=8e941f24b8c5cd0af67b22b724c57e1ab92a92a1, not stripped

Al ejecutarlo, se puede ver que dice la ayuda, que sirve para lanzar comandos como otro usuario, por lo tanto, se debe buscar la contraseña del usuario siguiente en el directorio donde se encuentran todas las contraseñas aprovechando que se está ejecutando el comando cat como si del usuario bandit27 se tratase, obteniendo la contraseña del usuario bandit27.

1
2
bandit26@bandit:~$ ./bandit27-do cat /etc/bandit_pass/bandit27
3ba3118a22e93127a4ed485be72ef5ea

Bandit 27.

El enunciado dice que hay un repositorio git en ssh://bandit27-git@localhost/home/bandit27-git/repo y que la contraseña para el usuario bandit27-git es la misma que para el usuario bandit27. Informa que para obtener la contraseña, se debe clonar y buscar la contraseña dentro.

Para obtener la contraseña del siguiente nivel, se ha creado un directorio en el directorio /tmp, que es el único lugar del sistema de ficheros con permisos de escritura para el usuario bandit27.

1
2
bandit27@bandit:~$ mkdir /tmp/git
bandit27@bandit:~$ cd !$

Una vez dentro, se clona el repositorio según dice el enunciado, introduciendo la contraseña del usuario actual.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
bandit27@bandit:~$ git clone ssh://bandit27-git@localhost/home/bandit27-git/repo
Cloning into 'repo'...
Could not create directory '/home/bandit27/.ssh'.
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:98UL0ZWr85496EtCRkKlo20X3OPnyPSB5tB5RPbhczc.
Are you sure you want to continue connecting (yes/no)? yes
Failed to add the host to the list of known hosts (/home/bandit27/.ssh/known_hosts).
This is a OverTheWire game server. More information on http://www.overthewire.org/wargames

bandit27-git@localhost's password:
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), 288 bytes | 0 bytes/s, done.

Dentro del repositorio existe el fichero README que contiene la contraseña del siguiente usuario.

1
2
bandit27@bandit:~$ cat README
The password to the next level is: 0ef186ac70e04ea33b4c1853d2526fa2

Bandit 28.

Para este reto, existe otro repositorio git en ssh://bandit28-git@localhost/home/bandit28-git/repo, el cual se debe clonar y buscar la contraseña entre sus ficheros o mediante los comandos git.

Como en el nivel anterior, se crea un directorio dentro del directorio /tmp

1
2
bandit28@bandit:~$ mkdir /tmp/gitbandit28
bandit28@bandit:~$ cd !$

Se clona el repositorio con la contraseña del usuario actual, que es la misma que la del usaurio del repositorio.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bandit28@bandit:~$ git clone ssh://bandit28-git@localhost/home/bandit28-git/repo
Cloning into 'repo'...
Could not create directory '/home/bandit28/.ssh'.
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:98UL0ZWr85496EtCRkKlo20X3OPnyPSB5tB5RPbhczc.
Are you sure you want to continue connecting (yes/no)? yes
Failed to add the host to the list of known hosts (/home/bandit28/.ssh/known_hosts).
This is a OverTheWire game server. More information on http://www.overthewire.org/wargames

bandit28-git@localhost's password:
remote: Counting objects: 9, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 9 (delta 2), reused 0 (delta 0)
Receiving objects: 100% (9/9), done.
Resolving deltas: 100% (2/2), done.

Ubicado en la ruta del repositorio, se accede a los logs de éste para que muestre los comits realizados, puesto que en esta ocasión, el fichero README.md no tiene la información.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bandit28@bandit:~$ git log
commit edd935d60906b33f0619605abd1689808ccdd5ee
Author: Morla Porla <morla@overthewire.org>
Date:   Thu May 7 20:14:49 2020 +0200

    fix info leak

commit c086d11a00c0648d095d04c089786efef5e01264
Author: Morla Porla <morla@overthewire.org>
Date:   Thu May 7 20:14:49 2020 +0200

    add missing data

commit de2ebe2d5fd1598cd547f4d56247e053be3fdc38
Author: Ben Dover <noone@overthewire.org>
Date:   Thu May 7 20:14:49 2020 +0200

    initial commit of README.md

Se puede observar que existen 3 comits, el inicial, uno que añade información perdida, y por último, uno que dice arreglar una fuga de información.

Por tanto, se accede al segundo y se vuelve a ver el contenido del fichero README.md para obtener la contraseña del siguiente usuario.

1
2
3
bandit28@bandit:~$ git checkout c086d11a00c0648d095d04c089786efef5e01264
Previous HEAD position was de2ebe2... initial commit of README.md
HEAD is now at c086d11... add missing data
1
2
3
4
5
6
7
8
bandit28@bandit:/tmp/gitbandit28/repo$ cat README.md
# Bandit Notes
Some notes for level29 of bandit.

## credentials

- username: bandit29
- password: bbc96594b4e001778eee9975372716b2

Bandit 29.

Para este reto, existe otro repositorio git en ssh://bandit29-git@localhost/home/bandit29-git/repo el cual se debe clonar y obtener la contraseña dentro.

Se crea el directorio de trabajo en el directorio /tmp como en los retos anteriores.

1
2
bandit29@bandit:~$ mkdir /tmp/gitbandit29
bandit29@bandit:~$ cd !$

Se clona el repositorio con la contraseña del usuario actual, que es la misma que la del usaurio del repositorio.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bandit29@bandit:~$ git clone ssh://bandit29-git@localhost/home/bandit29-git/repo
Cloning into 'repo'...
Could not create directory '/home/bandit29/.ssh'.
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:98UL0ZWr85496EtCRkKlo20X3OPnyPSB5tB5RPbhczc.
Are you sure you want to continue connecting (yes/no)? yes
Failed to add the host to the list of known hosts (/home/bandit29/.ssh/known_hosts).
This is a OverTheWire game server. More information on http://www.overthewire.org/wargames

bandit29-git@localhost's password:
remote: Counting objects: 16, done.
remote: Compressing objects: 100% (11/11), done.
Receiving objects: 100% (16/16), done.
remote: Total 16 (delta 2), reused 0 (delta 0)
Resolving deltas: 100% (2/2), done.

Al revisar el fichero README.md dice que no se pongan contraseñas en producción, por lo que se puede intuir que puede que haya en desarrollo o en otro entorno.

1
2
3
4
5
6
7
8
bandit29@bandit:~$ cat README.md
# Bandit Notes
Some notes for bandit30 of bandit.

## credentials

- username: bandit30
- password: <no passwords in production!>

Se verifican las ramas a las que puede apuntar HEAD mediante el fichero .git/FETCH_HEAD, donde se verifica que existe una llamada dev.

1
2
3
4
bandit29@bandit:~$ cat FETCH_HEAD
208f463b5b3992906eabf23c562eda3277fea912                branch 'master' of ssh://localhost/home/bandit29-git/repo
bc833286fca18a3948aec989f7025e23ffc16c07        not-for-merge   branch 'dev' of ssh://localhost/home/bandit29-git/repo
786d5bea2bd2dcbed2c8896a310c3c5306bc713c        not-for-merge   branch 'sploits-dev' of ssh://localhost/home/bandit29-git/repo

Por lo tanto, se cambia el puntero a la rama dev y se verifica el contenido del fichero README.md, obteniendo la contraseña del usuario bandit30.

1
2
3
bandit29@bandit:~$ git checkout dev
Branch dev set up to track remote branch dev from origin.
Switched to a new branch 'dev'
1
2
3
4
5
6
7
8
bandit29@bandit:~$ cat README.md
# Bandit Notes
Some notes for bandit30 of bandit.

## credentials

- username: bandit30
- password: 5b90576bedb2cc04c86a9e924ce42faf

Bandit 30.

El reto 30 tiene otro repositorio git que se debe clonar y buscar la contraseña en ssh://bandit30-git@localhost/home/bandit30-git/repo.

Se realiza la creación del directorio de trabajo dentro del directorio /tmp como en los puntos anteriores.

1
2
bandit30@bandit:~$ mkdir /tmp/gitbandit30
cd !$

Se clona el repositorio con la contraseña del usuario actual, que es la misma que la del usaurio del repositorio.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bandit30@bandit:~$ git clone ssh://bandit30-git@localhost/home/bandit30-git/repo
Cloning into 'repo'...
Could not create directory '/home/bandit30/.ssh'.
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:98UL0ZWr85496EtCRkKlo20X3OPnyPSB5tB5RPbhczc.
Are you sure you want to continue connecting (yes/no)? yes
Failed to add the host to the list of known hosts (/home/bandit30/.ssh/known_hosts).
This is a OverTheWire game server. More information on http://www.overthewire.org/wargames

bandit30-git@localhost's password:
Permission denied, please try again.
bandit30-git@localhost's password:
remote: Counting objects: 4, done.
Receiving objects: 100% (4/4), 298 bytes | 0 bytes/s, done.
remote: Total 4 (delta 0), reused 0 (delta 0)

Entonces, se verifica el contenido del fichero README.md, pero dice que es un fichero vacío.

1
2
bandit30@bandit:~$ cat README.md
just an epmty file... muahaha

Se revisan los logs, la configuración y las ramas, pero no se encuentra nada, hasta listar las tags del repositorio, donde se encuentra una llamada secret.

1
2
bandit30@bandit:~$ git tag
secret

Se muestra el contenido de la etiqueta secret para obtener la contraseña del usuario bandit31.

1
2
bandit30@bandit:~$ git show secret
47e603bb428404d265f59c42920d81e5
Esta entrada está licenciada bajo CC BY 4.0 por el autor.