计算机毕业设计-基于Python+Django架构的web漏洞挖掘技术实现与研究系统项目开发实战(附源码+论文)

大家好!我是职场程序猿,感谢您阅读本文,欢迎一键三连哦。

🎀 Python毕业设计

精彩专栏推荐👇🏻👇🏻👇🏻

💞当前专栏:Java毕业设计
🌎微信小程序毕业设计

开发环境

开发语言:Python
框架:django
Python版本:python3.7.7
数据库:mysql 5.7
数据库工具:Navicat11
开发软件:PyCharm
浏览器:谷歌浏览器

演示视频

web漏洞挖掘技术的研究(django)演示

源码下载地址:

https://download.csdn.net/download/m0_46388260/87891112

论文目录

【如需全文请按文末获取联系】
在这里插入图片描述

一、项目简介

本次技术通过利用Python技术来开发一款针对web漏洞挖掘扫描的技术,通过web漏洞的挖掘扫描来实现对网站URL的漏洞检测,通过高中低风险的判断来实现对一款网站中存在的漏洞进行可视化的分析,从而能够找到问题并且尽快的实现问题的解决。

二、系统设计

2.1软件功能模块设计

此次在漏洞挖掘技术的使用上,主要通过以四个部分来进行相应的内容组成,分别为信息采集、输入参数分析、缺陷检测、缺陷报告产生等来进行设计,其主要的整体设计图如下所示:
在这里插入图片描述
通过上图可以看出此次的系统设计需要通过三大部分来实现有效的功能设计实现,分别为爬虫、漏洞探测、SQL注入,通过这三个步骤之后在网页端形成报告的生成。
(1)爬虫模块是以主题爬虫为最为基础的内容设计,通过对URL的相关数据爬取来实现有效的信息的下载获取;
(2)缺陷探测过程中,通过对正常的URL、带有缺陷的URL等进行检测,将检测出的内容存储在数据库汇总。
(3)通过SQL注入来进行数据库的SQL语句的内容测试。

三、系统项目部分截图

3.1系统的首页面

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

3.2 web漏洞挖掘网站首页

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

3.3漏洞总览页面

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

3.4漏洞详情页面

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

四、部分核心代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

from .Base import Base


class Scan(Base):
    def __init__(self, api_base_url, api_key):
        super().__init__(api_base_url, api_key)

        self.profile_dict = {
            'full_scan': '11111111-1111-1111-1111-111111111111',
            'high_risk_vuln': '11111111-1111-1111-1111-111111111112',
            'xss_vuln': '11111111-1111-1111-1111-111111111116',
            'sqli_vuln': '11111111-1111-1111-1111-111111111113',
            'weak_passwords': '11111111-1111-1111-1111-111111111115',
            'crawl_only': '11111111-1111-1111-1111-111111111117'
        }

        #self.logger = self.get_logger

    def add(self, target_id, profile_key, report_template_id='', schedule=None, ui_session_id=''):
        """添加扫描任务

        Args:
            target_id (string): 目标ID
            profile_key (string): 扫秒类型
            schedule (None, optional): 扫秒时间,默认为即时扫描
            report_template_id (string, optional): 扫描报告模板ID
            ui_session_id (str, optional): Description

            schedule格式对照:
            1. 定时扫描,time senstive为False
            schedule = {disable: False, start_date: "20180816T000000+0700", time_sensitive: False}
            2. 定时扫描,time senstive为True
            schedule = {disable: False, start_date: "20180816T000000+0700", time_sensitive: True}
            3.周期扫描,每天
            schedule = {disable: false, recurrence: "DTSTART:20180815T170000Z FREQ=DAILY;INTERVAL=1", time_sensitive: false}
            4.周期扫描,每周
            schedule = {disable: false, recurrence: "DTSTART:20180815T170000Z FREQ=WEEKLY;INTERVAL=1", time_sensitive: false}
            5.周期扫描,每月
            schedule = {disable: false, recurrence: "DTSTART:20180815T170000Z FREQ=MONTHLY;INTERVAL=1", time_sensitive: false}
            6.周期扫描,每年
            schedule = {disable: false, recurrence: "DTSTART:20180815T170000Z FREQ=YEARLY;INTERVAL=1", time_sensitive: false}
            7.自定义
            修改FREQ和INTERVAL即可
            (1)无截止时间格式
            schedule = {disable: false, recurrence: "DTSTART:20180815T170000Z FREQ=YEARLY;INTERVAL=1", time_sensitive: false}
            (2)有截止时间
            schedule = {disable: false, recurrence: "DTSTART:20180815T170000Z FREQ=YEARLY;INTERVAL=1;UNTIL=20180830T170000Z", time_sensitive: false}
        """
        data = {
            'target_id': target_id,
            'profile_id': self.profile_dict.get(profile_key),
        }

        if report_template_id:
            data['report_template_id'] = self.report_template_dict.get(report_template_id)

        if not schedule:
            schedule = {
                'disable': False,
                'start_date': None,
                'time_sensitive': False
            }
        data['schedule'] = schedule
        try:
            response = requests.post(self.scan_api, json=data, headers=self.auth_headers, verify=False)
            # self.logger.error(data)
            status_code = 200
        except Exception:
            #self.logger.error('Add Scan Failed......', exc_info=True)
            status_code = 404
        return status_code

    def delete(self, scan_id):
        scan_delete_api = f'{self.scan_api}/{scan_id}'
        try:
            response = requests.delete(scan_delete_api, headers=self.auth_headers, verify=False)
        except Exception:
            pass
            #self.logger.error('Delete Scan Failed......', exc_info=True)

    def get_all(self):
        try:
            response = requests.get(self.scan_api, headers=self.auth_headers, verify=False)
            request_url = response.url
            scan_response = response.json().get('scans')
            scan_list = []
            for scan in scan_response:
                scan['request_url'] = request_url
                scan_list.append(scan)
        except Exception:
            scan_list = []
            #self.logger.error('Get All Scan Failed......\n【ERROR】Please start your AWVS server,Otherwise vulnerability scanning will be disabled!!!\n', exc_info=False)  # awvs未启动时,报错信息关闭exc_info=False

        return scan_list

    def get(self, scan_id):
        scan_get_api = f'{self.scan_api}/{scan_id}'
        try:
            response = requests.get(scan_get_api, headers=self.auth_headers, verify=False)
            return response.json()
        except Exception:
            #self.logger.error('Get Scan Failed......', exc_info=True)
            return None

    def get_vulns(self, scan_id, scan_session_id):
        scan_result_api = f'{self.scan_api}/{scan_id}/results/{scan_session_id}/vulnerabilities'
        try:
            response = requests.get(scan_result_api, headers=self.auth_headers, verify=False)
            vuln_list = response.json().get('vulnerabilities')
            return vuln_list
        except Exception:
            #self.logger.error('Get Scan Result Failed......', exc_info=True)
            vuln_list = []
            return None

    def get_vuln_detail(self, scan_id, scan_session_id, vuln_id):
        scan_vuln_detail_api = f'{self.scan_api}/{scan_id}/results/{scan_session_id}/vulnerabilities/{vuln_id}'
        try:
            response = requests.get(scan_vuln_detail_api, headers=self.auth_headers, verify=False)
            vuln_detail = response.json()
            return vuln_detail
        except Exception:
            #self.logger.error('Get Scan Result Failed......', exc_info=True)
            return None

获取源码或论文

如需对应的论文或源码,以及其他定制需求,也可以下方微信联系我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值