网络靶场中常见数据库漏洞的复现与设计

 2022-05-12 08:05

论文总字数:23372字

摘 要

随着互联网和安全技术的快速发展,网络安全问题已经与人们的生活息息相关。作为非常重要的存储工具,数据库往往会存储大量的有价值的甚至是很私密的信息,数据库漏洞则是数据库被入侵的最常见的方式。随着国产数据库的迅猛发展,市场应用的不断增加,数据库漏洞问题也不断被发现并日益增多。

本文旨在研究如何复现与设计网络靶场中常见数据库的漏洞,全文主要介绍了以下内容和工作:首先本文阐述了Docker容器虚拟化技术、MySQL数据库、LAMP环境和HTML的原理以及与同类产品相比较的优势;然后阐述了弱密码、SQL注入漏洞、拒绝服务漏洞、权限提权漏洞、通过数据库获取webshell漏洞的原理、真实案例以及防范方法;最后研究了对弱密码、SQL注入、SQL盲注漏洞的复现以及对常见数据库漏洞的设计,在具有漏洞的数据库中埋入flag并制作docker镜像。

关键词:数据库漏洞,Docker,漏洞攻击,MySQL。

ABSTRACT

With the rapid development of the Internet and security technologies, network security issues have become closely related to people's lives.As a very important storage tool, databases tend to store a large amount of valuable and even very private information. Database vulnerabilities are the most common way for databases to be compromised.With the rapid development of domestic databases, market applications continue to increase and database vulnerabilities are constantly being discovered and increasing.

This dissertation aims to study how to reproduce and design vulnerabilities in common databases in network shooting ranges.The full text mainly introduces the following content and work::Firstly, this dissertation explains the principles of Docker container virtualization technology, MySQL database, LAMP environment and HTML, and the advantages compared with similar products. Then,the principle, real cases and prevention methods of weak passwords, SQL injection vulnerabilities, denial of service vulnerabilities, privilege escalation vulnerabilities and obtaining webshell vulnerabilities through the database are described. Finally, this dissertation replicates weak passwords, SQL injections,and SQL blind injections, designs common database vulnerabilities, embedding flags in vulnerable databases and makes docker images.

Keywords:database vulnerabilities, Docker, vulnerability attack,MySQL.

目录

第一章 绪论 1

1.1研究背景和意义 1

1.2研究现状 2

1.2.1国内相关研究 2

1.2.2国外相关研究 2

1.3本文的组织结构 4

第二章 相关技术研究 5

2.1Docker容器虚拟化技术 5

2.2 MySQL数据库 7

2.3LAMP架构 8

2.4 HTML 8

2.5 本章小结 9

第三章 常见的数据库漏洞 10

3.1登录密码获取漏洞 10

3.2SQL注入漏洞 11

3.3拒绝服务漏洞 12

3.4权限提权漏洞 12

3.5通过数据库获取webshell漏洞 12

3.6本章小结 13

第四章 数据库漏洞的复现和设计 14

4.1数据库漏洞的复现 14

4.1.1SQL注入 14

4.1.2弱密码 16

4.1.3SQL盲注 17

4.2数据库漏洞的设计 18

4.2.1随机flag 18

4.2.2PHP登录网页 20

4.2.3Docker镜像的制作 20

4.3 本章总结 21

第五章 总结与展望 22

5.1工作总结 22

5.2不足与展望 22

致 谢 25

第一章 绪论

1.1研究背景和意义

21世纪以来,随着互联网和信息技术的高速发展,网络安全问题已经与人们的生活息息相关。网络安全问题不仅仅是社会关注的焦点,同时也对国家安全有着重大战略意义。近两年来,国内很多高校都相继开设了网络空间安全专业。

数据库是信息系统中非常重要的一个方面,它可以进一步处理数据。数据库可以组织数据,避免重复数据。通俗点来说,数据库就是将大量的数据集合起来,并将它们以系统的方式存储在计算机当中。当用户需要某些数据时,就可以直接在计算机中进行搜索,作为十分重要以及常用的存储工具,数据库会存储大量的有价值的甚至是很私密的消息,这些信息涵盖了医疗保健、企业资料、金融数据等等各个方面的内容。因此,数据库通常是黑客们的重点攻击对象。

