Python基于Django的web漏洞挖掘扫描技术的实现与研究(附源码,文档说明)

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

🍅文末获取源码联系🍅

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

2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅

Java项目精品实战案例《100套》

Java微信小程序项目实战《100套》

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

文章目录

  • 第一章 项目简介
  • 第二章 技术栈
  • 第三章 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的web漏洞挖掘技术的实现与研究

第二章 技术栈

原理:采用扫描软件awvs进行扫描

后端:Python Django

前端: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漏洞的名字、关联编号以及漏洞的危险等级等,通过这些信息的归类可以完成对漏洞的详细内容展示的功能实现,如下图所示:

第六章 推荐阅读

Java基于SpringBoot+Vue的网上图书商城管理系统(附源码,教程)

基于 Python 的豆瓣电影分析、可视化系统,附源码

Java 基于SpringBoot的某家乡美食系统

Java基于SpringBoot的学生就业管理信息系统

第七章 源码获取:

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

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

2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅

Java项目精品实战案例《200套》

Java微信小程序项目实战《100套》

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

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

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

相关文章

数据结构-c++

数据结构 链表设计链表1.进制转换2.顺序表逆置3.链表转置 栈栈的实现 队列队列实现1.逆置队列 二叉树遍历顺序1.树的深度2.左右子树交换3.输出并求出非叶子节点个数 图1.邻接矩阵转换成临界表2.深度优先搜索 查找折半查找算法 排序快速排序 链表 设计链表 #include <iostr…

简单发布一个npm包

将自己封装的组件上传到 npm&#xff0c;并在其他项目中下载并使用&#xff0c;是一个非常有用的技能。看完下面这些你就可以自己完成从封装组件到上传 npm 并使用的全过程。 1: 封装组件 首先&#xff0c;你需要创建一个符合标准的 npm 包。假设你已经写好了组件代码&#xf…

24.try块怎么用 C#例子

这是一个用英语写的try-catch例子 简单来说就是一个try&#xff0c;try里面的代码可能会出错&#xff0c;然后有两个catch&#xff0c;规定了具体的错误是什么 如果发生相应的错误&#xff0c;就会把错误信息存到err里&#xff0c;err.Message是一个字符串格式的提示信息&…

记录命令行操作树莓派Wifi的方式

打开WiFi rfkill unblock wlan 关闭WiFi rfkill block wlan 设置可连接的WiFi 方法一&#xff08;bullseye及以前版本才可用&#xff0c;bookworm版本&#xff09; sudo nano /etc/wpa_supplicant/wpa_supplicant.conf network{ssid"wifi_name"psk"wifi_pas…

【Axure高保真原型】计时秒表

今天和大家分享计时原型模板&#xff0c;效果包括&#xff1a; 点击计时按钮&#xff0c;可以开始或者停止计时&#xff1b; 秒针会自动运转&#xff0c;时长会自动记录&#xff1b; 右侧表格会记录每一次开始和结束时间&#xff0c;并计算该段时长&#xff1b; 点击重置按钮…

随机变量是一个函数-如何理解

文章目录 一. 随机变量二. 随机变量是一个函数-栗子(一对一)1. 掷骰子的随机变量2. 掷骰子的随机变量&#xff08;求点数平方&#xff09;3. 抛硬币的随机变量4. 学生考试得分的随机变量 三. 随机变量是一个函数-理解(多对一) 一. 随机变量 随机变量就是定义在样本空间上的函数…

FOC软件 STM32CubeMX 使用

1、安装-及相关软件版本 展示版本注意事项&#xff1a;keil MDK和STM32CubeMX版本至少要大于等于图中版本。 2、 Motor Profiler 5.2.0使用方法 主要测试&#xff0c;电感、电流、最大速度等。 获得参数以后再使用控制台准确的控制。 3、MotorControl Workbench 5.2.0使用方法…

科技创新 数智未来|清科·沙丘投研院走进竹云

12月20日&#xff0c;清科沙丘投研院带领企投家团队走进竹云交流分享&#xff0c;聚焦技术创新、企业数字化管理、行业前沿应用案例等热点议题&#xff0c;深入探讨数字技术如何点燃企业高质量发展的澎湃动力&#xff0c;共话企业数字化、智能化发展之道。 达晨财智股权管理部…

Python机器学习笔记(十四、凝聚聚类和DBSCAN)

凝聚聚类 凝聚聚类&#xff08;agglomerative clustering&#xff09;指的是许多基于相同原则构建的聚类算法&#xff0c;这一原则是&#xff1a;算法首先声明每个点是自己的簇&#xff0c;然后合并两个最相似的簇&#xff0c;直到满足某种停止准则为止。 scikit-learn中实现…

