利用Python脚本实现漏洞情报监控与通知的经验分享!

拒绝做工具小子—编写Python漏洞验证脚本 前言 我们实战经常会遇到以下几个问题: ​ 1、遇到一个利用步骤十分繁琐的漏洞,中间错一步就无法利用 ​ 2、挖到一个通用漏洞,想要批量刷洞小赚一波,但手动去测试每个网站工作量太大 这个时候编写一个poc脚本将会将会减轻我们很多工作。本文将以编写一个高效通用的poc脚本为目的,学习一些必要的python知识,这周也是拒绝做工具小子努力学习的一周 requests模块使用技巧 Requests是Python中一个常用的HTTP请求库,使用Requests库来发起网络请求非常简单,具体的使用方法这里就不多介绍了 阅读详情

前言

本文主要介绍了笔者利用一个简单的Python脚本实现漏洞情报的监控以及自动通报的相关经验。

 

Python资源共享群:626017123

一、背景

笔者所在公司某一个业务系统用到了漏洞频发的Struts2框架,S2-045爆发的时候刚好是刚进公司不久,还没有落实好漏洞通报排查工作,因此该业务系统的服务器就因为这个漏洞沦陷了,后续又接连出了好几个RCE漏洞,好在及时发布了预警和响应排查,没有受到影响。鉴于S2的漏洞频繁爆发,且动不动就是RCE,搞得运维和开发大佬们慌得一批,因此笔者希望能够在漏洞信息发布后第一时间获取到相关信息以便于排查整改。

二、需求

如上面所讲的,笔者需要第一时间知道新的S2漏洞信息以便于排查整改,最笨的方法就是每天刷各大安全社区,高级一点的可以搭建漏洞信息监控平台,业界有许多威胁情报、态势感知方面的安全产品能够实现这个需求,但由于笔者想要节(gong)约(si)成(mei)本(qian),因此通过自己写python脚本来实现。

三、实现方法

首先要确定的是漏洞信息的来源,笔者选择了S2官方安全通告发布网页: https://0×9.me/ePYq8 ,页面内容如图所示:

 

 

 

 

 

 

然后是监控漏洞信息的方法,笔者是通过python脚本自动监控上图网页中的漏洞公告,当出现新发布的公告时,马上发送短信通知。下面是详细的流程图:

 

 

 

 

 

 

相信很多大佬已经看出来了其实原理很简单,就是读取网页内容后查找监控对象(S2-xxx)。虽然大佬们已经一眼识破了,但笔者出于敬业精神还是简单介绍一下脚本运行的基本流程:

1.定义监控地址(url)为官方安全通告网址,定义监控对象(key)为漏洞编号(S2-xxx); 2.请

GitHub信息收集实战:EDUSRC漏洞挖掘中的开源情报利用 在网络安全领域,信息收集是渗透测试与漏洞挖掘的基石,其核心原理在于通过公开渠道获取目标系统的资产、配置与潜在弱点信息,从而构建精准的攻击面。开源情报作为关键的技术手段,能够极大提升安全测试的效率与深度。GitHub作为全球最大的开源代码托管平台,存储了海量的项目代码、配置文件与提交历史,常无意间泄露硬编码的API密钥、数据库凭证、内部服务器地址等高价值信息,具有极高的技术价值。对于教育行业安全测试而言,由于高校信息系统开发主体多元、技术栈复杂,GitHub更成为发现漏洞线索的富矿。通过掌握高级搜索语法、结合 阅读详情

相关推荐

Day1漏洞攻击防御:从情报到自动化的黄金一小时响应体系

在网络安全领域,漏洞管理是保障系统安全的核心环节。其原理在于通过持续识别、评估和修复软件缺陷,降低被攻击的风险。这项技术的价值在于将安全防护从被动响应转向主动预防,有效应对自动化攻击的威胁。在实际应用场景中,当公开漏洞的补丁发布后,攻击者会利用修复时间差发起大规模自动化攻击,即Day1漏洞攻击。为应对这种威胁,关键在于构建以速度和自动化为核心的防御体系,例如通过软件物料清单(SBOM)实现精准的资产盘点,并利用自动化流水线快速部署安全补丁,从而在漏洞公开后的关键窗口期内实现有效防护。

weixin_34218579的博客 495

5分钟搭建OpenCVE漏洞监控系统:从被动救火到主动预警

在软件开发和运维领域,持续集成与安全防护是保障系统稳定性的核心环节。其基本原理在于通过自动化工具对代码、依赖和基础设施进行持续监控与扫描,从而在开发早期发现潜在风险。这一技术价值在于将安全左移,变被动响应为主动防御,显著降低漏洞被利用后的修复成本和业务影响。典型应用场景包括对开源组件、第三方库和基础软件的安全漏洞进行实时监控与告警。本文聚焦于OpenCVE这一轻量级工具,它通过订阅NVD、CVE等权威漏洞库,并利用供应商、产品等关键词进行过滤匹配,实现了对CVE漏洞情报的自动化采集、解析与推送。结合Dock

com_xpp的专栏 326

构建软件供应链安全日报:从漏洞与投毒预警到可行动情报

软件供应链安全已成为现代软件开发和运维的核心议题,其核心在于管理第三方依赖引入的风险。其基本原理是通过持续监控开源组件、库和框架,识别已知漏洞与恶意软件包,从而在攻击发生前进行预警和响应。这项技术的核心价值在于将海量、零散的安全威胁信息转化为结构化、可操作的情报,显著提升威胁响应速度并降低业务风险。典型的应用场景包括持续集成与持续部署(CI/CD)管道、依赖管理流程以及安全运营中心(SOC)的日常监控。本文聚焦的“安全日报”正是这一理念的工程实践,它系统性地整合了漏洞预警与投毒预警,通过多源情报融合与深度分