而漏洞是指一个系统中存在着可以被攻击者利用的缺陷或弱点。它可能是某软件在设计时,由于受开发人员的水平或技术的局限性的影响就存在的,也可能是在交互处理中由于不合理的操作而产生的。当然,作为基础软件的数据库产品也存在着漏洞。数据库漏洞是数据库被入侵的最常见的方式。随着国产数据库的迅猛发展,市场应用的不断增加,数据库漏洞问题也不断被发现并日益增多。

常见的数据库漏洞有弱密码,SQL注入漏洞,缓冲区溢出,敏感数据未加密,权限提升漏洞,拒绝服务漏洞,通过数据库获取webshell漏洞,数据库未打补丁等等。黑客们想尽一切办法去发现数据库漏洞并对数据库漏洞发起攻击,他们不仅仅执着于寻找新的数据库漏洞,也有很多黑客在已经发现的数据库漏洞的基础上重复前人的老办法继续攻击,因为在全球各地,同样老旧的数据库漏洞一直存在,并没有因为有人发现就此消失。因此,保护网络免受频繁的网络攻击是当下面临的一个主要问题。OWASP(Open Web Application Security Project)组织发布的《OWASP Top 10》报告显示,注入漏洞位列前茅,其中,SQL注入漏洞具体又可以分为数字型SQL注入漏洞、字符型SQL注入漏洞以及SQL时间盲注等等。而本文中涉及的其他漏洞,诸如权限提权漏洞、获取webshell漏洞、拒绝服务漏洞以及登录密码获取漏洞也不容忽视。

在网络靶场中对常见的数据库漏洞进行复现与设计,熟练了解漏洞的原理和成因是非常有必要的。传统的靶机搭建方法是虚拟机技术,在硬件虚拟化的基础之上,依赖软件来模拟硬件功能并创建虚拟计算机系统。虚拟机技术在许多方面上都有着不足之处,例如过于缓慢的启动速度、占用硬盘空间过大等等。而本文中使用的docker技术作为开源的应用容器引擎,不仅是轻量级的,性能开销极低,而且拥有着更高效的利用系统资源、更轻松的迁移、维护和扩展、拥有更快的启动时间,具有一致的运行环境以及它能够持续交付和部署等优点。

1.2研究现状

1.2.1国内相关研究

杨刚[1]等人在安卓漏洞数据库上做出了卓越的贡献,他们通过各种途径搜集了已经公布的安卓漏洞数据,并且结合目前已有的漏洞分析技术,完善了安卓漏洞库。这个漏洞库不仅对现有的信息进行了整合,还总结了安卓平台上的漏洞问题的发展规律,为安卓系统的安全发展提供了巨大的保护。石坤泉[2]等人则聚焦在MySQL数据库的安全体系结构上,他们从多个维度,例如密码学和安全协议上分析了结构以及比较了本地 MySQL/SSL 与外部 SSH 通道的安全应用,此外,他们还比较了 HASH 认证与 DSA/RSA 公钥认证方式。

此外,作为常年居于《OWASP Top 10》榜首的SQL注入漏洞也是研究者们格外关注的话题,文献[3]中,作者就给出了SQL注入攻击的检测方法,并且结合自己研究工作,展示了一种自动防范模型。文献[4]则是在研究多种注入攻击技术的原理后,设计了一套SQL注入攻击系统PHPSI,这套系统是基于PHP语言的,作者还对已有的SQL注入防范手段做了一定的改进,提出了几种相对有效的防范技术与理论模型:基于编码的防范技术、独立于Web服务器的注入攻击防范模型和基于状态集的动态注入攻击防范模型。在针对现有的通用静态分析工具大多无法有效检测Android应用中的SQL注入漏洞的问题上,潘秋红[5]等人分析了SQL注入漏洞的代码特征和数据特征,提出了一种基于污点分析的静态检测方法,并在开源工具FindBugs的基础上,实现了原型工具SQLInj。在文献[6]中,作者提出了一种工作在HTTP应用层,在对后台程序一无所知的情况下,仅仅通过分析用户输入就能检测到潜在威胁的SQL注入检测技术。

