Large Bin Attack
Last updated
Last updated
Dowiedz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Dowiedz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aby uzyskać więcej informacji na temat tego, co to jest duży kubeł, sprawdź tę stronę:
Bins & Memory AllocationsMożliwe jest znalezienie świetnego przykładu w how2heap - ataku na duży kubeł.
W zasadzie tutaj można zobaczyć, jak w najnowszej "obecnej" wersji glibc (2.35) nie jest sprawdzane: P->bk_nextsize
, co pozwala zmodyfikować dowolny adres wartością dużego kawałka kubełka, jeśli spełnione są pewne warunki.
W tym przykładzie można znaleźć następujące warunki:
Zaalokowany jest duży kawałek
Zaalokowany jest duży kawałek mniejszy niż pierwszy, ale w tym samym indeksie
Musi być mniejszy, więc musi iść pierwszy w kubełku
(Utworzony jest kawałek, aby zapobiec scaleniu z kawałkiem górnym)
Następnie pierwszy duży kawałek jest zwalniany, a zaalokowany jest nowy kawałek większy niż on -> Kawałek1 trafia do dużego kubełka
Następnie drugi duży kawałek jest zwalniany
Teraz podatność: Atakujący może zmodyfikować chunk1->bk_nextsize
na [target-0x20]
Następnie zaalokowany jest większy kawałek niż kawałek 2, więc kawałek2 jest wstawiany do dużego kubełka, nadpisując adres chunk1->bk_nextsize->fd_nextsize
adresem kawałka2
Istnieją inne potencjalne scenariusze, chodzi o dodanie do dużego kubełka kawałka, który jest mniejszy niż obecny kawałek X w kubełku, więc musi zostać wstawiony tuż przed nim w kubełku, i musimy móc zmodyfikować bk_nextsize
X, ponieważ tam zostanie zapisany adres mniejszego kawałka.
Oto odpowiedni kod z malloc. Dodano komentarze, aby lepiej zrozumieć, jak został nadpisany adres:
To można wykorzystać do nadpisania zmiennej globalnej global_max_fast
w bibliotece libc, aby następnie wykorzystać atak na szybkie kubełki z większymi fragmentami.
Możesz znaleźć inną świetną wyjaśnienie tego ataku na stronie guyinatuxedo.
Atak na duży kubełek w takiej samej sytuacji, jak to się pojawia w how2heap.
Prymityw zapisu jest bardziej skomplikowany, ponieważ global_max_fast
jest tu bezużyteczny.
FSOP jest potrzebny do zakończenia eksploatacji.
Dowiedz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Dowiedz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)