一、漏洞描述
SNMP(简单网络管理协议)被广泛用于计算机操作系统设备、网络设备等领域监测连接到网络上的设备是否有任何引起管理上关注的情况。在运行SNMP服务的设备上,若管理员配置不当运行默认团体名/弱口令访问,将导致敏感信息泄露。敏感不限于系统运行的进程、已安装的软件、系统存在的用户,运行的服务,端口情况等。通过这些信息,攻击者可以清晰的了解到设备整体情况,根据开放的端口和服务快速定位可入侵点,根据运行的进程名判断是否存在哪些防护软件,有什么bypass的方法。根据存在的用户名,可以大大提高爆破效率等等。
多操作系统或者网络设备的SNMP代理服务都存在默认口令。如果您没有修改这些默认口令或者口令为弱口令,远程攻击者就可以通过SNMP代理获取系统的很多细节信息。如果攻击者得到了可写口令,它甚至可以修改系统文件或者执行系统命令。snmp默认团体名属于snmp默认弱口令public/privicy。
危险级别:高危
漏洞编码:CVE-1999-0516、CVE-1999-0517
二、处理建议;
1)修改SNMP缺省口令或者禁止SNMP服务,或在防火墙上过滤掉对内部网络UDP 161端口(端口Linux中无法修改)的访问:
rpm -aq | grep snmp
vim /etc/snmp/snmpd.conf中,修改public默认团体名字符串
com2sec notConfigUser default public //将public修改为复杂的字符串,将“default”改为你想哪台机器可以看到你 的snmp信息的ip
view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc //解注释
view all included .1 80 //查看全部
access notConfigGroup "" any noauth exact systemview none none //修改为
access notConfigGroup "" any noauth exact mib2 none none
access notConfigGroup "" any noauth exact all none none //或
#完成后重启
/etc/rc.d/init.d/snmpd restart
#配置参考
rocommunity public
rwcommunity mysecret 127.0.0.1
com2sec notConfigUser default public
group notConfigGroup v2c notConfigUser
group notConfigGroup v1 notConfigUser
view systemview included .1
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
view all included .1 80
access notConfigGroup "" any noauth exact systemview none none
proc mountd
proc ntalkd 4
proc sendmail 10 1
disk / 10000000
disk /boot 30%
disk /dev/shm
disk PATH [MIN=100000]
load 12 14 14
#设置用户鉴权
rouser ciesnmp2015 auth
#对于V3,可配置v3用户及密码鉴权
#创建用户和设置MD5 DES 加密,在/var/lib/net-snmp/snmpd.conf 新增
createUser snmpuser MD5 snmppasswd 3 DES snmppasswd
ciesnmp:用户名,即sercurity Name
#验证,通过snmpget获取内存大小
snmpget -v 3 -a MD5 -A snmpuser -u snmppasswd -l authPriv -x DES -X snmppasswd 127.0.0.1 1.3.6.1.4.1.2021.4.5.0
说明:
默认基本配置:
(1)首选是定义一个共同体名(community),这里是public,和可以访问这个public的用户名(sec name),这里是notConfigUser。Public相当于用户notConfigUser的密码:
(2)定义一个组名(groupName)这里是notConfigGroup,及组的安全级别,把notConfigGroup这个用户加到这个组中。
(3)定义一个可操作的范围(view)名,修改查看设备节点的权限,增加下面一行,表示可以查看.1节点下的所有设备信息:view all included .1 80
(4)定义notConfigUser这个组在all这个view范围内可做的操作,这时定义了notConfigUser组的成员可对.1这个范围做只读操作。
在Solaris系统下,修改/etc/snmp/conf/snmpd.conf
中缺省的口令,然后执行下列命令使之生效:
/etc/init.d/init.snmpdx stop
/etc/init.d/init.snmpdx start
在Solaris系统下,执行下列命令可以禁止SNMP服务:
/etc/init.d/init.snmpdx stop
mv /etc/rc3.d/S76snmpdx /etc/rc3.d/s76snmpdx
2)windows:
1> 开始—>程序—>管理工具—>服务—>SNMPService—>属性—>安全 在这个配置界面中,可以修改“社区名称”(community strings),也就是snmp密码。
如上图所示,也可以配置只允许某些安全主机访问SNMP服务。设置完成后在服务(SNMP Service)右键重启snmp服务
2> 直接修改注册表:开始- > 运行- > regedit 打开注册表,进入以下注册表路径修改名称:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ValidCommunities]
找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\PermittedManagers,设置只允许192.168.19.106访问snmp服务,完成后重启服务。
备注:windows修改snmp服务端口号,配置文件位于 C:\WINDOWS\system32\drivers\etc\,用记事本可以打开,修改下面一行:
snmp 161/udp #SNMP //161就是其端口号,修改成想要的即可,例如改成2012
snmp 2012/udp #SNMP
3)检测:
#弱口令检测
nmap –sU –p161 –script=snmp-brute ip //查找snmp弱口令
#弱口令利用
nmap -sU -p161 --script=snmp-netstat ip //获取网络端口状态文章来源站点
nmap –sU –p161 –script=snmp-sysdescr ip //获取系统信息
nmap -sU -p161 --script=snmp-win32-user ip //获取用户信息
snmputil walk ip public .1.3.6.1.2.1.25.4.2.1.2//列出系统进程
snmputil walk ip public.1.3.6.1.2.1.25.6.3.1.2 //列出安装的软件
snmputil walk ip public .1.3.6.1.2.1.1 //列出系统信息
snmputil get ip public .1.3.6.1.4.1.77.1.4.1.0 //列出域名
snmputil walk ip public.1.3.6.1.4.1.77.1.2.25.1.1 //列系统用户列表
4)验证
snmputil使用弱口令(团体名)public/privicy连接不成功,执行:
snmputil walk 127.0.0.1 new_community 1.3.6.1.4.1.77.1.2.25.1.1