基于Python的web漏洞挖掘扫描技术的实现与研究【附源码,文档】

博主介绍:✌Java老徐、7年大厂程序员经历。全网粉丝12w+、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌

🍅文末获取源码联系🍅

👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟

Java基于微信小程序的校园外卖平台设计与实现,附源码
Python基于Django的微博热搜、微博舆论可视化系统,附源码
Java基于SpringBoot+Vue的学生宿舍管理系统

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及文档编写等相关问题都可以给我留言咨询,希望帮助更多的人

文章目录

  • 第一章 项目简介
  • 第二章 技术栈
  • 第三章 Web应用程序漏洞检测技术
    • 3.1 网络爬虫
      • 3.1.1 网络爬虫原理
      • 3.1.2 爬取策略
      • 3.1.3 Scrapy爬虫架构
    • 3.2 SQL注入漏洞
    • 3.3 XSS漏洞
  • 第四章 系统设计与实现
    • 4.1 系统整体设计
    • 4.2 爬虫模块的设计与实现
      • 4.2.1 爬虫模块的设计
      • 4.2.2 爬虫模块的实现
    • 4.3 XSS扫描模块的设计与实现
    • 4.4 应用中SQL注入
    • 4.5 相关报告生成
  • 第五章 系统的实现与漏洞挖掘
    • 5.1 系统的首页面
    • 5.2 web漏洞挖掘网站首页
    • 5.3 漏洞总览页面
    • 5.4 漏洞详情页面
  • 第六章 推荐阅读
  • 第七章 源码获取:

第一章 项目简介

本次技术通过利用Python技术来开发一款针对web漏洞挖掘扫描的技术,通过web漏洞的挖掘扫描来实现对网站URL的漏洞检测,通过高中低风险的判断来实现对一款网站中存在的漏洞进行可视化的分析,从而能够找到问题并且尽快的实现问题的解决。
网络漏洞扫描技术能够通过以攻击者的视角出发,通过模拟对程序的攻击来认识到程序可能存在的风险,从而更快速的找到问题的所在,实现有效的漏洞补丁完善等功能实现。漏洞挖掘扫描技术是一种主动的防御过程,是未雨绸缪的一种防护手段。这种手段能够通过提前对web进行渗透扫描来了解到网页的运行参数、时间参数等信息内容,从而通过扫描形成的检测报告来查找到系统中可能存在的威胁情况。而本次就是通过了Python技术来打造一款能够实现有效的网页漏洞扫描的主要功能实现,通过对网页的提前扫描来主动的进行安全的检测,之后再通过可视化的图表方式来对查找到的漏洞情况进行直观的展示,从而能够有效的为用户提供提醒或者警示的作用,告诉用户该网站是否安全,做好提前的使用判断。

第二章 技术栈

Python Django

MySql

HTML,Javascript

第三章 Web应用程序漏洞检测技术

3.1 网络爬虫

3.1.1 网络爬虫原理

网络爬虫是通过对网页中的URL加以利用,进而获得网页内的资料信息,通过模仿正常的网页登录方式来对网页中的内容进行下载以及深层次的内容分析。网络爬虫通过以数据源的地址为爬取的起始点,通过搜集URL,筛选出有关的连接信息,通过特定的规则来进行连接的筛选,通过将连接保存在队列中来完成下一步的搜索,直至搜索的队列内容为空为止。下图是一个网络爬虫的基本操作流程图:

3.1.2 爬取策略

爬取数据是需要有策略导向的,在URL队列汇总通过对搜索次序的排列来完成对整个爬取策略的订制,爬虫的相关策略有以下的几种方式:
(1)深度优先策略
通过以种子URL为起始点,从七点到下一个访问点之间不再有任何的访问节点,通过这种路径方式来实现深度的数据爬取,指导两个节点中间再无节点位置。深度优先的策略是一项能够完完整整的从网页上将所有的信息进行爬取的一种技术,但是这种技术也有着不足之处,如果爬取的内容过深,则该技术会进行无限的爬取,影响到爬取数据的准确度。
(2)广度优先策略
在这种优先策略的使用上,是以尽可能的覆盖整个网络来实现宽优先的搜索策略,通过这种搜索的过程能够从平行的起点开始,通过同一深度来进行有效的数据攀爬过程实现,反复攀爬直至全部的连接完成。
(3)最佳优先策略
最佳优先,是通过在传统的算法之中加入一系列特殊的算法,通过以算法为基础来进行一个可扩展的策略制定,通过将网页分析算法进行页面的分析,通过预测连接的需求来实现在通过思考之后将有必要爬取的连接放置在队列中,这种方式后期也是对队列中的信息进行不断的扫描纸质队列为空位置。这种算法的针对性更强,爬取的效率也更快。