作为《OWASP Top 10》榜上的另一个威胁,跨站脚本攻击也不容忽视。攻击者通过创建应用程序的输入来访问或修改用户数据并执行恶意代码的方式进行攻击。此外,张慧琳[7]等人在分析XSS的特性之后,提出了基于分隔符的XSS的防御方法,这种方法不仅适用于UTF-8编码的Web应用程序,还可以对可信数据中的分隔符进行积极污点标记,然后这个信息就可以直接传到结果页面,开发人员可以通过信息来进行分析结果的可靠性和合法性从而检测病房与XSS。

1.2.2国外相关研究

当代,在线服务不可或缺,但是随之而来的便有已经成为互联网恶性肿瘤的恶意网站。通过系统漏洞,攻击者可以将恶意文件(也称为webshells)上传到Web服务器,为黑客的进一步攻击创建后门。因此,在Web应用程序源代码中查找和检测webshell对于保护网站至关重要。在文献[8]中,作者们提出了一种基于最佳阈值的新方法来识别包含来自Web应用程序的恶意代码的文件。他们的检测系统将扫描并查找Web应用程序的每个文件中的恶意代码,并自动提供可疑文件列表和每个可疑文件的详细日志分析表,供管理员进一步检查。

SQL注入漏洞是Web应用程序安全漏洞之一,其中的SQL语句被攻击者更改,攻击者由Web应用程序执行并提交给数据库服务器。简单点来说,SQL注入就是攻击者在地址栏或在输入框中输入合适的SQL查询语句,由于存在没有过滤或者过滤不严的情况,导致没有执行设计者预期的语句,而是泄露了数据库中的重要信息。在文献[9]中,作者提出了一种方法,通过在Web应用程序中注入漏洞,然后使用分布式漏洞和攻击检测工具(DVADT)来评估安全机制。在文献[10]中,作者介绍了一种用于创建公开SQL注入漏洞输入的自动技术。这种技术生成样本输入,跟踪污点并改变输入来产生具体的漏洞。这种技术的优点主要有:几乎没有误报;不会为部署的应用程序带来运行时的开销;不需要修改应用程序代码就可以工作。SQL注入攻击可以说是最危险的网络攻击之一,因此检测SQL注入漏洞就需要开发一个功能很强大的工具。而文献[11]讨论了一个新的Web扫描工具的开发,这种工具能够在PHP的网站上进行有效的渗透测试,从而检测SQL注入漏洞。这种工具的主要优点就是将渗透测试过程自动化,即使是不熟悉黑客技术的人,也可以轻松使用这种工具。文献[12]在前人提出的静态属性是SQL注入夫人重要预测因子的基础下,提出了使用动态属性来补充漏洞预测中的静态属性的建议。作者们提出了基于分类和聚类的预测模型,以便分别在存在或不存在标记的训练数据的情况下预测脆弱性。通过实验,他们发现与基于静态分析的预测相比,基于混合属性的新监督漏洞预测其召回率大幅提高。

跨站脚本(XSS)攻击也是《OWASP Top 10》中的重要安全漏洞,攻击者创建应用程序的输入来访问或修改用户数据并执行恶意代码。更严重的是,攻击者可以通过破坏数据库来导致后续用户执行恶意代码。文献[10]中,作者介绍了一种用于创建公开跨站脚本漏洞输入的自动技术。他们在ARDILLA工具中实现了PHP技术,并在五个PHP应用程序上评估了ARDILLA,发现了68个以前未知的漏洞,其中包括33个一阶XSS和12个二阶XSS。在文献[13]中,作者提出基于混合(静态和动态)属性的新的监督漏洞的预测器,并通过实验表明,与基于静态分析的预测相比,这种方法的召回率大幅提高。

