龙空技术网

SNMP被爆存在一个严重的认证绕过漏洞可获得远程读写权限

Exploit 509

前言:

当前咱们对“snmp python”大概比较关注,大家都想要知道一些“snmp python”的相关文章。那么小编在网上收集了一些有关“snmp python””的相关知识,希望咱们能喜欢,咱们快快来学习一下吧!

简介

在DEFCON 24 IoT Village中,我就此研究发现了SNMP写入属性的危险大多受影响的是在物联网,警察巡逻,救护车和其他“关键任务车辆”中。

在2016年12月与阿根廷的同事(Ezequiel Fernandez),我们决定在互联网上再次“Fuzzing ”SNMP协议,但这次在字符串中使用不同的组合,例如,如果我们使用SNMP随机测试来自互联网的哪些共同字符串中的值如“root”“admin”“user”将会响应我们的请求?为了快速回顾SNMP基础知识,我们知道有3种方法来验证客户端和远程SNMP设备中的请求,SNMP版本1和2使用可读的字符串数据类型值称为“共同字符串”(通常为公有或私有) )在SNMP版本3中,您可以选择使用用户,密码和身份验证方法。此外,所有信息,如oid,trap和其他内容都存储在管理信息库(MIB)中。

测试

我们使用套接字从头开始编写一个简单的python脚本,以便构建“snmpget”请求,在我们使用sysDescr OID的请求中,如果我们正在测试的字符串值(admin,root etc等)与SNMP中存储的相同代理身份验证,我们将成功检索sysDescr OID信息,就像“爆破”。经过几天的扫描,我们注意到有些奇怪的东西,有些设备/指纹始终都在响应,无论我们使用哪个值,那么这里有什么? 如前所述,SNMP版本1&2认证只能接受存储在SNMP代理认证机制中的值,但是我们的结果中的行为与前面所说明的语句不同。 我们发现以下几点:您可以使用任何值字符串或整数,以便在某些特定设备中成功验证SNMP代理,但最糟糕的是:您可以使用任何字符串/整数进行完全读/写远程权限值。

反馈

该CVE 2017-5135中远程执行代码SNMP已经要求,创建和保留此问题,漏洞类型: 访问控制配置错误。我们选择了CISCO DPC3928SL作为测试,但是CISCO的技术主管technicolor确认这是ISP配置出错

现在你有什么问题的想法,但可能你会想有没有更多的设备有同样的问题在互联网?答案是肯定的,我们可以证明来自不同供应商/品牌的其他设备也受到SNMP中相同的行为的影响。 我们称之为STRINGBLEED :-D 我们决定再次扫描,但是这不会产生特定的可读字符串,因此我们决定生成一个随机哈希值,并将其发送到互联网上的所有SNMP设备,结果令人震惊,此时我们检测到150多个独特指纹受到影响,

这表明technicolor答案是错误的,问题不是ISP错配,问题似乎在代码中。

结论

我们发现一个完整的远程操作执行,绕过SNMP中的控制访问,使用任何字符串/整数值您可以在MIB中写入字符串您可以轻松地检索密码和其他敏感信息,而无需猜测公共字符串。由于我们的扫描,因为几个供应商/品牌受到影响,并且每天都在增加列表,故障很难解决Technicolor决议缺乏技术分析,根据我们的结果是不可接受的

PoC

[Attack Vectors]: Community string IP of theoric cablemodems vulnerable:"192.168.0.1"

[usr@pwn:~$] snmpset -v 1 -c "#Strigbleed" 192.168.0.1 1.3.6.1.2.1.1.6.0 s "test" iso.3.6.1.2.1.1.6.0 = STRING: "test"[usr@pwn:~$] snmpget -v 1 -c "#Strigbleed" 192.168.0.1 iso.3.6.1.2.1.1.1.0 iso.3.6.1.2.1.1.1.0 = STRING: "Cisco DPC3928SL DOCSIS 3.0 1-PORT Voice Gateway <<HW_REV: 1.0; VENDOR: Cisco; BOOTR: 2.4.0; SW_REV: D3928SL-P15-13-A386-c3420r55105-160127a; MODEL: DPC3928SL>>"

*参考来源:stringbleed,转载自MottoIN

标签: #snmp python #snmppython