HackTheBox. Tutorial de barra hacia adelante. LFI, copia de seguridad y volumen cifrado



Continúo publicando soluciones enviadas para la finalización de máquinas desde la plataforma HackTheBox .



En este artículo, enumeramos los directorios y subdominios en el sitio, explotamos LFI, hacemos una copia de seguridad de un archivo inaccesible y también montamos un volumen cifrado.



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 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
, , Telegram . , , .



. , - , .



Recon



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



10.10.10.183    forwardslash.htb


En primer lugar, escaneamos los puertos abiertos. Dado que toma mucho tiempo 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.183    --rate=500






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

nmap -A forwardslash.htb -p22,80






El servidor ejecuta un servicio SSH y un servidor web. Vamos al servidor web y vemos lo que nos pueden ofrecer.







Así es como se nos informa sobre la piratería de host, se mencionan XML y FTP. Pasemos por los directorios con gobuster. En los parámetros, especificamos el número de secuencias 128 (-t), URL (-u), diccionario (-w) y extensiones que nos interesan (-x).

gobuster dir -t 128 -u http://forwardslash.htb/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php,xml,txt






Y encontramos note.txt. Leamos.







Se informa sobre un grupo que hackeó el sitio y que hay una copia de seguridad. Busquemos subdominios. Establezca el número de caracteres para que no sea igual a 0 como filtro.

wfuzz -H 'HOST:FUZZ.forwardslash.htb' -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -u forwardslash.htb --hh 0






Y vamos al subdominio de respaldo. Añádalo al archivo / etc / hosts.

10.10.10.183    backup.forwardslash.htb

Veamos los directorios de este dominio también.

gobuster dir -t 128 -u http://backup.forwardslash.htb/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php,xml,txt






Y vamos a esta dirección.



Punto de entrada



Nos saluda un formulario de autorización.







También existe la posibilidad de registro. Registremos y luego iniciaremos sesión.







Al recorrer los enlaces, encontramos formularios para cambiar el nombre, la contraseña, y también puede establecer una imagen de perfil. Hablemos de eso.







Se informa que esta función se ha deshabilitado debido a un hack. En este caso, el campo de entrada no está disponible, lo más probable es que esté deshabilitado en HTML.







Eliminamos esta propiedad de ambos elementos. Inicié un servidor web en la máquina local e indiqué en el campo un enlace al archivo test.txt.







Como no hay filtros, intentemos con un vector LFI. Para la comodidad de los negocios, esto está en Burp Suite.







Y hay LFI!



USUARIO



Veamos las configuraciones de apache.







Pero si intenta leer el archivo php, no se le presentará como texto. En cambio, se ejecutará.







Pero podemos usar filtros php, por ejemplo base64. Así es como el archivo php se codifica primero y luego se muestra en la página. Por lo tanto, no se ejecutará.

php://filter/convert.base64-encode/resource=../../../../var/www/backup.forwardslash.htb/index.php





Seleccione el fragmento deseado y presione Ctrl + Shift + B.







Obtenemos el código decodificado. Usemos este método para leer todos los archivos encontrados durante el escaneo. Encuentre la contraseña para conectarse a la base de datos en el archivo config.php.







Echemos un vistazo a /dev/index.php también. Y allí encontramos los datos de autenticación del usuario chiv.







Este usuario está en el sistema, lo aprendemos de / etc / passwd. Probemos estos datos para conectarse a través de SSH.







USUARIO2



Para recopilar datos en el sistema, utilizamos el script LinPEAS. Y encontramos algún tipo de nota en las copias de seguridad.











Por lo tanto, las copias de seguridad tienen una configuración anterior con una contraseña. Pertenece al dolor.







Entonces el programa de respaldo tiene un bit SUID. Es decir, podemos ejecutar el programa como dolor del usuario.







Podemos hacer una copia de seguridad, pero solo de un determinado archivo aleatorio.







Podemos hacer un enlace a la copia de seguridad de la configuración nombrándola como se presenta desde el programa de copia de seguridad. Pero tenemos que hacerlo en unos segundos. Por lo tanto, haremos un guión. Primero, obtengamos el nombre del archivo.







Ahora agreguemos la creación de enlaces y la copia de seguridad.







Ejecutemos desde el directorio de inicio del usuario y obtengamos el archivo.







Cambie el usuario ingresando esta contraseña.







RAÍZ



Echemos un vistazo a la configuración de la corte para ejecutar comandos sin contraseña.







Por lo tanto, tenemos un volumen encriptado. Para descifrarlo y montarlo, necesitamos una contraseña.







Tenemos un texto cifrado y un programa.







Para el descifrado, utilizamos el siguiente código.

def decrypt(key, msg):
key = list(key)
	msg = list(msg)
	for char_key in reversed(key):
		for i in reversed(range(len(msg))):
			if i == 0:
				tmp = ord(msg[i]) - (ord(char_key) + ord(msg[-1]))
			else:
				tmp = ord(msg[i]) - (ord(char_key) + ord(msg[i-1]))
			while tmp < 0:
				tmp += 256
			msg[i] = chr(tmp)
	return ''.join(msg)

ciphertext = open('ciphertext', 'r').read().rstrip()
for i in range(1, len(ciphertext)):
	for j in range(256):
		key = chr(j) * i
		text = decrypt(key, ciphertext)
		if ' the ' in text or ' to ' in text:
			print(key)
			print(text)
			exit()


Y desciframos con éxito el mensaje.







Veamos qué tenemos a lo largo del camino indicado.







Descifremos el volumen.







Y lo montaremos.







La clave SSH se encuentra allí.







Nos conectamos y tomamos la bandera.







Puedes unirte a nosotros en Telegram . Allí puede encontrar materiales interesantes, cursos filtrados y software. Reúnamos una comunidad en la que habrá 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.



All Articles