Inicio Tryhackme - Basic Pentesting
Entrada
Cancelar

Tryhackme - Basic Pentesting

Basic Pentesting es una máquina que permite practicar técnicas de hacking web y de escalada de privilegios. Para conseguir vulnerar completamente la máquina, se deben usar al menos, las técnicas de enumeración se los servicios, enumerar SMB, fuerza bruta, hash cracking, etc.

Escaneo de puertos.

Mediante la herramienta NMAP, se lanza un escaneo a los puertos más utilizados, y que se muestren las versiones y se lancen los scripts nse de los protocolos descubiertos.

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Nmap scan report for 10.10.70.123
Host is up (0.042s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE     VERSION
22/tcp   open  ssh         OpenSSH 7.2p2 Ubuntu 4ubuntu2.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 db:45:cb:be:4a:8b:71:f8:e9:31:42:ae:ff:f8:45:e4 (RSA)
|   256 09:b9:b9:1c:e0:bf:0e:1c:6f:7f:fe:8e:5f:20:1b:ce (ECDSA)
|_  256 a5:68:2b:22:5f:98:4a:62:21:3d:a2:e2:c5:a9:f7:c2 (ED25519)
80/tcp   open  http        Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp  open  netbios-ssn Samba smbd 4.3.11-Ubuntu (workgroup: WORKGROUP)
8009/tcp open  ajp13?
| ajp-methods: 
|_  Supported methods: GET HEAD POST OPTIONS
8080/tcp open  http-proxy
|_http-favicon: Apache Tomcat
|_http-open-proxy: Proxy might be redirecting requests
|_http-title: Apache Tomcat/9.0.7
Service Info: Host: BASIC2; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
|_clock-skew: mean: 1h20m03s, deviation: 2h18m34s, median: 3s
|_nbstat: NetBIOS name: BASIC2, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
| smb-os-discovery: 
|   OS: Windows 6.1 (Samba 4.3.11-Ubuntu)
|   Computer name: basic2
|   NetBIOS computer name: BASIC2\x00
|   Domain name: \x00
|   FQDN: basic2
|_  System time: 2021-03-15T03:15:35-04:00
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb2-security-mode: 
|   2.02: 
|_    Message signing enabled but not required
| smb2-time: 
|   date: 2021-03-15 08:15:35
|_  start_date: N/A

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

Enumeración WEB.

Se comienza a verificar el puerto 80 entrando por navegador, donde se puede observar que el servidor se encuentra En mantenimiento.

Se revisa el código de la web en busca de comentarios y se encuentra uno que dice algo sobre un directorio de desarrollo (dev).

Entonces, se decide usar la herramienta dirsearch para obtener directorios que haya alojados en el servidor, obteniendo el directorio development.

Se revisa el directorio en el navegador y se descubre que tiene habilitado el listado de directorios y que existen 2 ficheros.

  • dev.txt
  • j.txt

Se descargan y se revisan ambos.

Contenido del fichero dev.txt.

1
2
3
4
5
6
7
8
2018-04-23: I've been messing with that struts stuff, and it's pretty cool! I think it might be neat
to host that on this server too. Haven't made any real web apps yet, but I have tried that example
you get to show off how it works (and it's the REST version of the example!). Oh, and right now I'm 
using version 2.5.12, because other versions were giving me trouble. -K

2018-04-22: SMB has been configured. -K

2018-04-21: I got Apache set up. Will put in our content later. -J

Se puede ver que es una conversación entre 2 usuarios, uno cuyo nombre empieza por K y el otro por J.

Contenido del fichero j.txt.

1
2
3
4
5
6
7
For J:

I've been auditing the contents of /etc/shadow to make sure we don't have any weak credentials,
and I was able to crack your hash really easily. You know our password policy, so please follow
it? Change that password ASAP.

-K

En este fichero, se puede observar que la contraseña del usuario J es débil y debe cambiarla.

Acceso inicial.

Como el usuario J tiene configurada una contraseña débil, se decide enumerar los usuarios usando el script Enum4Linux.pl, obteniendo los siguientes:

Perfecto, ya se dispone del usuario jan que dispone de una contraseña “rompible

Se utiliza la herramienta Hydra para intentar romper la contraseña del servicio SSH, y entrar con el usuario jan, teniendo éxito con la contraseña armando.

Escalada de privilegios.

Dentro de la máquina, se puede observar que se puede acceder a la otra home de usuario kay, donde se obtiene la clave privada de ssh que contiene contraseña.

Si se pudiera obtener la contraseña, entonces se podría acceder con el usuario privilegiado de la máquina.

Con la herramienta ssh2john.py se transforma la clave a un hash en formato jonh y se intenta romper con john.

Con la contraseña de la clave, se puede entrar en la máquina con el usuario kay, que tiene permisos de sudo y obtener la última flag, que es heresareallystrongpasswordthatfollowsthepasswordpolicy$$

Esta entrada está licenciada bajo CC BY 4.0 por el autor.