Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
THM-Steel_Mountain-CVE-2014-6287 — Un write-up sobre la máquina Steel Mountain de TryHackMe.com y el exploit para CVE-2014-6287 | Kitploit
Herramientas/GitHubGitHub/wizardy0ga/thm-steel_mountain-cve-2014-6287
Escalada de PrivilegiosGeneración de PayloadsAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPost-ExplotaciónCTFPruebas de PenetraciónAprendizaje y Educación

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Labs y Práctica
Archived
GitHubwizardy0ga/thm-steel_mountain-cve-2014-6287

THM-Steel_Mountain-CVE-2014-6287

Un write-up sobre la máquina Steel Mountain de TryHackMe.com y el exploit para CVE-2014-6287

Ver Repositorio
17hace 4 añosAún no revisado

THM-Steel_Mountain-CVE-2014-6287

Un análisis de la máquina Steel Mountain de TryHackMe.com y el exploit para CVE-2014-6287

Créditos

No me atribuyo el mérito del descubrimiento y la explotación originales de esta vulnerabilidad. ¡Gracias a las siguientes personas!

Descubrimiento:
Daniele Linguaglossa

Autor del módulo de Metasploit:
Muhamad Fadzil Ramli

Sala y autor de TryHackMe:
https://tryhackme.com/room/steelmountain
https://tryhackme.com/p/tryhackme

Referencias:
https://nvd.nist.gov/vuln/detail/CVE-2014-6287
https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/windows/http/rejetto_hfs_exec.rb
https://subscription.packtpub.com/book/networking_and_servers/9781786463166/1/ch01lvl1sec20/vulnerability-analysis-of-hfs-2-3 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-6287 https://www.tutorialspoint.com/pascal/pascal_functions.htm

Si Ves Algo, Di Algo!

No soy, ni mucho menos, un profesional de la seguridad con experiencia. Esto significa que puedo proporcionar información incorrecta. Si eres un profesional con experiencia/investigador experimentado y ves algo incorrecto, por favor infórmamelo para poder volver, estudiar lo que hice mal y proporcionar la información correcta. Esto es beneficioso tanto para mí como para otros investigadores novatos que puedan tropezar con este análisis. Si encuentras información errónea que haya escrito, por favor contáctame en [email protected] para poder corregirla. ¡Gracias!

Vulnerabilidad

Rejetto file server (también conocido como HFS) es un programa para compartir archivos que se utiliza para publicar y compartir archivos a través de una red. En la versión 2.3, existía una vulnerabilidad que permitía a un atacante ejecutar comandos del sistema introduciendo un byte nulo en el parámetro de búsqueda, tal como se describe en CVE-2014-6287. El código no procesa correctamente un byte nulo con su configuración de regex (expresión regular) y, por lo tanto, conduce a una vulnerabilidad de ejecución remota de código.

La vulnerabilidad se puede encontrar en la función findMacroMarker, que se origina en el archivo parserLib.pas. .pas es la extensión de archivo para el lenguaje de programación Pascal. Al momento de escribir esto, no he programado nada en Pascal. ¡Echemos un vistazo al fragmento de código y analicemos lo que hace!

function findMacroMarker(s:string; ofs:integer=1):integer;
begin result:=reMatch(s, '{[.:]|[.:]}||', 'm!', ofs) end;

La primera línea de código es una declaración de una función llamada findMacroMarker que toma dos parámetros. En Pascal, el tipo de datos de los parámetros debe declararse, por lo tanto s:string significaría que la variable s es un string. Esto también es el caso de la variable ofs con un tipo de datos integer. A la derecha de los parámetros, vemos un carácter de dos puntos seguido de integer. Esto se conoce como el tipo de la función. El punto y coma marca el final de esa línea de código. La primera palabra en la siguiente línea de código es begin. Esto le dice al compilador dónde comienza la función. Continuando, vemos una variable llamada result seguida del operador de asignación :=. La variable result se asigna a la función reMatch. No pude encontrar nada sobre reMatch en Internet, así que supongo que es una función personalizada escrita en otro lugar de HFS. Por suerte para nosotros, la función se explica por sí misma. reMatch es claramente una abreviatura de coincidencia de expresión regular (regular expression match) seguida del patrón regex que está buscando, lo cual se tiene en cuenta en el parámetro de la función reMatch, así como en los parámetros variables iniciales definidos en la primera línea de código. Al final de la segunda línea, la palabra end se usa para definir el final de la función para el compilador.

La vulnerabilidad se encuentra en el patrón regex, como se describió anteriormente en la función reMatch. La regex no maneja correctamente un byte nulo %00. Cuando pasamos un comando del sistema con un byte nulo antepuesto, la función encontrará el fallo y ejecutará el comando en la máquina host. Para explotar esta vulnerabilidad, todo lo que tenemos que hacer es pasar el byte nulo en el parámetro de búsqueda de una petición GET seguido de {.exec|code.} (siendo code el comando que quieras ejecutar) a través de la URL de esta manera:
http://(IP-Address/DomainName)/?search==%00{.exec|CommandGoesHere.}.

Análisis

Comencemos con un escaneo de puertos mediante rustscan. Prefiero rustscan para obtener una vista rápida de la superficie de ataque.

image

Tenemos una gran cantidad de puertos abiertos aquí. Ahora vamos a profundizar con nmap y averiguar qué servicios están escuchando en esta variedad de puertos para encontrar nuestro servicio explotable.

image

Tenemos un servicio llamado Microsoft Windows RPC ejecutándose en los puertos altos. RPC es una llamada a procedimiento remoto (remote procedure call). Esto permite que los procesos de Windows se comuniquen a través de una red o internamente dentro de la propia computadora. Continuando, tenemos algunos servidores web diferentes ejecutándose en los puertos 80 y 8080. En los puertos 5985 y 47001, está presente Microsoft Httpapi Httpd, que permite que las aplicaciones se comuniquen a través de HTTP sin necesidad de Microsoft IIS (Internet Information Server). Nmap detecta un servidor web potencialmente ejecutándose en el puerto 3389; sin embargo, no pude conectarme a través de HTTP o SSL. Conectémonos al servidor web en el puerto 80, ya que es el puerto estándar para el protocolo HTTP.

image

En el puerto 80, se nos presenta una página web que muestra el logotipo de la empresa Steel Mountain y una foto etiquetada como empleado del mes. Si abrimos las herramientas de desarrollo web, podemos ver que la foto está etiquetada como BillHarper.png, lo que nos da la respuesta a nuestra primera pregunta. Conectémonos a los otros servicios en escucha y veamos qué podemos encontrar.

image

Cuando nos conectamos al servicio en el puerto 5985, obtenemos el código de error HTTP 404. El código de error 404 significa que el servidor no puede encontrar el recurso solicitado. No hay nada de interés aquí. Pasemos al siguiente.

image

¡SÍ! Ahora esto parece interesante. En el puerto 8080, tenemos algún tipo de servicio para compartir archivos. Miremos a nuestro alrededor y veamos si podemos encontrar más información sobre este servicio. Si miramos en la esquina inferior izquierda, podemos ver un nombre y lo que parece ser un número de versión como este: HttpFileServer 2.3. Sigamos enumerando.

image

Si hacemos clic en el enlace etiquetado como HttpFileServer 2.3, seremos dirigidos a una página web con el nombre del software que se ejecuta en el puerto 8080. En este caso, tenemos Rejetto HFS HTTP File Server. Revisemos el otro puerto, el 47001, para cubrir todos los frentes. Si no encontramos nada útil, podemos volver a Rejetto y comenzar a buscar CVEs conocidos.

image

Descargar herramienta