前言
来自网络,安全性自测。 |
欢迎加入零信任攻防实验室的知识星球,星球免费!后续会抽奖送360定制周边礼品哈,敬请期待!平台有批量验证的脚本、工具以及一些漏洞的POC,和分享网络安全资源(漏洞挖掘文章 工具 资讯) 以及SRC漏洞挖掘的技巧分享等等,资源多多,干货多多!
0x00 简介
今天就分享一下公益SRC漏洞的批量挖掘的技巧和所要用到的一些相关的工具和脚本出来和各位师傅交流一下,不足之处还希望师傅们多多指教。
0x01 国内的一些公益src漏洞平台
漏洞盒子:https://www.vulbox.com``
补天漏洞响应平台:https://www.butian.net``
CNNVD信息安全漏洞库:https://www.cnnvd.org.cn``教育漏洞提交平台:https://src.sjtu.edu.cn
漏洞盒子:
**奖励:**中等,奖励的话有现金还有积分,积分可以在商城内兑换礼物
**通过门槛:**门槛比较低,只要是漏洞都收,没有权重或者公司的一些要求,审核不是很严格,刚入门的师傅可以提交到漏洞盒子,练练手,积累一下经验和技巧
**审核速度:**一般吧,有时候快有时候慢
补天漏洞响应平台:
**奖励:**中等,可以给现金和kb,kb可以兑换实物奖励
**通过门槛:**高,需要收录移动百度权重大于等于1或者百度pc权重大于等于1或者谷歌权重大于等于3的网站,edu和gov的站不需要权重
**审核速度:**快
CNNVD信息安全漏洞库:
**奖品:**高,可以给你证书
**通过门槛:**极高,不仅仅要看权重,而且还要看公司的注册资金,好像是通用型的漏洞,厂商注册资金要超过五千万,而且还不能只提交一个,要提交十个案例才可以
**审核速度:**一般
教育漏洞提交平台:
**奖品:**高,有大学专门给的证书,和一些礼品
**通过门槛:**高,必须要edu和教育相关的网站,例如说大学,中学,高中这些
**审核速度:**一般
这里只列举最简单并且比较知名的一些公益src提交平台,还有一些其他的公益src提交平台,就不一一列举了
0x02 前期的准备工作
一些在线的搜索引擎网站:
(一)资产测绘引擎
fofa资产测绘引擎:https://fofa.info/``鹰图资产测绘引擎:https://hunter.qianxin.com/``shodan资产测绘引擎:https://www.shodan.io/``360资产测绘引擎:https://quake.360.net/``零零信安资产测绘引擎:https://0.zone/``谷歌hacker语法:https://codeleading.com/article/8526777820/
以上的搜索引擎网站都是用来收集目标网站信息的一些网络空间资产测绘,可以帮助我们快速的定位到目标的资产,批量获取url进行漏洞挖掘
(二)企业信息查询
爱企查:https://aiqicha.baidu.com``天眼查:https://www.tianyancha.com``企查查:https://www.qcc.com``小蓝本:https://www.xiaolanben.com
以上的网站是为了查询网站所属的企业的一些信息,为了方便在提交漏洞的时候填写详细联系方式和公司的地址
(三)域名信息查询
爱站:https://www.aizhan.com``站长工具:https://tool.chinaz.com
以上的网站是为了查询网站备案信息、网站权重信息、网站的ip信息等
(四)保持一个良好的心态
一个好的心态,和一个灵活的脑袋,心态很重要,保持一个良好的心态,挖洞的时候细心一点,不怕漏洞挖不到。正所谓心细则能挖天下!!!
一些工具和漏洞库
漏洞库
佩奇漏洞文库:``https://www.yuque.com/peiqiwiki/peiqi-poc-wiki``http://wiki.peiqi.tech/``白阁漏洞文库:``https://wiki.bylibrary.cn/%E6%BC%8F%E6%B4%9E%E5%BA%93/01-CMS%E6%BC%8F%E6%B4%9E/ActiveMQ/ActiveMQ%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E6%BC%8F%E6%B4%9E/``狼组安全团队公开知识库:``https://wiki.wgpsec.org/knowledge/``Morker文库:``https://wiki.96.mk/``风炫漏洞库:``https://evalshell.com/``exploit-db漏洞库:``https://www.exploit-db.com/
工具
fofax``fofa_viewer``nuclei``httpx``ip2domain
0x03 批量漏洞挖掘
在线文库查询
使用在线的漏洞文库收集nday或者1day的漏洞payload对网站批量进行漏洞挖掘。用佩奇或者白阁的都可以,只要能找到poc就可以
佩奇文库
白阁文库
这里的话就使用佩奇文库来进行演示,访问漏洞文库,获取对应的语句:
使用上边提到过的网络空间测绘搜索引擎来查找对应的资产,可以使用fofa,shodan,360quake,奇安信hunter,零零信安等测绘引擎搜索相关资产。我比较喜欢用fofa。
一般像OA这种系统框架都是有着清晰的指纹标识,方便从空间搜索引擎中批量寻找到目标,根据产品的漏洞来获取这个产品的资产然后进行批量的测试
使用语句定位到产品,然后就可以看到这些相关的资产。这里随便找一个网站看看是否为我们想要的
注意:任何未授权的测试都要点到为止,表明出漏洞的危害就好了,再往下就不礼貌了。
使用工具批量收集对应的资产网站
fofax:https://github.com/xiecat/fofax
在通过fofa空间测绘搜索引擎搜集到相关资产的时候,这个时候需要把资产给保存下来,进行下一步的操作,我们可以通过fofax或者fofa_viewer工具来将我们刚刚在fofa搜索到的资产进行导出
fofa_viewer:https://github.com/wgpsec/fofa_viewer
同理,通过fofa_viewer进行资产获取,将我们刚刚在fofa搜索到的资产进行导出
批量探测网站存活状态
使用工具httpx对上面收集到的url做一个存活验证,首先筛选出存活的url来,然后再进行测试,不然会浪费我们很多时间,这里我们使用httpx把存活的url保存到文件中
httpx.exe -timeout 15 -l fanwei.txt -o result.txt -mc 200
批量测试漏洞
根据泛微OA E-Cology BshServlet 远程代码执行漏洞漏洞命令执行的特征,我们简单写一个多线程检测脚本
from os import O_EXCL``import requests``import threading`` ``def POC_1(target_url,ss):` `vuln_url = target_url + r"/weaver/bsh.servlet.BshServlet"` `headers = {` `"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36",` `"Content-Type": "application/x-www-form-urlencoded",` `}` `try:` `response = requests.get(url=vuln_url, headers=headers, timeout=5,verify=False)` `if response.status_code == 200 and "BeanShell Test" in response.text:` `with open("存在漏洞的url.txt", 'a', encoding='UTF-8') as f:` `print("\033[32m[o] 目标{}存在漏洞".format(target_url))` `f.write(vuln_url + "\n")` `else:` `print("\033[31m[x] 目标不存在漏洞")` `except Exception as e:` `print("\033[31m[x] 请求失败", e)`` ``with open("fanwei.txt","r",encoding='UTF-8')as f:` `for i in f.readlines():` `ss = i.replace('\n','')` `ip = i.replace('\n','')` `threading.Thread(target=POC_1,args=(ip,ss)).start()
这是运行完脚本之后得到的所有存在漏洞站点的txt文件
随便拿一个验证一下是否真的存在漏洞
也可以使用佩奇文库给的poc批量测试
拿到有漏洞的url之后,我们需要处理一下这些数据,大概一个思路就是:
漏洞url
->根据url(因为有些网站是ip站)反查域名
->根据域名反查域名权重
->根据有权重的域名反查域名备案名称
->根据备案名称查询公司的基本信息,例如公司的所在地方和行业等等,这里下边会提到,请听我娓娓道来。
0x04 域名和权重和公司的批量检测
在提交补天或者其他漏洞平台的时候,可以发现平台会有提到这么一个提交漏洞的规则,那就是公益src的漏洞网站的主站权重需要达到指定的权重值才会收录,那么什么是权重值呢,网站权重是指搜索引擎给网站(包括网页)赋予一定的权威值,对网站(含网页)权威的评估评价。一个网站权重越高,在搜索引擎所占的份量越大,在搜索引擎排名就越好。补天的话是要百度移动权重大于等于1或者百度pc权重大于等于1,或者谷歌权重大于等于3,权重信息以爱站检测为准
爱站:https://rank.aizhan.com/
我们需要对上边收集过来的存在漏洞的url列表去做一个根据ip反查域名,然后域名反查权重这样一个功能,python大法好,学python得永生,这里使用python编写一个根据ip反查域名然后域名反查权重的功能。因为有些是ip站,要想查权重,就要查到ip所对应的域名,所以我们需要一个ip反查域名这么功能的脚本
#-- coding:UTF-8 --``import re, time``from urllib.parse import urlparse``import requests``from fake_useragent import UserAgent``from tqdm import tqdm``import os`` ``# 爱站``def aizhan_chaxun(ip, ua):` `aizhan_headers = {` `'Host': 'dns.aizhan.com',` `'User-Agent': ua.random,` `'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',` `'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',` `'Accept-Encoding': 'gzip, deflate, br',` `'Referer': 'https://dns.aizhan.com/'}` `aizhan_url = 'https://dns.aizhan.com/' + str(ip) + '/'` `try:` `aizhan_r = requests.get(url=aizhan_url, headers=aizhan_headers, timeout=2).text` `aizhan_nums = re.findall(r'''<span class="red">(.*?)</span>''', aizhan_r)` `if int(aizhan_nums[0]) > 0:` `aizhan_domains = re.findall(r'''rel="nofollow" target="_blank">(.*?)</a>''', aizhan_r)` `return aizhan_domains` `except:` `pass`` ``def catch_result(i):` `ua_header = UserAgent()` `i = i.strip()` `if "http://" not in i:` `i="http://"+i` `try:` `ip = urlparse(i).netloc` `aizhan_result = aizhan_chaxun(ip, ua_header)` `time.sleep(1)` `if (aizhan_result != None ):` `with open("ip反查结果.txt", 'a') as f:` `result = "[url]:" + i + " " + " [aizhan]:" + str(aizhan_result[0])` `print(result)` `f.write(result + "\n")` `else:` `with open("反查失败列表.txt", 'a') as f:` `f.write(i + "\n")` `except:` `pass`` `` ``if __name__ == '__main__':` `url_list = open("待ip反查.txt", 'r').readlines()` `url_len = len(open("待ip反查.txt", 'r').readlines())` `#每次启动时清空两个txt文件` `if os.path.exists("反查失败列表.txt"):` `f = open("反查失败列表.txt", 'w')` `f.truncate()` `if os.path.exists("ip反查结果.txt"):` `f = open("ip反查结果.txt", 'w')` `f.truncate()` `for i in tqdm(url_list):` `catch_result(i)
将前边收集到的存在漏洞的url存到一个叫待ip反查.txt的文件里,然后运行脚本
运行结果:
然后拿到解析的域名后,继续对域名权重进行检测,这里采用爱站来进行权重检测,这里是一个批量检测权重的脚本
# -- coding:UTF-8 --``import requests` `import re``import getopt``import sys``import threadpool``import urllib.parse``import urllib.request``import ssl``from urllib.error import HTTPError,URLError``import time``ssl._create_default_https_context = ssl._create_stdlib_context`` `` ``headers={``'Host': 'baidurank.aizhan.com',``'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',``'Sec-Fetch-Dest': 'document',``'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',``'Cookie': ''``}`` `` ``def google_simple(url, j):` `google_pc = "https://pr.aizhan.com/{}/".format(url)` `bz = 0` `http_or_find = 0` `try:` `response = requests.get(google_pc, timeout=10).text` `http_or_find = 1` `result_pc = re.findall(re.compile(r'<span>谷歌PR:</span><a>(.*?)/></a>'), response)[0]` `result_num = result_pc.split('alt="')[1].split('"')[0].strip()` `if int(result_num) > 0:` `bz = 1` `result = '[+] 谷歌权重:' + result_num + ' ' + j` `return result, bz` `except:` `if (http_or_find != 0):` `result = "[!]格式错误:" + "j"` `return result, bz` `else:` `time.sleep(3)` `return google_simple(url, j)`` `` ``def getPc(domain):` `aizhan_pc = 'https://baidurank.aizhan.com/api/br?domain={}&style=text'.format(domain)` `try:`` ` `req = urllib.request.Request(aizhan_pc, headers=headers)` `response = urllib.request.urlopen(req,timeout=10)` `b = response.read()` `a = b.decode("utf8")` `result_pc = re.findall(re.compile(r'>(.*?)</a>'),a)` `pc = result_pc[0]`` ` `except HTTPError as u:` `time.sleep(3)` `return getPc(domain)`` ` `return pc`` ``def getMobile(domain):` `aizhan_pc = 'https://baidurank.aizhan.com/api/mbr?domain={}&style=text'.format(domain)` `try:` `# b = requests.post(url=post_url,headers=headers, proxies=proxy, timeout = 7)` `# res = urllib.request.urlopen(aizhan_pc,timeout=10)` `# # res = opener.open(aizhan_pc,timeout=10)` `# a = res.read().decode('UTF-8')` `req = urllib.request.Request(aizhan_pc, headers=headers)` `response = urllib.request.urlopen(req,timeout=10)` `b = response.read()` `a = b.decode("utf8")` `result_m = re.findall(re.compile(r'>(.*?)</a>'),a)` `mobile = result_m[0]` `except HTTPError as u:` `time.sleep(3)` `return getMobile(domain)`` `` ` `return mobile``# 权重查询``def seo(name,url):`` ` `try:`` ` `result_pc = getPc(name)` `result_mobile = getMobile(name)`` ` `except Exception as u:` `# print(u)` `result_pc = '0'` `result_mobile = '0'`` ` `print('[- 目标{}获取权重失败,自动设为0'.format(url))` `# print('运行正常')` `print('[+ 百度权重:'+result_pc+' 移动权重:'+result_mobile+' Url:'+url)` `with open('vul.txt','a',encoding='utf-8') as y:` `y.write('[百度权重:'+result_pc+','+"移动权重:"+result_mobile+','+url+']'+'\n')`` ` `return True`` ``def exp(name1):` `# opts, args = getopt.getopt(sys.argv[1:], '-u:-r:', ['url', 'read'])` `# print(name1)` `try:` `name = name1[name1.rfind('/'):].strip('/')` `# print(name)` `rew = seo(name,name1)`` ` `except Exception as u:` `# except:` `print(u)` `print('[- 目标{}检测失败,已写入fail.txt等待重新检测'.format(name1))` `# file_fail.write(name1+'\n')` `with open('fail.txt',mode='a',encoding='utf-8') as o:` `o.write(name1+'\n')`` `` ``def multithreading(funcname, params=[], filename="ip.txt", pools=15):` `works = []` `with open(filename, "r") as f:` `for i in f:` `func_params = [i.rstrip("\n")] + params` `works.append((func_params, None))` `pool = threadpool.ThreadPool(pools)` `reqs = threadpool.makeRequests(funcname, works)`` ` `[pool.putRequest(req) for req in reqs]` `pool.wait()`` ``def main():` `multithreading(exp, [], "存在漏洞的url.txt", 15) # 默认15线程` `print("全部check完毕,请查看当前目录下的vul.txt")`` ``if __name__ == "__main__":` `# st = False` `# main(st)` `main()
结果:
然后拿着有权重的站,批量根据域名反查备案名称,这里推荐使用一个工具叫ip2domain,该工具可用于对跑到的ip批量查询域名及百度权重、备案信息,快速确定ip所属企业,方便提交漏洞。
工具链接:https://github.com/Sma11New/ip2domain
然后批量查询域名的备案公司
python ip2domain.py -f 存在漏洞的url.txt -t 10 --icp -o 根据域名反查厂商.txt
参数解析:-f 是指定批量查询的文件 -o是查询后的结果保存的文件名 -t是超时时间 --icp是查询网站对应的备案公司名
拿到公司名之后就可以提交漏洞了吗?并不是,这里还有最后一步,那就是,根据公司名去查找公司的基本工商信息,例如说:注册公司的所在地区,所属行业等等,因为提交漏洞的时候需要填写这些信息
所以我们要根据公司名反查公司的所在地区和所属行业等信息,这里推荐企查查或者天眼查
企查查:
天眼查:
从网站中就可以看到公司的基本信息,如注册资金,所属行业,所属地区等信息
然后反查完就可以拿到公益src平台进行提交,有权重的可以交补天漏洞响应平台,没有权重的可以交漏洞盒子
为了帮助大家更好的学习网络安全,我给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂这些资料!
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取