网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
在以往的测试过程中,通过snmp fuzzer发现过一些工控设备的漏洞,这些漏洞主要集中在对snmp写操作的数据没有进行有效的校验。例如某设备支持通过snmp写操作来修改设备网卡的mac地址,但是没有对mac地址的长度进行校验,只要传入过长或者过短的mac地址都会造成设备瘫痪。还有些设备的网卡可以通过snmp写操作来开启和禁用,这样直接就会造成设备的网络中断影响业务。此外通常厂商还会有其自定义的私有oid节点,这些节点也很可能会存在一些安全问题,导致设备出现各种预期外的异常。
snmp fuzzer检测流程
snmp fuzz测试机通过发送可写oid的snmp set-request请求去改变工控设备可写oid控制的数据,通过发送get request、get-next-request请求, 来接收工控设备返回的get-response报文,如果测试机没有收到get-response的回复报文,则利用socket通信,来监测工控设备是否崩溃。
snmp fuzzer安装
在Ubuntu环境下安装与使用snmp fuzzer。
1. 通过git命令,下载snmp fuzzer 代码。
git clone https://github.com/dark-lbp/snmp_fuzzer
2. snmp fuzzer运行依赖scrapy,如果没有安装scrapy,需要安装。
运行pip install scrapy命令,安装scrapy。
Snmp fuzzer使用与分析
- 编写扫描目标设备可写oid的测试py脚本。
a. 创建一个test_scan_oid.py的文件。
b. 打开test_scan_oid.py文件,输入以下内容。
如下图所示:
target:设置目标机的IP地址。
port:检查目标机是否崩溃的通信端口。
count:fuzz snmp oid可写报文的次数。
nic:目标机的默认路由。
Target:创建一个snmpTarget类。
SnmpTrarget参数说明:
name:测试fuzz的名字,测试人员可以自定义。
monitor_port:目标机是否存活监控端口。
community:具备oid可写权限v2c用户,通常设备设置的v2c用户为:public或者private。
oid:开始扫描oid结点。
version:snmp用户版本,目前snmp fuzzer只支持snmp v1、v2c。
Target.oid\_scan():开启扫描目标机可写oid的功能。
Target.save\_scan\_result():保存可写oid到pcap文件。
c. 运行test_scan_oid.py文件,开始扫描目标机可写的oid。
执行python test_scan_oid.py命令,执行完后在snmp_fuzzer/output目录下会有一个
Ip+_snmp_set_packet_list.pcap的文件,如:
该文件存储的是目标设备可写的oid报文,用于fuzz测试。
2.编写fuzz测试脚本,进行fuzz测试。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
路线、讲解视频,并且后续会持续更新**