3.1.3 Scrapy爬虫架构

本次在网络爬虫的选择上,由于系统的功能模块开发选择了Python技术,所以此次的爬虫架构也选择了Python语言下的Scrapy来进行爬虫功能的实现,在此次的设计上,该技术的主要由七大部分组成,通过scrapy作为主引擎,通过下载器来进行页面的相关内容的获取,通过蜘蛛和爬虫中间件来完成对数据的爬取功能。

3.2 SQL注入漏洞

SQL注入是现在通过数据库漏洞而造成的一项安全隐患巨大的漏洞,由于直面数据库,这种漏洞十分的危险,对于国家的安全、个人的信息安全等均可以造成巨大的损失。这种注入方式难易被察觉,和普通用户在使用网站是的数据存取基本相同,防火墙等安全措施无法进行报警,使得该注入漏洞有着极强的隐蔽性。SQL注入能够将常规的数值进行修改,改成SQL不敏感的一个字符串,通过这种修改来让字符串录入数据库是难易被察觉。这种漏洞出现的原因是在程序的开发过程中,在SQL语句的编译上,没有进行用户参数的严格全面的检查,使得SQL语句拼接的过程中存在问题,并将这种带有问题的语句提交到数据库汇总记性了运行。
SQL的注入方式通常会通过以用户输入的方式进行注入,这种方式下由于不严格的进行用户的输入参数值的筛选,从而造成含有特定含义的参数植入到SQL语句中,会实现数据库的侵入。Cookie的注入方式是通过输入cookie值的方式来进行SQL的注入。第三种方式是通过服务器的变量注入的方式通过以HTTP报头的环境变量,通过插入进行设计的敏感字符串,来实现注入运行。

3.3 XSS漏洞

跨站脚本攻击的方法也是常见的漏洞东之一,被简称为XSS漏洞,这种漏洞是在开发人员在提交用户数据时没有进行筛选和过滤,使得攻击脚本被传至浏览器中,并且在浏览器中被触发,从而产生安全的漏洞,这种方式下,通常有三种漏洞的形式,分别为反射型、存储型以及DOM型。
反射型的XSS漏洞中,攻击者通过将带有恶意脚本的网页返回给用户,并且通过在浏览器上进行恶意的脚本出发,从而使得攻击者能够获取个人用户的信息,如下图所示:

DOM型的漏洞攻击与XSS相似,都是通过这种方式来寻找网页中的反射型的缺陷。DOM是能够通过JavaScript的脚本动态来进行模型的修改。而存储型的XSS相对于前两者而言更加具有隐蔽性,其危害性也更加,通过对网页上存储的矢量进行攻击,使其在网页上执行攻击代码,从而获取用户的个人信息。这种方式的结构如下所示:

第四章 系统设计与实现

4.1 系统整体设计

此次在漏洞挖掘技术的使用上,主要通过以四个部分来进行相应的内容组成,分别为信息采集、输入参数分析、缺陷检测、缺陷报告产生等来进行设计,其主要的整体设计图如下所示:

通过上图可以看出此次的系统设计需要通过三大部分来实现有效的功能设计实现,分别为爬虫、漏洞探测、SQL注入,通过这三个步骤之后在网页端形成报告的生成。
(1)爬虫模块是以主题爬虫为最为基础的内容设计,通过对URL的相关数据爬取来实现有效的信息的下载获取;
(2)缺陷探测过程中,通过对正常的URL、带有缺陷的URL等进行检测,将检测出的内容存储在数据库汇总。
(3)通过SQL注入来进行数据库的SQL语句的内容测试。

4.2 爬虫模块的设计与实现

4.2.1 爬虫模块的设计

此次在爬虫模块的设计上,需要体现出爬虫爬取速度快、能够为用户快速的得到结果的处理方式来进行漏洞挖掘扫描技术的推进。所以本次通过采用广度优先的方式能够很好的通过覆盖页面的爬取方式来制定一个策略性的深度爬取过程,通过对系统的有效爬取来实现对相关信息的提取实现。主要分为了以下的几个步骤:
(1)网页下载
网页下载是通过将HTTP的请求发送到目的地,通过HTTP响应的方式来对页面进行分析,从最初的URL为起始点,将所有页面进行快速的浏览并且将其全部的存储到本地数据库中。
(2)提取URL
这种方式是通过抽取URL连接,通过正规运算规则,以字符串的排列来对字符串进行在线的匹配。通过对URL的规范、标准进行检测,将符合本次测试要求条件的URL保存到需要爬取的URL队列之中。
(3)提取可能的注入点信息
这种方式是通过从form表格中进行相关信息的查找,通过输入域< input>选择域> select>多行文本域的方式来进行相应的名称和价值属性管理的排列。通过以method作为请求的提交范式来进行get和post的获得。通过这种方式来检测使用者的表单中是否加入了恶意代码,如果加入了恶意代码则会在产生程式上产生缺陷。此次设计的爬虫整体的设计图展示如下:
爬虫模块设计图如下:

