<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Race Condition on</title><link>https://synacklabs.github.io/tags/race-condition/</link><description>Recent content in Race Condition on</description><generator>Hugo -- gohugo.io</generator><language>es-es</language><lastBuildDate>Thu, 15 Jan 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://synacklabs.github.io/tags/race-condition/index.xml" rel="self" type="application/rss+xml"/><managingEditor>admin@synacklabs.github.io (SynAckLabs)</managingEditor><webMaster>admin@synacklabs.github.io (SynAckLabs)</webMaster><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>