题解:CF373B Making Sequences is Fun

思路 我们拿到这一题可以发现&#xff0c;可以使用二分查找。 bool check(ll x) {ll sum0;for(int im;i<mx;i){sumsumk*h(i);if(sum>n){return 0;}}return 1; }如果 check 函数这样写&#xff0c;那代码就算用了二分优化也一定会超时。那我们可以考虑如何优化 check 函…

v语言介绍

V 语言是一种多用途的编程语言&#xff0c;可以用于前端开发、后端开发、系统编程、游戏开发等多个领域。它的设计哲学是提供接近 C 语言的性能&#xff0c;同时简化开发过程并提高代码的安全性和可读性。接下来我会详细介绍 V 在前后端开发中的应用&#xff0c;并给出一个具体…

关于 K8s 的一些基础概念整理-补充【k8s系列之二】

〇、前言 本文继续整理下 K8s 的一些基础概念&#xff0c;作为前一篇概念汇总的补充。 前一篇博文链接&#xff1a;关于 K8s 的一些基础概念整理【k8s系列之一】_集群 master节点 控制节点 宿主机-CSDN博客 一、详情 1.1 Label Label 在 k8s 中是一个非常核心的概念&#xf…

php的zip扩展 先装libzip

【宝塔面板】php7.4 安装 zip 扩展 - PHP笔记网 在CentOS 7系统中&#xff0c;通过【宝塔Linux】安装了PHP7.4&#xff0c;运行业务系统时&#xff0c;报错&#xff1a; 1 it is missing from your system. Install or enable PHPs zip extension. 提示需要php的zip扩展&…

云效流水线自动化部署web静态网站

云效流水线部署静态网站 背景新建流水线配置流水线运行流水线总结 背景 配置流水线以前&#xff0c;每次更新导航网站都要登进去宝塔后台&#xff0c;删掉旧的目录和文件&#xff0c;再上传最新的文件&#xff0c;太麻烦啦 网上的博客基本都是分享vue项目&#xff0c;这一篇是…

Android MQTT关于断开连接disconnect报错原因

最近项目遇到一个需求&#xff0c;就是在登录状态的时候。才能接收到消息。所有我在上线&#xff0c;下线状态的时候。做了MQTT断开和连接的动作。然后就是发生了。我们标题的这关键点了。直接报错了。报错的内容如下&#xff1a; MqttAndroidClient unregisterRecevicer afte…

gitlab克隆仓库报错fatal: unable to access ‘仓库地址xxxxxxxx‘

首次克隆仓库&#xff0c;失效了&#xff0c;上网查方法&#xff0c;都说是网络代理的问题&#xff0c;各种清理网络代理后都无效&#xff0c;去问同事&#xff1a; 先前都是直接复制的网页url当做远端url&#xff0c;或者点击按钮‘使用http克隆’ 这次对于我来说有效的远端u…

我的秋招总结

我的秋招总结 个人背景 双非本&#xff0c;985硕&#xff0c;科班 准备情况 以求职为目的学习Java的时间大概一年。 八股&#xff0c;一开始主要是看B站黑马的八股文课程&#xff0c;背JavaGuide和小林coding还有面试鸭。 算法&#xff0c;250&#xff0c;刷了3遍左右 项目&…

VB.NET在 Excel 二次开发中的全面应用

摘要&#xff1a; 本文详细阐述了如何运用VB.NET进行 Excel 的二次开发。首先介绍了开发环境的搭建&#xff0c;包括安装 Visual Studio 及引用 Excel 对象库。接着深入探讨了各种基础操作&#xff0c;如创建 Excel 应用程序对象、打开与操作工作簿、处理工作表与单元格数据等。…

单例模式的写法

单例模式&#xff08;Singleton Pattern&#xff09;是一种设计模式&#xff0c;确保一个类只有一个实例&#xff0c;并提供一个全局访问点。常用于管理共享资源&#xff08;如数据库连接、配置文件、线程池等&#xff09;。在实际编码中&#xff0c;有多种实现单例模式的方法&…

webpack介绍使用

介绍 因为不确定打出的前端包所访问的后端IP&#xff0c;需要对项目中IP配置文件单独拿出来&#xff0c;方便运维部署的时候对IP做修改。 因此&#xff0c;需要用webpack单独打包指定文件。 CommonsChunkPlugin module.exports {entry: {app: APP_FILE // 入口文件},outpu…