4.2.2 爬虫模块的实现

本次设计的爬虫模块的设计如下图所示:

4.3 XSS扫描模块的设计与实现

本次在XSS的检测设计上,是此次搭建的漏洞挖掘技术软件的一个非常关键的功能,通过该功能能够模拟恶意代码的注入,通过静态的扫描方式来找到可能存在缺陷的代码及模块,本次的设计如下:
此次的XSS设计是通过在服务器上建立一个特定的编码,通过对特定的编码进行标记,将其镶嵌在服务器中,通过返回的数据信息来进行漏洞的判定以及漏洞的挖掘实现。
XSS模块的流程如图。

(1)使用者在网站或者搜寻模组中通过获取目标网站来对目标网址进行判定,判定其是否满足搜寻目标的选定,如果满足则进入下一步的测试环节。
(2)在URL的参数分解上,通过自定义的key来代替相应的参数信息,从而向数据库发送请求,通过对得到的返回的请求信息进行判断来进行URL的保存。
(3)在参数的搜集过程中,如果出现清单不为空,则需要对该类表进行请求的判定,通过关键字来查找到key所标记的位置,通过位置属性的查找来实现URL的存储。
(4)通过在词典中读取每一个URL通过在payload中进行注入码的加载,来发送到服务器,通过服务器来判断是否返回,如果存在注入代码则代表着存在XSS威胁。

4.4 应用中SQL注入

在URL、cookie参数以及from窗体中都是出现SQL注入的常见地带。在SQL注入的扫描过程中,要通过工具的探测来实现服务器交互的实现。该工具能够探测到与服务器交互的各个位置,通过观察服务器的反应过程来判断SQL的注入漏洞缺陷。
SQL注入最为基本的方式是利用了网络应用不会对用户输入的数据及西宁筛选,从而通过在用户输入的内容中形成一个动态的SQL语句来实现特定字符的注入。SQL注入检测过程如下图:


本次设计的SQL注入漏洞挖掘技术的主要操作步骤展示如下:
(1)通过确定URL的需求,通过向服务器发送请求,在得到的信息中进行form标签的查看,然后再进行下一项内容的查询。
(2)在网页的分析中,通过返回的信息获取用户名和密码的标签名称。
(3)通过整体的运算操作,以大量的URL词典来进行下一步的请求发送,再一次的得到服务器的反馈分析。
(4)通过用户的身份验证,通过黑盒的方式来不断的输入信息来进行恶意的登录过程。
(5)在每一次都输入错误的过程中,查找一些其他方面的信息统计,通过status来进行信息的确认实现。

4.5 相关报告生成

本次的系统设计上,最终反馈给用户的如果仅仅是一串代码,很难满足大众的使用需求,因此需要将生成的报告形成可视化的方式来进行很好的内容展示工作完成。
在报告的生成上,通过以XML的方式来进行信息的转化有着很好的使用效果,XML是一种开放的、不依赖平台也不依赖于供应商的一种技术标准,这种技术标准可以在网页中进行直接的使用,因此具有很强的跨平台特点,能够在各类平台上进行XML文档的读写、处理等工作的实现,可以通过纯粹的文字文档来实现有效的通讯传输的功能实现,是一种纯粹的、有着很好的通信方式实现的长文本传送的格式。其体积轻便,能够通过很小的空间占用来实现高效的信息存储的工鞥那服务。能够实现有效的自我描述,通过标签、符号、自定义内容等方式来进行很好的内容组件,将电脑中的操作数据进行可视化的展示服务。

第五章 系统的实现与漏洞挖掘

本次的系统开发是建立在Python技术、django框架下来进行的页面模块开发,通过以scrapy爬虫技术来进行漏洞挖掘功能的实现,通过爬虫技术所爬取的数据信息全部存储在MySQL数据库中。

5.1 系统的首页面

此次的系统首页面是登录的页面,需要用户完成登录后才能够在网站中实现爬虫的功能应用。

5.2 web漏洞挖掘网站首页