除了SQL注入攻击,拒绝服务(DOS)攻击也是Web应用程序中重要的安全线程。拒绝服务攻击使网络资源对其目标用户不可用。Bhor[9]等人提出了通过在Web应用程序中注入漏洞,然后使用分布式漏洞和攻击检测工具来评估安全机制的方法。

攻击者利用数据库驱动的应用程序中的漏洞来制作注入攻击,包括SQL注入,XQuery和XPath注入。在识别SQL注入漏洞方面已经做了大量工作,但是,到目前为止,已经完成的识别XML注入漏洞的工作非常有限。因此,在文献[14]中提出了一种黑盒模糊方法,用于检测由本机XML数据库驱动的Web应用程序中的不同类型的XQuery注入漏洞。

综合以上内容,在当下的网络环境中,数据库漏洞十分重要,在复现和设计数据库漏洞的过程中,学习常见数据库漏洞的原理以及成因是在搭建的环境中进行漏洞攻击的基础。

1.3本文的组织结构

本文主要通过研究常见数据库漏洞的原理以及成因后,复现和设计出具有常见数据库漏洞的数据库。本文涉及的数据库漏洞是弱密码漏洞和数字型、字符型、基于时间的盲注等类型SQL注入漏洞,拒绝服务漏洞、权限提权漏洞、通过数据库获取webshell的漏洞。每章的主要内容安排如下:

第一章为绪论。该章首先阐述了网络靶场中常见数据库漏洞的复现与设计的研究背景和意义,然后阐述了诸如SQL注入漏洞等常见数据库漏洞的研究现状,最后概述了本文的组织结构。

第二章为相关技术研究。该章首先阐述了Docker容器虚拟化技术的概念、结构、性能和制作镜像的步骤,接着阐述了MySQL数据库的定义以及优势,最后,阐述了LAMP(Linux Apache MariaDB/MySQL PHP/Perl/Python)环境和构造登录网页所需的HTML知识。

第三章为常见的数据库漏洞。该章阐述了登录密码获取漏洞、SQL注入漏洞、拒绝服务漏洞、权限提权漏洞、通过数据库获取webshell漏洞的定义以及原理,然后介绍了利用漏洞进行攻击的具体案例,并阐述了防范的方法。

第四章为常见数据库漏洞的复现和设计。该章首先介绍了对弱密码漏洞、SQL注入漏洞、SQL盲注复现的过程并对其进行测试,然后以设计具有数字型SQL注入漏洞的数据库为例,研究了设计过程中实现的设置随机密码并将其写入flag文件,构造连接具有数字型SQL注入漏洞的登录页面以及制作docker镜像。。

第五章为总结与展望。该章总结了整个毕业设计的工作,分析了工作中的不足,并提出了未来的改进与展望。

  1. 相关技术研究

本章阐述了在复现与设计网络靶场中常见数据库漏洞中所使用的相关技术知识,即Docker容器虚拟化技术、MySQL数据库、LAMP环境以及HTML知识,并分析了它们的原理和优点。

2.1Docker容器虚拟化技术

Docker是一个开源的应用容器引擎,自从服务提供商开放了项目的源码后,在这短短的不到六年的时间里,越来越多的组织使用Docker来构建部署应用和系统。Docker是允许开发人员将应用程序等打包到容器中的虚拟化实现的技术方法。

Docker是典型的C/S(客户端/服务器)的结构程序,由守护进程充当服务端的角色,接受来自客户端的命令来处理Docker镜像和Docker容器的生成与销毁关系。当启动Docker服务时,实际是启动最内层的Docker Daemon。Docker Daemon一般在宿主主机后台运行,等待接收CLI命令请求。例如,docker run命令的作用是以Docker镜像为模板运行Docker容器,而docker pull命令,则会命令守护进程与Registry镜像仓库注册服务器构建远程连接,来下载镜像到本地仓库中。

