首页 > 编程语言 >Python-脆弱性信息收集

Python-脆弱性信息收集

时间:2024-04-03 14:29:05浏览次数:34  
标签:cisco 收集 Python smtp 脆弱性 url import today

公司做系统集成,有搜集产品脆弱性需求,包括cisco,vmware,redhat,F5等厂家。

如:Security Advisories

具体需求:

1.每天定时搜集十来个网络设备厂家网站新发布的脆弱性

2.根据产品和等级不同,邮件发给不同公司人员,内容包括:新脆弱性链接,脆弱性标题,CVE编号,发布时间等

2.不能发送重复脆弱性内容

难点:F5和ivanti网站遇到JWT问题,认证包含多次js的跳转(checkbox点选后),每次拿到的token有效期只有一天,思路是提前访问网站拿一下token,再带着有效token访问数据,这个看起来很困难,其实一点也不简单。

分析产品网站,通过xhr找到对应级别脆弱性的数据接口链接,response是一个大的json串

1.导入相关package,定义当天和昨天时间,因为大厂基本都是utc时间发布,仅检查当天即使是23:59检查也没用,中国时间看网站还没发布,utc时间发布后转换回来是中国的昨天时间###。

时间转换参考网站格式,用于比对判断。

import requests
import json
import datetime
today = datetime.date.today()
format_today=today.strftime("%Y-%m-%d")
yesterday = today - datetime.timedelta(days=1)
format_yesterday=yesterday.strftime("%Y-%m-%d")

url_cisco='xxx'
response=requests.get(url_cisco)
found_string=f"there WAS  new vulnerability {format_today}"
nofound_string=f"No new vulnerability {format_today} "
filename=f"xxx.txt"

2. 判断脆弱性函数,并记录到文件,根据特征字段判断是否已经通知过,避免重复###

def getCiscoVulnerability(url_cisco):
    sendmail.has_been_called = False
    for item in response.json():
        lastPublished=item["lastPublished"]
        if (lastPublished==format_today and astPublished not in filename) or (lastPublished==format_yesterday and and lastPublished not in filename):
            url_cisco = item["url"]
            title_cisco = item["title"]
            cve_cisco = item["cve"]
            summary_cisco = item["summary"]
            vul_date=lastPublished
            list=["思科产品:",title_cisco,summary_cisco,cve_cisco,vul_date,url_cisco]
            sendmail(url_cisco, title_cisco, summary_cisco, cve_cisco, vul_date)
            with open(filename, 'a') as file:
                file.write("\n")
                file.writelines("\t".join(list))

        else:

               continue

#根据发邮件函数调用与否,判断是否有新增脆弱性并记录日志

    if sendmail.has_been_called:
        print(found_string)
    else:
        print(nofound_string)

3. 发邮件模块

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
def sendmail(url_cisco,title_cisco,summary_cisco,cve_cisco,vul_date):
    sendmail.has_been_called = True
    # 设置发件人,收件人,主题和内容
    sender = 'xxx'
    receivers = ['xxx']
    subject = 'xxx'
    body = f"xxx"

    # 创建邮件对象
    msg = MIMEMultipart()
    msg['From'] = sender
    msg['To'] = ', '.join(receivers)
    msg['Subject'] = subject
    msg.attach(MIMEText(body))
    # 连接到SMTP服务器,发送邮件
    smtp_server = 'xx'
    smtp_port = 25  # 通常为587或465
    smtp_username = 'xx'  # 如果需要用户名和密码登录SMTP服务器,请提供用户名和密码。如果不需要,可以忽略此行。
    smtp_password = 'xx'  # 如果需要用户名和密码登录SMTP服务器,请提供用户名和密码。如果不需要,可以忽略此行。
    try:
        with smtplib.SMTP(smtp_server, smtp_port) as server:
            # server.starttls()  # 开始TLS加密会话,这通常在连接时进行。如果你使用的SMTP服务器不支持TLS加密,你可能需要联系你的邮件服务提供商。
            if smtp_username and smtp_password:
                server.login(smtp_username, smtp_password)  # 如果SMTP服务器需要用户名和密码登录,请提供用户名和密码。如果不需要,可以忽略此行。
            server.sendmail(sender, receivers, msg.as_string())  # 发送邮件
    except Exception as e:
        print(f"Error: {e}")