在登录完成后,系统会进入到web漏洞挖掘的网站首页,在该页面中有爬取的总URL数、高危漏洞数、中危漏洞数以及低危漏洞数等。并且其他的功能菜单还有漏洞总览、漏洞详情等功能,配合有个人信息的维护管理的功能模块。如下图所示:

5.3 漏洞总览页面

在漏洞总览页面中,能看到扫描历史的主要URL情况,包括扫描的状态,出现的高危、中危、低危的漏洞个数,扫描完成的时间等内容,并且在对话框中也能够进行新的URL地址的输入并且进行搜索。如下图所示:

5.4 漏洞详情页面

在漏洞详情中,能够看到逐条显示的URL漏洞的名字、关联编号以及漏洞的危险等级等,通过这些信息的归类可以完成对漏洞的详细内容展示的功能实现,如下图所示:

第六章 推荐阅读

基于Python的循环神经网络的情感分类系统设计与实现,附源码

Python基于人脸识别的实验室智能门禁系统的设计与实现,附源码

Java基于微信小程序的讲座预约系统的研究与实现,附源码

Java基于微信小程序的校园订餐系统

Java基于SpringBoot的在线学习平台

2023年Java毕业设计题目如何选题?Java毕业设计选题大全

基于Python的机器学习的文本分类系统

基于Python dlib的人脸识别的上课考勤管理系统(V2.0)

Java 基于 SpringBoot+Vue 的公司人事管理系统的研究与实现(V2.0)

第七章 源码获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻

👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟

Python毕业设计

Java 大学生实战精品项目

Java微信小程序精品项目

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及文档编写等相关问题都可以给我留言咨询,希望帮助更多的人

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/11244.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【生信技能树】拿到表达矩阵之后,如何使用ggplot2绘图系统绘制箱线图?

拿到表达矩阵之后&#xff0c;如何使用ggplot2绘图系统绘制箱线图&#xff1f; 目录 预备知识 绘制箱线图示例 预备知识 1.pivot_longer函数 pivot_longer 是tidyr包中的一个函数&#xff0c;用于将数据框&#xff08;data frame&#xff09;从宽格式转换为长格式。在宽格…

一文掌握gRPC

文章目录 1. gRPC简介2. Http2.0协议3. 序列化-Protobuf4. gRPC开发实战环境搭建5. gRPC的四种通信方式&#xff08;重点&#xff09;6. gRPC的代理方式7. SprintBoot整合gRPC 1. gRPC简介 gRPC是由google开源的高性能的RPC框架。它是由google的Stubby这样一个内部的RPC框架演…

Java日志总结

开发中&#xff0c;日志记录是不可或缺的一部分&#xff0c;应用日志的记录主要用于&#xff1a;记录操作轨迹数据、监控系统运行情况、系统故障定位问题&#xff0c;日志的重要性不言而喻&#xff0c;想要快速定位问题&#xff0c;日志分析是个重要的手段&#xff0c;Java也提…

JAVA 集合(单列集合)

集合框架 1.集合的特点 a.只能存储引用数据类型的数据 b.长度可变 c.集合中有大量的方法,方便我们操作 2.分类: a.单列集合:一个元素就一个组成部分: list.add(“张三”) b.双列集合:一个元素有两部分构成: key 和 value map.put(“涛哥”,“金莲”) -> key,value叫做键值…

锁和MVCC如何实现mysql的隔离级别

概述 MVCC解决读的隔离性&#xff0c;加锁解决写的隔离性。 读未提交 读未提交&#xff0c;更新数据大概率使用的是独享锁吧。 读已提交 在 Read Committed&#xff08;读已提交&#xff09;隔离级别下&#xff0c;每次执行读操作时都会生成一个新的 read view。这是因为在读…

AI 图像生成-环境配置

一、python环境安装 Windows安装Python&#xff08;图解&#xff09; 二、CUDA安装 CUDA安装教程&#xff08;超详细&#xff09;-CSDN博客 三、Git安装 git安装教程&#xff08;详细版本&#xff09;-CSDN博客 四、启动器安装 这里安装的是秋叶aaaki的安装包 【AI绘画…

【GlobalMapper精品教程】081:WGS84/CGCS2000转Lambert投影

参考阅读:ArcGIS实验教程——实验十:矢量数据投影变换 文章目录 一、加载实验数据二、设置输出坐标系三、数据导出一、加载实验数据 打开配套案例数据包中的data081.rar中的矢量数据,如下所示: 查看源坐标系:双击图层的,图层投影选项卡,数据的已有坐标系为WGS84地理坐标…

【3dmax笔记】021:对齐工具(快速对齐、法线对齐、对齐摄影机)