如图2.1所示,Docker中主要有以下组件:镜像(image)、容器(container)、网络(network)三大核心技术。镜像是Docker文件系统的基础,是一个多层结构,有着很强的层级依赖机制,它的上层必须依赖下层而存在。可以简单地认为镜像是静态的定义,而容器则是运行时的实例。不同于对象,容器在创建时以镜像为模板,在运行仍旧可以继续扩展,并反向生成镜像。Docker基础镜像(Base Images)就是一个只读的roofts文件系统,在其中包括了支持容器运行的一系列必要基础资源,例如/bin二进制命令,/etc配置文件等等。但是由于基础镜像缺乏灵活性,因此Docker镜像构建的方式充分利用了联合文件系统(Union FS)的概念,使用多层次的结构来搭建镜像,镜像与镜像之间可以相互叠加。

图2.1 Docker 应用容器的主要组件。

Docker Hub是目前最权威、最庞大的官方镜像仓库。用户可以下载仓库中共享的镜像资源,也可以上传共享自己构建的镜像。容器是包含了Docker的镜像、执行环境以及一套标准的指令的基于镜像运行的轻量级环境。容器启动的过程为首先检测镜像是否存在于本地,如果不存在,那么到Docker Hub中下载远程仓库镜像;如果存在,就创建容器实例,接着分配文件系统、配置网络,然后执行应用程序,最后执行结束后容器停止。Docker在容器启动时会为其创建可写的writeable层,并逐级向下读取其依赖的父镜像直到最底层的Base Image。将层层叠加的各个镜像元件视为一个整体镜像的话,容器就是在镜像模板的基础之上附加了可供用户动态改变镜像的静态文件系统的接口——可写层。容器网络模型将Docker网络分为网络沙盒、端点、网络三个模块。

在docker中制作镜像有以下三种方法:使用Dockerfile、docker commit以及docker import。其中,利用docker commit命令制作镜像可能会导致一段时间后,甚至连镜像制作者也忘记制作镜像的具体操作,而通过创建Dockerfile文件来制作镜像是开发人员最经常使用的方式。Dockerfile包含多种类别的指令,指令根据功能主要分为五大类,分别是:基础指令FROM、MAINTAINER;控制指令RUN、WORKDIR、ONBUILD;引入指令ADD、COPY;执行指令CMD、ENTRYPOINT以及配置指令EXPOSE、ENV、LABEL、USER、ARG、STOPSIGNAL、SHELL等。具体的指令以及指令的作用见表2.1。使用Dockerfile文件制作镜像的过程中,首先必须选用FROM指令,拉取作为底层的基础镜像,在使用RUN命令的过程中,可以使用“\”来进行换行,避免生成的镜像层数过多。

表2.1 Dockerfile文件中常用的指令以及指令说明。

指令

指令说明

FROM

指定基础镜像,必须为第一个命令

MAINTAINER

维护者信息

RUN

构建镜像时执行的命令

ADD

将本地文件添加到容器中

COPY

功能类似ADD

CMD

构建容器后调用,也就是在容器启动时才进行调用

ENTRYPOINT

配置容器,使其可执行化

ENV

设置环境变量

EXPOSE

指定于外界交互的端口

VOLUME

用于指定持久化目录

WORKDIR

工作目录

与传统的虚拟化方式相比,Docker虚拟化技术有众多的优点。例如,Docker容器具有轻量级虚拟化的特点,相互之间不会存在任何接口,容器的性能开销极低,此外,Docker还拥有更高效的利用系统资源、更轻松的迁移、维护和扩展、拥有更快的启动时间,具有一致的运行环境以及它能够持续交付和部署等优点。Docker拥有更快速的启动时间,是因为它的启动是直接运行在主机内核之上,因此可以做到秒级,毫秒级的启动时间,很大程度上为靶机环境的测试与部署提供了便利。Docker拥有一致的运行环境,是因为镜像在编写的时候能够保证提供除了Linux内核以外的全套运行环境,从而保证了在漏洞镜像生成的容器中运行环境的一致性,此外Docker对系统资源的利用率比其他同类产品更高。综合以上优点,因此本次设计选用Docker容器虚拟化技术并通过Dockerfile文件来制作镜像。

