\   /\          __    _____        _____     _____ _ _____
)  ( ')        |  |  |  _  |   ___|  _  |___|  |  |_|_   _|___
(  /  )        |  |__|     |  |  _|     |_ -|     | | | | | .'| 
 \(__)|        |_____|__|__|  |___|__|__|___|__|__|_| |_| |__,|

 
 Ringzer0 es un wargame que en el que se pueden encontrar 248 retos.
Incluye retos de Linux, Cracking, Forensic, Web etc...
En esta entrada vamos a resolver todos los retos de  "Linux sysadmin".
Os podeis registrar gratuitamente en este wargame en el enlace: https://ringzer0team.com/
Este post es un spoiler absoluto respecto a los retos de Linux sysadmin, os recomiendo
tratar de intentarlo antes de ver este post!

LEVEL1
--------

Nuestra mision en el primer nivel es:
Find Trinity password

User: morpheus
Password: VNZDDLq2x9qXCzVdABbR1HOtz

Asi que bien, empezamos conectandonos al servidor usando ssh y los credenciales
que nos han indicado.

sml@aLiCe:~$ ssh for01.ringzer0team.com -l morpheus -p 13375
The authenticity of host '[for01.ringzer0team.com]:13375 ([24.37.41.154]:13375)' can't be established.
ECDSA key fingerprint is 6b:f4:cd:30:7d:04:6a:98:07:4c:6d:e6:85:19:52:59.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[for01.ringzer0team.com]:13375,[24.37.41.154]:13375' (ECDSA) to the list of known hosts.
morpheus@for01.ringzer0team.com's password: 

         _                             ____  __                     
   _____(_)___  ____ _____  ___  _____/ __ \/ /____  ____ _____ ___ 
  / ___/ / __ \/ __ `/_  / / _ \/ ___/ / / / __/ _ \/ __ `/ __ `__ \
 / /  / / / / / /_/ / / /_/  __/ /  / /_/ / /_/  __/ /_/ / / / / / /
/_/  /_/_/ /_/\__, / /___/\___/_/   \____/\__/\___/\__,_/_/ /_/ /_/ 
             /____/                                                 
                                      _ _             ___ _____ ___ 
                             ___ _ _ | (_)_ _  ___   / __|_   _| __|
                            / _ \ ' \| | | ' \/ -_) | (__  | | | _| 
                            \___/_||_|_|_|_||_\___|  \___| |_| |_|  
                                                                    

You have mail.
Last login: Fri Oct  9 16:47:56 2015 from 94.217.124.206
cat: egrep: Permission denied
morpheus@forensics:~$ 
Una vez dentro, tenemos que buscar el password de trinity. Teniendo en cuenta esto, vamos a buscar el string "trinity" para ver si encontramos algo en la carpeta /etc.
morpheus@forensics:~$ grep "trinity" -R /etc 2>&1 | grep -v "Permission denied"
/etc/rc.local:nohup /root/backup.sh -u trinity -p Flag-08grILsn3ekqhDK7cKBV6ka8B &
/etc/group:trinity:x:1002:
grep: /etc/nologin: No such file or directory
/etc/passwd:trinity:x:1002:1002:trinity,,,:/home/trinity:/bin/bash
morpheus@forensics:~$ 
Premio! Al ejecutar el comando podemos ver la flag en la primera linea.
/etc/rc.local:nohup /root/backup.sh -u trinity -p Flag-08grILsn3ekqhDK7cKBV6ka8B &
Asi que aqui tenemos nuestra flag: Flag-08grILsn3ekqhDK7cKBV6ka8B LEVEL2 ------ En el nivel dos, nuestra mision es encontrar la password del "arquitecto": Nos conectamos de nuevo con los credenciales que nos indican. User: morpheus Password: VNZDDLq2x9qXCzVdABbR1HOtz En este caso necesitamos ver donde esta la password del arquitecto, asi que como en el nivel anterior vamos a ver si encontramos algo interesante buscando por el string "architect".
morpheus@forensics:~$ grep "architect" -R /etc 2>&1 | grep -v "Permission denied"
/etc/fstab:#//TheMAtrix/phone  /media/Matrix  cifs  username=architect,password=$(base64 -d "RkxBRy14QXFXMnlKZzd4UERCV3VlVGdqd05jMW5WWQo="),iocharset=utf8,sec=ntlm  0  0
/etc/init.d/checkroot.sh:		# fail on older kernels on sparc64/alpha architectures due
/etc/aide/aide.conf.d/10_aide_hostname:if [ -n "$(dpkg --print-architecture)" ]; then
/etc/aide/aide.conf.d/10_aide_hostname:  echo "@@define ARCH $(dpkg --print-architecture)"
Binary file /etc/alternatives/cpp matches
Binary file /etc/alternatives/aptitude matches
Binary file /etc/alternatives/c++ matches
Binary file /etc/alternatives/php matches
Binary file /etc/alternatives/cc matches
/etc/group:architect:x:1006:
grep: /etc/nologin: No such file or directory
/etc/rcS.d/S06checkroot.sh:		# fail on older kernels on sparc64/alpha architectures due
/etc/passwd:architect:x:1006:1006::/home/architect:/bin/bash
morpheus@forensics:~$
En la primera linea aparece lo siguiente.
/etc/fstab:#//TheMAtrix/phone  /media/Matrix  cifs  username=architect,password=$(base64 -d "RkxBRy14QXFXMnlKZzd4UERCV3VlVGdqd05jMW5WWQo="),iocharset=utf8,sec=ntlm  0  0
Parece que la variable password contiene la password en base64, asi que vamos a usar el comando base64 para obtenerla.
morpheus@forensics:~$ echo RkxBRy14QXFXMnlKZzd4UERCV3VlVGdqd05jMW5WWQo= | base64 -d 
FLAG-xAqW2yJg7xPDBWueTgjwNc1nVY
Ahi la tenemos :) Nuestra segunda flag: FLAG-xAqW2yJg7xPDBWueTgjwNc1nVY LEVEL3 ------ En este nivel tenemos que buscarnos la vida para encontrar la flag (Dig for flag). Tal como nos indican tenemos que usar los siguienten credenciales: User: architect Password: architect password found in previous challenge Ya que nos hacen "entrar" con el usuario architect, lo primero que vamos a hacer es ver que ficheros son nuestros.
architect@forensics:~$ find / -user architect 2>&1 | grep -v "Permission denied"
/var/mail/architect
/var/www/index.php
/dev/pts/1
/proc/15806
/proc/15806/task
/proc/15806/task/15806
/proc/15806/task/15806/attr
/proc/15806/net
/proc/15806/attr
/proc/15807
/proc/15807/task
/proc/15807/task/15807
/proc/15807/task/15807/fd
/proc/15807/task/15807/fd/0
/proc/15807/task/15807/fd/1
/proc/15807/task/15807/fd/2
/proc/16383/task/16383/stack
/proc/16383/task/16383/cpuset
Parece que el fichero /var/www/index.php es nuestro, asi que vamos a verlo.:)
architect@forensics:~$ cat /var/www/index.php

', $res));
  exit();
}
$info = (object)array();
$info->username = "arch";
$info->password = "asdftgTst5sdf6309sdsdff9lsdftz";
$id = 1003;

function GetList($id, $info) {
        $id = 2;
        $link = mysql_connect("127.0.0.1", $info->username, $info->password);
        mysql_select_db("arch", $link);
        $result = mysql_query("SELECT * FROM arch");
        $output = array();
        while($row = mysql_fetch_assoc($result)) {
                array_push($output, $row);
        }
        var_dump($output);
        return $output;
}

$output = shell_exec('id');
echo "
$output
"; ?>
Parece que hemos encontrado informacion que puede sernos util. Las siguientes lineas indican como conectarnos a la BBDD con los credenciales que aparecen.
$mysqlDatabaseName ="arch";
$mysqlUserName ="arch";
$mysqlPassword ="asdftgTst5sdf6309sdsdff9lsdftz";
Vamos a probar la conexion al mysql usando ese usuario y password!
architect@forensics:/var/www$ mysql -u arch -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 41
Server version: 5.5.44-0+deb7u1 (Debian)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
Vale, estamos dentro. Vamos a mirar las bases de datos que hay.
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| arch               |
+--------------------+
2 rows in set (0.00 sec)

mysql> 
Bien, buscaremos en la BBDD "arch".
mysql> use arch;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

Now, we need to take a look to tables.

mysql> show tables;
+----------------+
| Tables_in_arch |
+----------------+
| arch           |
| flag           |
+----------------+
2 rows in set (0.00 sec)

mysql> 

Table called flag? :) Let's go!

mysql> select * from flag;
+---------------------------------+
| flag                            |
+---------------------------------+
| FLAG-0I68UrLA758G5G30806w637a4k |
+---------------------------------+
1 row in set (0.00 sec)

mysql> 
Y aqui tenemos nuestra flag!: FLAG-0I68UrLA758G5G30806w637a4k LEVEL4 ------ En este nivel tenemos que obtener acceso a la cuenta "oracle" Para ellos nos facilitan los siguientes credenciales. User: morpheus Password: VNZDDLq2x9qXCzVdABbR1HOtz Despues de recorrer varios directorios, parece que el directorio /backup puede tener algo interesante. Vamos a ver que encontramos en /backup si buscamos "oracle".
morpheus@forensics:/$ grep -R "oracle" /backup 2>&1 | grep -v "Permission denied"
Binary file /backup/c074fa6ec17bb35e168366c43cf4cd19 matches

morpheus@forensics:/backup$ cat c074fa6ec17bb35e168366c43cf4cd19 
home/0000775000175000017500000000000012405643330012526 5ustar  chamiltonchamiltonhome/oracle/0000750000175000017500000000000012405643355013773 5ustar  chamiltonchamiltonhome/oracle/.vimrc0000640000175000017500000000002312305510343015075 0ustar  chamiltonchamiltonset viminfo="NONE"
home/oracle/.bash_history0000600000175000017500000000000112405643367016461 0ustar  chamiltonchamilton
home/oracle/.ssh/0000700000175000017500000000000012310211340014615 5ustar  chamiltonchamiltonhome/oracle/.ssh/id_rsa0000600000175000017500000000321712310211305016007 0ustar  chamiltonchamilton-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAqBIMY0jPs4dvQqsyHreYccCOIMFrBy+el5Td8TNc8pQqINNr
WSefxANe4b0EaAZofvZbBGrHipyB6X+FgugXYqwB0uem06uTGnIdHAZyHV6IE9f/
hLCm+9nWOJfUvPNFbMaIizvzMVhO6GTGyxJ8zh/ASQXYBHSzyOxkmqDLB7zFteyJ
F7hv6s6W20TmpjhMQtOC0mYwn64ZCsVi2d1c7tFiw37cOutT1LfZaaAUBIwdpvL6
BFjqpNkxzwm105eFTDt4WZNKOZ9nOns18MHBHFOXk8WgAxC6gqtE2gr7cTBZsbwv
jXrte8oTtAWCv3YHSECH91NzE3DKVktCwr1bjQIDAQABAoIBAQCdefu9c1WZY4bu
MrYNbf0aaE9Dhbcgzo+Me+HQxE2MxSMMCsyEhsn9wSK/5Hkidw6mF3KEmwBIcgiP
nfqdA5YV0BENahw4LITyvIVl4uw9dHuQDEzQKSzswdkkwa6FNHOSThtWSl+9ln6o
5PQXBkWGZN2oDh+vXSGvWz+QWqSho8vufmTtYntfFPAfVfcyp8BtiUgKQh069uGg
XKnehmkrHoW9gQ2Lo0uaFWcTIGm1vsgBd7L4cfb98jDB63H+Lhf4UPYv4WmH2rrj
bnk5lAU71JK4QsPnnOx1PA685p2e5mEfh0LKRKq9Fx3+umbGPJGvgcjobtXaW9OT
mpaz6ZPBAoGBAM+diN8s/osQdi8odS9+HUWVZBa9Z2Dn0X2IlSxWK9u/UclhjYgP
i2KXEY0wRV+ZiXURmrFNVxgA/EJ9BOgptSZNmi9fEdfnVB4L11T7HFny/J8u3sXt
dn0OqHmf5ZEPtV7m0bK0jtznTgTTuBI9yXvRgHO2HQPCshdP7GIgt++lAoGBAM89
Pd7HyMYnh0ancCTICkVIIWF6Ylf20BKz4Zwy9tYASCxY3iFllBdOXw/UgCnmJseQ
73Dcimi5OEyUckOp7xX4HTwidFVbxfNeC0ZfsPbd22qSDcw5orpQMoDy3iP+bPJh
SgwtusqotGjm0jTpnhqRV5x6rchzkMYwF8/WkvfJAoGBAMeem6yh0XiaclfzWYE5
jCGMezjWEeD949IEkhGYJQFbmeK79l49O/KmeAy9veYmdSDntUoGp9f/kozHMgGb
oH5cnQQxL7HczWc6UWd3LhJabIUNhsreAFBL2Ldgg1UPun6uBjACJV7G06AWhWSc
ne58SDp5frpP5/Y8NXdAKDq1AoGAYCSFQ4lj96n29CxRtn6nZSTld5eTcEOsnECf
dhuesAFJemlwBAZgAb/2Eh3/p3CCpSr0KmPmQldLaxujNwjrRkHpLjC9z6vX1ePX
TzqtmpmqZXKEvC4w9EaoZ3JE5GXwnTHNbID6m3JQ4CnVc36+Po0XHB096jTTAV7m
bSGa5SECgYBE2IuW1pk2pOZ+FDtKltWHk8KK89QmGsFf2YnVZ/FsAkPnayeTkmMz
AWxRP/W/Uj5ypw7KjprQee31hkisBG/ZPBvQdjAvxF7m4usuEN2Nkb0FTIjZHYbD
iPOmPHIUlwwL8UVzDQUzXhegSB4GUeP/06T/eM5PPB8SX0ZaHIw1wQ==
-----END RSA PRIVATE KEY-----
home/oracle/.ssh/id_rsa.pub0000640000175000017500000000061612310211305016600 0ustar  chamiltonchamiltonssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoEgxjSM+zh29CqzIet5hxwI4gwWsHL56XlN3xM1zylCog02tZJ5/EA17hvQRoBmh+9lsEaseKnIHpf4WC6BdirAHS56bTq5Mach0cBnIdXogT1/+EsKb72dY4l9S880VsxoiLO/MxWE7oZMbLEnzOH8BJBdgEdLPI7GSaoMsHvMW17IkXuG/qzpbbROamOExC04LSZjCfrhkKxWLZ3Vzu0WLDftw661PUt9lpoBQEjB2m8voEWOqk2THPCbXTl4VMO3hZk0o5n2c6ezXwwcEcU5eTxaADELqCq0TaCvtxMFmxvC+Neu17yhO0BYK/dgdIQIf3U3MTcMpWS0LCvVuN oracle@forensics
home/oracle/.ssh/authorized_keys0000640000175000017500000000061612310211340017762 0ustar  chamiltonchamiltonssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoEgxjSM+zh29CqzIet5hxwI4gwWsHL56XlN3xM1zylCog02tZJ5/EA17hvQRoBmh+9lsEaseKnIHpf4WC6BdirAHS56bTq5Mach0cBnIdXogT1/+EsKb72dY4l9S880VsxoiLO/MxWE7oZMbLEnzOH8BJBdgEdLPI7GSaoMsHvMW17IkXuG/qzpbbROamOExC04LSZjCfrhkKxWLZ3Vzu0WLDftw661PUt9lpoBQEjB2m8voEWOqk2THPCbXTl4VMO3hZk0o5n2c6ezXwwcEcU5eTxaADELqCq0TaCvtxMFmxvC+Neu17yhO0BYK/dgdIQIf3U3MTcMpWS0LCvVuN oracle@forensics
home/oracle/.bash_logout0000640000175000017500000000033412067715545016310 0ustar  chamiltonchamilton# ~/.bash_logout: executed by bash(1) when login shell exits.

# when leaving the console clear the screen to increase privacy

if [ "$SHLVL" = 1 ]; then
    [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
Vale, vemos que en las ultimas lineas aparece la key publica de ssh:
home/oracle/.ssh/id_rsa.pub0000640000175000017500000000061612310211305016600 0ustar  chamiltonchamiltonssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoEgxjSM+zh29CqzIet5hxwI4gwWsHL56XlN3xM1zylCog02tZJ5/EA17hvQRoBmh+9lsEaseKnIHpf4WC6BdirAHS56bTq5Mach0cBnIdXogT1/+EsKb72dY4l9S880VsxoiLO/MxWE7oZMbLEnzOH8BJBdgEdLPI7GSaoMsHvMW17IkXuG/qzpbbROamOExC04LSZjCfrhkKxWLZ3Vzu0WLDftw661PUt9lpoBQEjB2m8voEWOqk2THPCbXTl4VMO3hZk0o5n2c6ezXwwcEcU5eTxaADELqCq0TaCvtxMFmxvC+Neu17yhO0BYK/dgdIQIf3U3MTcMpWS0LCvVuN oracle@forensics
home/oracle/.ssh/authorized_keys0000640000175000017500000000061612310211340017762 0ustar  chamiltonchamiltonssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoEgxjSM+zh29CqzIet5hxwI4gwWsHL56XlN3xM1zylCog02tZJ5/EA17hvQRoBmh+9lsEaseKnIHpf4WC6BdirAHS56bTq5Mach0cBnIdXogT1/+EsKb72dY4l9S880VsxoiLO/MxWE7oZMbLEnzOH8BJBdgEdLPI7GSaoMsHvMW17IkXuG/qzpbbROamOExC04LSZjCfrhkKxWLZ3Vzu0WLDftw661PUt9lpoBQEjB2m8voEWOqk2THPCbXTl4VMO3hZk0o5n2c6ezXwwcEcU5eTxaADELqCq0TaCvtxMFmxvC+Neu17yhO0BYK/dgdIQIf3U3MTcMpWS0LCvVuN oracle@forensics
Teniendo esto, lo que tenemos que hacer es copiar en nuestro directorio local .ssh, esa linea a un archivo llamado por ejemplo id_rsa.pub.
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoEgxjSM+zh29CqzIet5hxwI4gwWsHL56XlN3xM1zylCog02tZJ5/EA17hvQRoBmh+9lsEaseKnIHpf4WC6BdirAHS56bTq5Mach0cBnIdXogT1/+EsKb72dY4l9S880VsxoiLO/MxWE7oZMbLEnzOH8BJBdgEdLPI7GSaoMsHvMW17IkXuG/qzpbbROamOExC04LSZjCfrhkKxWLZ3Vzu0WLDftw661PUt9lpoBQEjB2m8voEWOqk2THPCbXTl4VMO3hZk0o5n2c6ezXwwcEcU5eTxaADELqCq0TaCvtxMFmxvC+Neu17yhO0BYK/dgdIQIf3U3MTcMpWS0LCvVuN oracle@forensics" >> id_rsa.pub
Una vez ejecutado el comando anterior, vamos a tratar de conectarnos directamente usando la cuenta de oracle y por el puerto 13375. Al tener la key, no deberia pedirnos password.
sml@aLiCe:~$ ssh oracle@for01.ringzer0team.com -p 13375

         _                             ____  __                     
   _____(_)___  ____ _____  ___  _____/ __ \/ /____  ____ _____ ___ 
  / ___/ / __ \/ __ `/_  / / _ \/ ___/ / / / __/ _ \/ __ `/ __ `__ \
 / /  / / / / / /_/ / / /_/  __/ /  / /_/ / /_/  __/ /_/ / / / / / /
/_/  /_/_/ /_/\__, / /___/\___/_/   \____/\__/\___/\__,_/_/ /_/ /_/ 
             /____/                                                 
                                      _ _             ___ _____ ___ 
                             ___ _ _ | (_)_ _  ___   / __|_   _| __|
                            / _ \ ' \| | | ' \/ -_) | (__  | | | _| 
                            \___/_||_|_|_|_||_\___|  \___| |_| |_|  
                                                                    

You have mail.
Last login: Sun Sep 13 11:52:56 2015 from 81.32.32.12
oracle@forensics:~$ 
YEAH! Ya estamos dentro Vamos a ver si encontramos algo interesante en nuestro nuevo /home.
oracle@forensics:~$ ls
encflag.txt.enc  flag.txt
oracle@forensics:~$ cat encflag.txt.enc 
U2FsdGVkX1+dCl4WEHNJKBqA8a4fQeheOgA7oiNmjwlJQvGaQAgqcIsGRIcbdHKFheSs51JRSEmOLqVyGvoxDA==
oracle@forensics:~$ cat flag.txt 
RkxBRy1HSUdzMVdxNlY2U3NaOWg0YVFncEdnZGJkUAo=
Vemos que tenemos dos ficheros, flag.txt y encflag.txt.enc. Nos interesa el fichero flag, que vuelve a estar en base64, asi que vamos a descifrarlo como anteriormente.
oracle@forensics:~$ echo RkxBRy1HSUdzMVdxNlY2U3NaOWg0YVFncEdnZGJkUAo= | base64 -d  
FLAG-GIGs1Wq6V6SsZ9h4aQgpGgdbdP
Y aqui tenemos el flag para el level4: FLAG-GIGs1Wq6V6SsZ9h4aQgpGgdbdP LEVEL 5 ------- Ya en este nivel nos piden desencriptar el fichero encriptado que encontramos en el nivel anterior, es decir, el encflag.txt.enc. Despues de estar mirando y mirando, encontre la solucion... Si ejecutamos el comando alias podemos ver lo siguiente.
oracle@forensics:~$ alias
alias ls='ls --color=auto'
alias reveal='openssl enc -aes-256-cbc -a -d -in encflag.txt.enc -k '\''lp6PWgOwDctq5Yx7ntTmBpOISc'\'''
Si... existe un alias que desencripta la flag que necesitamos, asi que vamos a ejecutarlo!
oracle@forensics:~$ reveal
FLAG-IaFOjjFWazycSg0lbVO3T8ZTvz
oracle@forensics:~$
Y nuestra flag es: FLAG-IaFOjjFWazycSg0lbVO3T8ZTvz Y por hoy lo dejamos aqui, quedan 4 niveles mas que resolveremos en el siguiente post! Os animo a intentarlo, ya que no todos los wargames disponen de tanta variedad y cantidad de retos, y siempre se aprende algo nuevo!