weixin_34109408的博客 307

NIST漏洞利用潜力评估:从CVSS到预测式防御的实战指南

在网络安全领域,漏洞管理是保障系统安全的核心环节。传统方法主要依赖CVSS等静态评分体系,但这类体系往往难以反映漏洞在真实环境中的动态风险。其原理在于,攻击者的行为模式、资产上下文和威胁情报热度共同决定了漏洞的实际“武器化”可能性。理解这一原理的技术价值在于,能够将安全运营从被动的响应修补,升级为主动的预测式防御,从而显著提升资源分配效率和风险应对的精准度。在实际应用场景中,安全团队需要构建一个融合漏洞利用成熟度、资产暴露面、威胁情报热度等多维度的量化评估模型,并整合到SDL和漏洞运营流程中。本文聚焦的NI

weixin_30631587的博客 337

内容敏感已删除

编写Python脚本来提高渗透测试效率:用Python进行信息搜集、漏洞扫描和口令猜测

weixin_43263566的博客 1399

Python-RSS安全订阅每日安全信息推送

RSS安全订阅 每日安全信息推送

strust2漏洞批量检查利用python脚本

python2.7,暂不支持python3,需安装几个python模块。

python 暴力破解wifi密码

通过字典,用python去暴力破解wifi密码,大概一秒尝试一个字典信息。

别再只盯着照片了!手把手教你用Python提取大疆照片里的GPS、姿态和RTK数据

本文详细介绍了如何使用Python提取大疆照片中的GPS、姿态和RTK数据,帮助用户解锁无人机拍摄照片中的隐藏元数据。通过实战代码示例,展示了如何解析EXIF格式的定位、姿态和RTK状态信息,并实现批量处理与数据分析,适用于测绘、农业巡检等专业领域。

weixin_30790841的博客 155

配置Dot1q终结子接口实现跨设备VLAN间通信示例

示例图 一.实验目的 1.配置Dot1q终结子接口实现跨设备VLAN间通信示例 二.注意事项 1.Dot1q终结子接口和QinQ终结子接口不支持透传不带VLAN Tag的报文, 收到不带VLAN Tag的报文会直接丢弃 2.由于三层以太网子接口不支持VLAN报文,当它收到VLAN报文时,会将VLAN报文当成是 非法报文而丢弃,因此,需要在子接口上将VLAN Tag剥掉,也就是需要VLAN终结 三.VLAN终结简介 1.VLAN终结的实质包含两个方面: ①.对接口接收到报文,剥除VLAN标

qq_44751470的博客 7097

DGX Spark上PyTorch GPU环境配置实战:CUDA 13.0与ARM架构全流程

在深度学习中,CUDA作为GPU加速计算的底层基础,其版本与深度学习框架(如PyTorch)的匹配直接影响模型训练的效率与稳定性。GPU环境配置不仅涉及驱动、CUDA工具链与框架运行时的协同,还依赖于硬件架构与预构建包的兼容性。在AI开发机Ubuntu系统上,正确对齐CUDA版本、计算能力架构及安装源,是避免环境故障、发挥硬件算力的关键。无论是面向个人AI超算还是通用GPU服务器,掌握版本对齐、路径隔离与验证方法,都能大幅提升开发效率。本文以DGX Spark为例,详解从环境摸底到PyTorch GPU版本

weixin_29483277的博客 220

Ubuntu安装opencv4.5(自己安装过程详细)

1.下载opencv 在opencv官网下载source版,下载链接 http://opencv.org/releases.html。别下载错版本 下载过程就不多说了。 2.安装过程 2.1解压 unzip opencv-4.5.0.zip cd opencv-4.5.0 2.2安装依赖的库 sudo apt-get install cmake sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-

weixin_45629790的博客 1万+

解决windows10下无法安装.net framework 3.5(包括.net2.0和3.0)

入域电脑,win10系统中安装 .net framework 3.5(包括.net2.0和3.0)

God_me_1的博客 4万+

AI Agent ReAct架构设计模型剖析

ReAct通过"思考-行动-观察"循环运作:智能体先进行自然语言推理,再调用外部工具执行行动,观察结果后继续推理直至解决问题。这种架构提高了透明度和准确性,减少幻觉风险,使LLM能主动分解任务并利用外部数据源。实现关键在于精心设计的提示模板,引导LLM按结构化格式响应,而非依赖模型固有能力。

weixin_43939320的博客 1250

PCB制造工艺参数到AD规则设置

本文提供了PCB设计与制造的落地指南,强调需先了解PCB厂的工艺参数,再在Altium Designer中设置相应规则。核心步骤包括:获取PCB厂的关键工艺参数(线宽/线距、过孔尺寸等),在AD中设置电气规则、布线规则、阻焊规则等,并进行DRC检查。文章还给出了常见问题避坑建议和快速落地模板,帮助设计师确保设计符合生产要求,避免因工艺不匹配导致的报废或成本增加。

qq_37999850的博客 293

CE电流法测试中的dBμV负值解析

传导发射(CE)电流法测试中出现的dBμV负值现象表明被测设备干扰电平低于1μV参考基准。这源于对数计算特性(小于1μV的电压转换后为负值)、设备优良的EMC设计(如滤波效果显著)及测试环境的影响(LISN隔离、屏蔽室低噪声)。负值虽不代表实际负电压,但反映干扰水平优于标准限值,为系统集成预留电磁裕度。工程应用中需结合设备灵敏度、环境背景噪声等因素综合分析,避免误判,这类数据可用于评估EMI设计冗余度。

硬核科技 298

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: 左手pandas右手Python,带你学习数据透视表!
下一篇: 用Python量化海龟交易法则!
普通网友
博客等级 码龄7年 438粉丝 263原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值