Bueno, la idea de un sistema operativo seguro es, por supuesto, no permitir la escalada de privilegios. Así que tiene que haber una vulnerabilidad sin parchear. Si bien la vulnerabilidad de la escalada de privilegios suele tener menos prioridad que los errores explotables de forma remota, se solucionan con el tiempo.
Por ejemplo, hubo una vulnerabilidad en el Kernel de Linux que hizo que escribiera archivos de volcado del núcleo de las aplicaciones bloqueadas en el directorio de trabajo actual sin verificar los permisos . Por lo tanto, un atacante podría escribir un programa que establezca el directorio de trabajo en, por ejemplo, /etc/cron.d y bloquearlo. Con un poco de preparación, cron podría hacer algo "útil" con el archivo de volcado del núcleo.
Otro ataque relacionado se basa en una vulnerabilidad insegura de creación de archivos . Una aplicación dañada puede intentar crear un archivo temporal en un directorio público grabable (por ejemplo, / tmp) sin forzar la creación solo. El atacante creará un enlace simbólico que apunta a otra parte (donde el atacante no tiene permiso de escritura). La aplicación vulnerable sobrescribirá el archivo de destino (por ejemplo, /home/someuser/.profile para usuarios normales y un archivo de sistema para root).
Creo que dos ejemplos son suficientes por ahora.
Tomar un sistema totalmente parcheado y tratar de explotarlo, no es un buen enfoque para aprender sobre estos temas. Recomiendo leer el Secure Programming para Linux y Unix HOWTO . Sobre la base de este conocimiento, puede jugar: Escriba una aplicación simple que viole una de esas reglas y luego intente explotarla.