文章目录 一、对齐二、快速对齐三、法线对齐四、对齐摄影机五、注意事项3dmax提供了对齐、快速对齐、法线对齐和对齐摄像机等对齐工具: 对齐工具选项: 下面进行一一讲解。 一、对齐 快捷键为Alt+A,将当前选择对象与目标对象进行对齐。 最大对最大:

【小笔记】neo4j用load csv指令导入数据

【小笔记】neo4j用load csv指令导入数据 背景 很久没有用load CSV的方式导入过数据了因为它每次导入有数量限制&#xff08;印象中是1K还是1W&#xff09;&#xff0c;在企业中构建的图谱往往都是大规模的&#xff0c;此时通常采用的是Neo4j-admin import方式。最近遇到了一些…

振弦式表面应变计怎么安装

振弦式表面应变计是一种用于测量结构表面应变的高精度传感器&#xff0c;广泛应用于工程和科研领域。正确安装振弦式表面应变计对于确保测量结果的准确性至关重要。以下是安装振弦式表面应变计的步骤和注意事项&#xff1a; 1. 准备工作 在开始安装前&#xff0c;需要准备以下工…

whisper之初步使用记录

文章目录 前言 一、whisper是什么&#xff1f; 二、使用步骤 1.安装 2.python调用 3.识别效果评估 4.一点封装 5.参考链接 总结 前言 随着AI大模型的不断发展&#xff0c;语音识别等周边内容也再次引发关注&#xff0c;通过语音转文字再与大模型交互&#xff0c;从而…

【Gitlab远程访问本地仓库】Gitlab如何安装配置并结合内网穿透实现远程访问本地仓库进行管理

文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 前言 GitLab 是一个用于仓库管理系统的开源项目&#xff0c;使用Git作为代码管理工具&#xf…

为什么质量工程师必学六西格玛?突破职业发展的瓶颈?

在质量管理领域工作多年&#xff0c;你是否曾感受到事业发展的停滞不前&#xff1f;3年、5年的职业生涯&#xff0c;薪水依旧停留在每月5000-7000&#xff0c;而同行业的其他人却能月入2-3万&#xff0c;这种差距让人不禁陷入深思。 问题究竟出在哪里&#xff1f;为什么我们的…

揭秘图形编程 动静接口如何助力 AGV 集成

在公司软件开发团队的办公室里&#xff0c;阳光透过窗户洒在排列整齐的办公桌上。卧龙坐在办公桌前&#xff0c;面前摊开一份内测报告&#xff0c;他的手指时不时地敲击着桌面&#xff0c;流露出内心的烦躁。他抬起头&#xff0c;眼神中透露出一丝困惑&#xff0c;看向正在文件…

【网络安全】【Frida实践案例】某图xx付费功能逆向分析(一)

文章目录 一、目标应用二、环境三、步骤1、查看布局id2、用到的Log日志类信息3、尝试hook VIP判断方法 四、总结五、相关源码 1、文章仅供学习参考&#xff0c;严禁非法使用&#xff01;如非法使用&#xff0c;而导致的一切后果&#xff0c;由使用者自负&#xff01; 2、禁止将…

【C++】string类常用函数用法总结

目录 常用函数一览 默认成员函数 与容量有关的函数 part 1 part 2 part 3 与访问和遍历有关的函数 与修改有关的函数 npos 与string相关的其它常用函数 常用非成员函数 getline和cin的区别 常用函数一览 //默认成员函数 string();string(const char* s);string(si…

docker八大架构之应用服务集群架构

应用服务集群架构 在之前&#xff0c;一个应用层要负责所有的用户操作&#xff0c;但是有时用户增加后就会导致供不应求的现象&#xff08;单个应用不足以支持海量的并发请求&#xff0c;高并发的时候站点响应变慢&#xff09;&#xff0c;这时就需要增加应用层服务器&#xf…

【STM32 |GPIO】GPIO结构、GPIO输出

目录 GPIO简介 GPIO的基本结构 GPIO位结构&#xff08;每一位的具体电路结构&#xff09; 输入 上拉和下拉电阻 斯密特触发器 ​编辑 输出 GPIO模式 ​编辑 浮空输入、上拉输入、下拉输入 模拟输入 开漏输出和推挽输出 复用开漏输出和复用推挽输出 LED和蜂鸣器…

【资源分享】完胜谷歌翻译的Deepl翻译

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验&#xff0c;帮助大家尽早适应研究生生活&#xff0c;尽快了解科研的本质。祝一切顺利&#xff01;—…

【数据结构与算法】力扣 111. 二叉树的最小深度

题目描述 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a; 叶子节点是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a; root [3,9,20,null,null,15,7] 输出&#xff1a; 2示例 2&#…