2.2 MySQL数据库

数据库是信息系统中非常重要的一个方面,它可以进一步处理数据。数据库可以组织数据,避免重复数据。通俗点来说,数据库就是将大量的数据集合起来,并将它们以系统的方式存储在计算机当中。当用户需要某些数据时,就可以直接在计算机中进行搜索,作为十分重要以及常用的存储工具,数据库会存储大量的有价值的甚至是很私密的消息,这些信息涵盖了医疗保健、企业资料、金融数据等等各个方面的内容。

用于管理和调用查询数据库的软件称为数据库管理系统(DBMS:database management system)。数据库管理系统允许有权限的用户创建新数据库并指定新数据的逻辑结构,使用适当的语言为用户提供查询数据和修改数据的能力,这种语言通常被称为查询语言或数据操作语言。此外,数据库管理系统还可以支持长时间以太字节或更多数量存储大量数据,从而可以高效地访问数据以进行查询和数据库修改。它具有启用持久性,面对故障、多种错误或者故意滥用可以恢复数据库。它还可以一次控制对来自许多用户的数据的访问,但是不允许用户之间的意外交互。常用的数据库管理系统有MySQL、SQL Server、Oracle和DB2等等。

MySQL数据库是最受欢迎的数据库管理系统。由数据表组成MySQL数据库是开源的,表的数量是任意的。一般情况下,拥有ROOT权限的用户可以创建和删除数据库的表,CREATE是创建一个新表,DROP是删除已经创建的表。CREATE TABLE命令使用的同时可以定义表的结构。与其他的DBMS相比,MySQL数据库拥有更快的速度和更高的灵活性,因为它是将数据分门别类的存储在不同的数据表中;此外,它使用的SQL语言是最常用的,又因为它的体积小、速度快、总体拥有成本低、开放源代码等优点,受到世界上很多开发人员的欢迎。综合以上的优点,在本次设计中选用的基本数据库就是MySQL数据库。

2.3LAMP架构

LAMP是Linux Apache MariaDB/MySQL PHP/Perl/Python一组英文首字母的缩写,主要功能是用来运行动态网页或者作为Web服务器。Linux作为常用的操作系统,在其内部安装了Web服务器Apache,此外,在本文研究中还安装了MySQL以及PHP。

Apache是目前使用量排名第一的Web服务器软件,具有支持跨平台、可靠性强、安全性高等特点,可以运行在主流操作系统上。当前,许多大型网站都使用Apache作为Web服务器,它作为网页服务器可以支持PHP脚本访问并且向用户提供动态网页。

MySQL是一个关系型数据库管理系统,具有源代码开放、结构简单、支持多平台操作、执行效率高等特点。也正是因为它众多的优点,在本次设计中选择它为基本的数据库。

PHP原来是Personal Home Page的缩写,指创建动态交互性站点的强有力的服务器端的脚本语言。PHP是负责逻辑处理的脚本语言。它是HTML内嵌式的语言,可以更加快捷的执行动态网页,执行效率也比诸如CGI之类的要高。此外,PHP还拥有如下优点:开源、免费、快捷、跨平台性强、效率高、可以动态创建图像等等,具有跨平台、执行效率高、可扩展性强等特点。PHP支持几乎所有流行的数据库和操作系统,因此成为全世界最广泛使用的Web开发语言之一。

总之,与Java/J2EE架构以及NET架构相比,由Apache、MySQL、PHP组成的LAMP架构设计具有低成本、开源,性能高等优点,因此,在本次设计中构建网站选用LAMP架构

2.4 HTML

剩余内容已隐藏,请支付后下载全文,论文总字数:23372字

您需要先支付 80元 才能查看全部内容!立即支付

该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;