vulnhub est l'un de mes terrains de jeux préférés, et chaque drone cible qui s'y trouve est un jeu sympa. Trouver complètement tous les drapeaux n'est que la tâche de base, et parvenir à une élévation des privilèges est le but ultime. Je ne recherche pas la capture la plus rapide du drapeau, mais j'utilise plutôt une chaîne d'attaque complète pour envahir le drone cible autant que possible. Par conséquent, une partie du contenu de ce guide peut ne pas être directement utile pour capturer le drapeau, mais vous devriez le faire. pensez-y lorsque vous avez affaire à des cibles réelles.
Le drone "JIS-CTF: VulnUpload" contient 5 drapeaux, a un niveau de difficulté débutant, et met en moyenne 1h30 pour terminer l'attaque. Vous pouvez obtenir l'image au format virtualbox sur https://www.vulnhub.com/entry/jis-ctf-vulnupload,228/ Vous pouvez la lire immédiatement après l'avoir importée :
JIS La machine virtuelle est DHCP, Je dois trouver un moyen de connaître son IP. L'option -sn de nmap est utilisée pour détecter la capacité de survie de l'hôte :
Rapidement, 4 IP survivantes ont été trouvées. Parmi eux, 56.1 est l'adresse IP de mon système principal, 56.2 est le serveur DHCP et 56.5 affiche la réponse de l'hôte local comme machine locale (kali). Par conséquent, l'adresse IP de JIS est 192.168.56.6.
La première priorité lors de l'obtention d'une adresse IP est bien sûr les services d'analyse. Les deux paramètres de ligne de commande de nmap -O et -sV peuvent être utilisés pour cela :
On peut voir que JIS ouvre SSH sur le port 22 (OpenSSH 7.2p2) et ouvre HTTP sur le port 80 (Apache httpd 2.4. 18). Servir. De plus, le système d'exploitation est Ubuntu. Ces trois informations deviendront la principale surface d’attaque dans la prochaine étape.
Pour les services SSH, j'ai l'habitude d'attaquer sous deux aspects : les mots de passe faibles et les vulnérabilités du système. En termes de mots de passe faibles, j'ai utilisé des noms d'utilisateur et des mots de passe courants pour craquer, même si les chances ne sont pas élevées :
Cela ne peut pas être terminé en peu de temps, alors je vais d'abord le mettre ici et regarder plus tard.
En termes de recherche de vulnérabilités système dans les services SSH, je recommande l'outil searchsploit. Recherche exacte d'OpenSSH 7.2p2 :
Il existe une vulnérabilité d'énumération du nom d'utilisateur. Il se trouve que trouver un nom d'utilisateur valide aidera à casser le mot de passe SSH. Essayez d'utiliser EXP immédiatement :
Je l'ai essayé plusieurs fois, mais les résultats sont différents. J'ai l'impression que cet EXP n'est pas fiable. Peut-être que les conditions de recherche sont trop strictes. Sans numéro de version, recherchez directement openssh pour voir s'il existe d'autres vulnérabilités :
Parmi elles, deux peuvent être prises en compte, qui sont les vulnérabilités d'élévation de privilèges locales et les vulnérabilités d'exécution de commandes à distance. . Wow, c'est très tentant, mais malheureusement, je ne peux pas l'utiliser. Pour le premier, il n'y a actuellement aucun bastion (comme webshell), et il n'y a pas d'opération d'escalade de droits. Actuellement, il ne peut être publié qu'en premier, et pour le second, les conditions d'exploitation sont très strictes ; , et l'attaquant doit prendre le contrôle du socket d'agent transféré, et la cible doit se connecter en SSH à la machine sur laquelle l'attaquant contrôle le socket d'agent transféré. Ce n'est qu'alors que la cible peut charger le fichier *.so spécifié et implémenter l'exécution de la commande à distance. C’est tout, nous n’entrerons pas dans les détails des vulnérabilités du système SSH pour le moment.
Vérifiez le service Apache pour voir s'il existe des vulnérabilités exploitables :
La version exacte trouvée lors de la détection précédente du service était Apache httpd 2.4.18, il n'y a donc qu'une seule vulnérabilité de fuite de mémoire, qui a peu de valeur.
Les vulnérabilités du système ne peuvent être analysées que dans cette mesure à ce stade. Bien que nous sachions que le package de distribution est Ubuntu, nous ne connaissons pas la version spécifique et l'architecture du système. Par conséquent, il est difficile de trouver avec précision les vulnérabilités du système d'exploitation disponibles. Il n'est pas nécessaire de continuer à perdre du temps sur les vulnérabilités du système. Si vous pouvez obtenir le webshell plus tard, nous l'analyserons en profondeur lorsque vous augmenterez les privilèges. Passez maintenant au niveau de l'application Web.
Le port Web trouvé avant l'accès est automatiquement redirigé vers http://192.168.56.6/login.php :
En regardant le code source html, il n'y a aucune information précieuse pour énumérer les utilisateurs ; Le nom ne peut pas être utilisé ; vous pouvez peut-être accéder à un mot de passe faible. L'évasion de SSH n'est pas encore terminée. L'évasion de connexion Web doit d'abord être mise de côté pour voir s'il existe d'autres pages.
Avant 2015 environ, analyser le port Web - rechercher le backend Web - se connecter au backend avec un mot de passe faible - télécharger une phrase était une méthode d'attaque courante avec un taux de réussite élevé. Parmi elles, la question de savoir si l'adresse du backend pouvait être utilisée. être trouvé était la clé du succès. En d’autres termes, j’ai besoin de découvrir plus de contenu sur le Web. Plus précisément, j'espère trouver plus de fichiers, de pages et de sous-répertoires. Il est préférable de trouver des fichiers sensibles contenant du code source, des pages de gestion pour l'exploitation et la maintenance du backend, ainsi que des sous-répertoires stockant la logique métier pour étendre la surface d'attaque. En règle générale, j'utilise une combinaison d'énumération et d'exploration pour découvrir du contenu Web.
Il existe de nombreux outils pour énumérer le contenu Web. En fait, le rot que vous avez a une puissante fonction d'énumération de sous-répertoire intégrée, mais vous l'ignorez souvent. Visitez http://192.168.56.6/, et après avoir laissé passer le trafic via burp, la structure initiale du répertoire du site s'affiche immédiatement :
Activez la fonction d'énumération des sous-répertoires via des outils d'engagement - découvrez contenu :
Avant d'énumérer, utilisez le plug-in Firefox wappalyzer pour confirmer que la langue du backend est php :
Réglage simple, laissez rot n'énumérez que la page de type php, en ignorant aspx, jsp et autres langages pour améliorer l'efficacité :
Bientôt, de nombreuses nouvelles pages ont été énumérées :
#🎜 🎜# Vous voyez, il y a plus de pages et de répertoires qu'avant, comme logout.php et server-status/. En les vérifiant un par un, il n’y a rien de précieux. Ensuite, j'ai utilisé un autre outil, dirsearch, pour énumérer à nouveau les sous-répertoires, en complément de burp pour obtenir plus de contenu Web. L'efficacité et la configurabilité sont les caractéristiques de dirsearch. De même, utilisez l'option --extension pour définir uniquement les pages de type php à énumérer, en ignorant aspx, jsp et les autres langages : De la sortie. résultats Il y a 5 pages avec une réponse HTTP réussie (200) dans out.txt : Visitez ces pages dans l'ordre et laissez passer le trafic via burp.Énumération des sous-répertoires, c'est tout. Ensuite, explorez le site. Montez sur le site ou utilisez rot : Bientôt, l'exploration a été terminée et de nombreuses nouvelles pages ont été ajoutées :
# 🎜🎜#Ami, après avoir joué si longtemps, tu ne vois même pas l'ombre du drapeau ? Ne vous inquiétez pas, ça arrive. Recherchez le mot-clé flag dans le plan du site de burp. Le premier élément correspondant est http://192.168.56.6/admin_area/ :
et obtenez le premier drapeau{7412574125871236547895214} ; J'ai également un ensemble de comptes admin/3v1l_H@ck3r, qui peut être un compte de connexion Web ou un compte SSH, je l'essaierai plus tard. La recherche de drapeau obtient le deuxième match http://192.168.56.6/flag/ :
obtient le deuxième drapeau{8734509128730458630012095}.
4. Analyse de vulnérabilité des applications Web
Avec succès, il existe une fonction de téléchargement de fichiers, vérifiez s'il existe une vulnérabilité de téléchargement de fichiers.
Téléchargez simplement un webshell php et essayez :
icesword.php Le téléchargement est réussi. Il existe une vulnérabilité de téléchargement de fichier arbitraire, mais le répertoire de téléchargement est réussi. pas affiché. Vous souvenez-vous encore des deux répertoires uploads/ et uploaded_files/ qui ont été trouvés lors de la découverte précédente du contenu Web ? Essayez d'accéder à http://192.168.56.6/uploads/icesword.php. Un message d'erreur est signalé. existe. Visitez http://192.168.56.6/uploaded_files. /icesword.php, aucune erreur n'est signalée mais la page n'a pas de contenu. Au moins, il est clair que le répertoire de téléchargement est uploaded_files/.
J'utilise msfvenom pour générer le cheval de Troie de rebond php de MSF msf_private.php :
Démarrez MSF et écoutez, puis visitez http://192.168.56.6/uploaded_files/msf_private.php pour obtenir immédiatement une session d'interprétation de compteur :
Faites simplement défiler les fichiers :
flag.txt, soupçon.txt a attiré mon attention . Vérifiez-le, flag.txt n'a aucun droit d'accès ; obtenez le troisième drapeau {7645110034526579012345670} dans soupçon.txt, et un message d'invite. Si vous souhaitez afficher flag.txt, vous devez d'abord connaître le mot de passe du compte technawi : .
Ensuite, je dois trouver le mot de passe de l'utilisateur technawi. J'ai l'intention de rechercher des informations relatives à technawi, à la fois en termes de noms de fichiers et de contenu de fichiers.
J'ai utilisé la commande de recherche intégrée de Meterpreter pour trouver les fichiers contenant le mot-clé technawi dans le nom du fichier :
Il indique introuvable. Étrange, s'il y a des utilisateurs technawi, alors il doit y avoir /home/technawi/, pourquoi n'en trouve-je aucun ? Entrez le shell et confirmez à nouveau :
C'est correct. Donc, vous voyez, la recherche intégrée de Meterpreter n'est pas fiable. Je les ai vérifiés un par un et je n'ai rien trouvé de valeur.
Recherchez les fichiers contenant le mot-clé technawi dans le contenu du fichier :
Affichez un par un et trouvez le quatrième drapeau {7845658974123568974185412} dans /etc/mysql/conf.d/credentials.txt, ainsi qu'un ensemble de comptes numéros technawi/3vilH@KSOR : 登 录 登
Système de connexion Utilisez le compte Technawi/3vilh@KSOR pour vous connecter avec succès au système : Visualisez à nouveau flag.txt, obtenez le cinquième drapeau {547321594785213456975249} :6 . Faire des droits Comme je l'ai dit au début, le drapeau n'est pas mon seul objectif en jouant aux drones cibles. Élever mon autorité est également très intéressant. Alors que j'étais sur le point de vérifier la version du noyau et de préparer l'exp correspondante, je me suis souvenu que j'avais vu le fichier .sudo_as_admin_successful dans le répertoire home/ de technawi : Wow, vous avez de la chance. Cela montre que technawi peut utiliser votre. votre propre mot de passe pour passer à l'utilisateur root : Ça y est, toute la collecte des drapeaux est terminée et les privilèges sont élevés avec succès !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!