tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
PostgreSQL Veliki Objekti
PostgreSQL nudi strukturu poznatu kao veliki objekti, dostupnu putem tabele pg_largeobject
, koja je dizajnirana za čuvanje velikih tipova podataka, kao što su slike ili PDF dokumenti. Ovaj pristup je prednost u odnosu na funkciju COPY TO
jer omogućava izvoz podataka nazad u fajl sistem, osiguravajući da se tačna replika originalnog fajla održava.
Za čuvanje kompletnog fajla unutar ove tabele, objekat mora biti kreiran u tabeli pg_largeobject
(identifikovan LOID-om), nakon čega se umetnuju delovi podataka, svaki veličine 2KB, u ovaj objekat. Ključno je da ovi delovi budu tačno 2KB (uz moguću iznimku poslednjeg dela) kako bi se osiguralo da funkcija izvoza radi ispravno.
Da podelite svoje binarne podatke na delove od 2KB, mogu se izvršiti sledeće komande:
split -b 2048 your_file # Creates 2KB sized files
Za kodiranje svake datoteke u Base64 ili Hex, mogu se koristiti sledeće komande:
base64 -w 0 <Chunk_file> # Encodes in Base64 in one line
xxd -ps -c 99999999999 <Chunk_file> # Encodes in Hex in one line
Važno: Kada automatizujete ovaj proces, obavezno šaljite delove od 2KB čistog teksta. Hex kodirani fajlovi će zahtevati 4KB podataka po delu zbog dupliranja veličine, dok Base64 kodirani fajlovi prate formulu ceil(n / 3) * 4
.
Sadržaj velikih objekata može se pregledati u svrhe debagovanja koristeći:
select loid, pageno, encode(data, 'escape') from pg_largeobject;
Korišćenje lo_creat
i Base64
Da bi se sačuvali binarni podaci, prvo se kreira LOID:
SELECT lo_creat(-1); -- Creates a new, empty large object
SELECT lo_create(173454); -- Attempts to create a large object with a specific OID
U situacijama koje zahtevaju preciznu kontrolu, kao što je iskorišćavanje Blind SQL Injection, lo_create
se preferira za određivanje fiksnog LOID-a.
Podaci se mogu umetnuti na sledeći način:
INSERT INTO pg_largeobject (loid, pageno, data) VALUES (173454, 0, decode('<B64 chunk1>', 'base64'));
INSERT INTO pg_largeobject (loid, pageno, data) VALUES (173454, 1, decode('<B64 chunk2>', 'base64'));
Da biste eksportovali i potencijalno obrisali veliki objekat nakon korišćenja:
SELECT lo_export(173454, '/tmp/your_file');
SELECT lo_unlink(173454); -- Deletes the specified large object
Korišćenje lo_import
i Hex
Funkcija lo_import
može se koristiti za kreiranje i određivanje LOID-a za veliki objekat:
select lo_import('/path/to/file');
select lo_import('/path/to/file', 173454);
Nakon kreiranja objekta, podaci se unose po stranici, osiguravajući da svaki deo ne prelazi 2KB:
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=0;
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=1;
Da bi se proces završio, podaci se izvoze i veliki objekat se briše:
select lo_export(173454, '/path/to/your_file');
select lo_unlink(173454); -- Deletes the specified large object
Ograničenja
Napomena je da veliki objekti mogu imati ACL-ove (Liste Kontrole Pristupa), što može ograničiti pristup čak i objektima koje je kreirao vaš korisnik. Međutim, stariji objekti sa permisivnim ACL-ovima mogu i dalje biti dostupni za ekfiltraciju sadržaja.
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.