文章总结: 本文介绍了如何使用Python的IPy模块编写脚本,将不同格式的IP地址转换为不同漏洞扫描器所需的格式,包括巡风扫描器需要的IP段格式和绿盟RSAS需要的单个IP格式,从而提高安全人员的工作效率,避免在重复性工作上浪费时间。文章提供了完整的代码示例和执行结果,展示了Python在安全工作中的实用价值。
综合评分: 75
文章分类: 安全工具,WEB安全,渗透测试,安全建设,安全运营
![cover_image]()
【一起玩蛇】那些漏洞扫描器中的资产处理
原创
aerfa
我的安全视界观
2018年3月18日 10:19
在日常工作中,我们可能会经常做一些重复性的简单操作,比如将资产导入扫描器中进行漏洞扫描。如果获取的资产地址格式与扫描器要求不一致,有时候甚至需要自己根据子网掩码计算出网段。提高工效的一种方法可能就是因为懒,并且应该尽可能的把时间花在更值得花时间研究的事情上。比如:漏扫时资产转化—不值得花大量时间,扫描后的漏洞验证与研究—值得花精力;报告编写—不值得花大量时间,漏洞落地推动相关人员修复—值得花精力。
1 、实现功能
不少甲方企业都会有几款漏洞扫描器,商用的NESSUS、APPScan、NSFOCUS RSAS…,破解版的AWVS…,开源的巡风…。然而各个扫描器资产导入的格式都不太一样,比如巡风:
又比如NSFOCUS RSAS(web应用扫描):
然而获取到的地址格式为ip/mask :172.17.119.0/24,可以通过编写小脚本快速实现ip地址的转换:
| | | |
| — | — | — |
| 原格式 | XUNFNEG要求格式 | NSFOCUS RSAS web扫描格式 |
| 172.17.119.0/24 | 172.17.119.0-172.17.119.255 | http://10.33.0.1 |
#
#
2 、基础知识
2.1 基础环境
系统环境:win10
语言环境:python 2.7.13
所需模块:IPy
| |
| — |
| 在IP地址的处理中,Ipy模块可操作网段、网络掩码、广播地址、子网数、IP类型等。通过使用IP类的方法(IP类.方法名)实现,常用到的方法有: IP.net() 输出其网络地址 IP.netmask() 输出其网络掩码 IP.strNormal (prefixlen) 输出字符串类型IP地址 prefixlen == 0 / None 1.2.3.0(只返回一个IP) prefixlen == 1 /prefix 1.2.3.0/24 prefixlen == 2 /netmask 1.2.3.0/255.255.255.0 prefixlen == 3 -lastip () 1.2.3.0-1.2.3.255 IPy.IP() 输出该网段的IP个数和所有的IP地址清单 |
(1) 通过pip安装:pip install Ipy
(2) 源码方式安装(linux):wget https://pypi.python.org/packages/source/I/IPy/IPy-0.81.tar.gz
3 、脚本编写
3.1 XUNFENG格式
从本地读取待处理的ip网段(ip/mask形式),使用IP(line).strNormal(3)方法进行转化,并输出保存到NewIps.txt中。
| |
| — |
| # -*- coding:utf-8 -*- # 根据IP与掩码计算输出网段,比如:192.168.0.1/24 ==》 192.168.0.1-192.168.0.255 # 适用于巡风资产发现时导入 from IPy import IP f = open(“ipmask.txt”, “r”) #原始网段集192.168.0.1/24 lines = f.readlines() f.close() with open(“NewIps.txt”, “w”) as fp: for line in lines: NewIp = IP(line).strNormal(3) #使用strNormal()方法来将IP地址转换为字符串类型 fp.write(NewIp + ‘\n’) print “OK!” |
脚本执行,成功结束时返回OK!
同目录下生成转换好的ip地址文件NewIps.txt:
3.2 NSFOCUS RSAS格式
从本地读取待处理的ip网段(ip/mask形式),使用IPy.IP()方法进行转化,在输出时添加http://,保存到SingleIp.txt中。
| |
| — |
| # -*- coding:utf8 -*- # 根据IP与掩码计算输出IP地址,比如:192.168.0.1/24 ==》 http://192.168.0.1 # 适用于绿盟漏扫,批量导入地址进行web扫描 import IPy f = open(“ipmask.txt”, “r”) #原始网段集192.168.0.1/24 lines = f.readlines() f.close() with open(“SingleIp.txt”, “w”) as fopen: for line in lines: ip = IPy.IP(line) for x in ip: fopen.write(‘http://’ + str(x) + ‘\n’) print “OK!” |
脚本执行,成功结束时返回OK!
同目录下生成转换好的ip地址文件SingleIp.txt:
至此,很简单的两个脚本就告一段落。这也再次展现了python的强大与美。那么,快来一起玩蛇吧~
—————————- 往期回顾 —————————–
【1】【安全测试】Android APP安全测试之敏感信息本地存储
【6】【应急响应】redis未授权访问致远程植入挖矿脚本(防御篇)
【7】【应急响应】redis未授权访问致远程植入挖矿脚本(攻击篇)
【8】【应急响应】redis未授权访问致远程植入挖矿脚本(完结篇)
【10】【企业安全】企业安全威胁简述
【11】【企业安全】企业安全架构建设
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:我的安全视界观 aerfa《【一起玩蛇】那些漏洞扫描器中的资产处理》