#主函数调用查找判断
def main():
    getCiscoVulnerability(url_cisco)

main()

其他产品网站类似,有的用到xpath或bs4,有的要拿到二级链接再次查找后判断,思路大同小异。

JWT尝试了几下没搞定,等弄清楚后再更新。

###########纸上得来终觉浅,绝知此事要躬行###########

标签:cisco,收集,Python,smtp,脆弱性,url,import,today
From: https://blog.csdn.net/Robert19831218/article/details/137148925

相关文章

  • python格式全部缩进?
    Python格式全部缩进是编写Python代码时需要注意的一个重要问题。从代码格式化的角度,缩进可以让代码更加易读和易于理解。从代码逻辑结构上讲,缩进可以帮助Python解释器识别代码块。违反了Python格式和规范的代码既不美观,也不易于维护。python格式全部缩进?Python程序块是通过缩进......
  • xgboost,一个超强的 Python 库!
    更多资料获取......
  • 帮忙看下这个题的Python代码咋写
    双11商品调配问题某电商企业有4个中心库、20个一级分拨中心。采购的商品分布到4个中心库,然后由中心库向一级分拨中心发货。为备战双11销售高峰。各中心库集中采购备货,备货量和各分拨中心订货量和各分拨中心到中心库的距离如下表:受天气影响,中心仓库4到分拨中心8-11无法调拨。......
  • 【华为OD】2024年华为OD机试C卷真题集:最新的真题集题库 C/C++/Java/python/JavaScript
    【华为OD】2024年C卷真题集:最新的真题集题库C/C++/Java/python/JavaScript【华为OD】2024年C卷真题集:最新的真题集题库C/C++/Java/python/JavaScript-CSDN博客 2024年华为OD机试C卷真题题集题库,有2种分数的题目列表分别是100分的列表、200分的列表需要订阅请看链接:C卷......
  • Python新手太需要了,这5个做题练习网站爱了!
    前言学习编程语言,练习必不可少,在练习和做题的过程中能够查漏补缺,清楚自己在理论学习过程中的不足和薄弱点,加深对于Python的理解和认识。今天就着重的给大家推荐一些适合「新手」练习的Python做题网站。请注意,这里强调的是「新手」,所以,上来就推leetcode、牛客、codewar的......
  • Python赚外快指南!找点轻松的活增加收入!
    当今收入低于5000的人至少占到40%,完全不够养活一家人,而且很多小伙伴其实空余时间比较多,特别是大学生,零花钱又不够花,都想靠业余时间找点轻松的活增加收入。但是缺没门路,为此结合我多年编程开发经验,总结了几种用Python赚外快的方法:1.最典型的就是找爬虫外包活儿。这个真是体......
  • “金三银四”变“铜三铁四”,会Python数据分析的人却笑了
    金三银四,本该是一年一度的招聘旺季。但今年的职场风向好像有些变化,大型互联网公司纷纷裁员,大批应届毕业生开始“春招”,如今3月份已经接近尾声,而招聘市场却反常的冷淡,尤其是互联网行业,新增职位量大幅下降。大家一边笑称今年的金三银四“氧化”成了“铜三铁四”,一边“投简历......
  • 小哥用Python兼职月入过万,用Python做项目有多赚钱?
    今天给大家分享一下2位前辈业余接兼职做的一些Python项目。达妹在这里想说,无论你是自学还是进培训班,只要把Python学好,钱自然而来。问:请问用Python可以接哪些兼职的活赚钱?1、兼职费用足够学费+生活费恰巧上学期间接过一些外包,恩,足够我和我媳妇的学费以及生活费,以及xx各种......
  • python中的可执行/调用对象有哪些?
        本文探讨一下pyhton中可执行/调用的对象有哪些?    大家首先想到的是函数/方法,但除了函数/方法之外,还有其他的对象是可执行/调用的,大家都了解吗?任何一个可执行对象都有一个codeobject,它是一个字节码序列,python虚拟机解释执行的就是字节码。    可......
  • python使用request发送x-www-form-urlencoded类型的数据
    场景:当接口的Content-Type类型是x-www-form-urlencoded,使用json类型去请求,无法请求成功解决方法:使用parse.urlencode()方法对json数据进行解码处理,再传入。实例代码如下:importrequestsfromurllibimportparsesession=requests.session()headers={"Content-Type":"app......