一、实验目的
SQL 注入是一种代码注入技术,可利用 Web 应用程序和数据库服务器之间接口中的漏洞。当用户的输入在发送到后端数据库服务器之前未在 Web 应用程序中正确检查时,该漏洞就存在。
许多 Web 应用程序从用户处获取输入,然后使用这些输入构建 SQL 查询,以便从数据库获取信息。Web 应用程序还使用 SQL 查询将信息存储在数据库中。这些都是开发 Web 应用程序的常见做法。当 SQL 查询没有仔细构建时,可能会出现 SQL 注入漏洞。SQL 注入是 Web 应用程序上最常见的攻击之一。
在此次实验中,我们创建了一个易受 SQL 注入攻击的 Web 应用程序。我们的 Web 应用程序包括许多Web开发人员所犯的常见错误。我们实验的目标是找到利用 SQL 注入漏洞的方法,演示攻击可能造成的损害,并掌握有助于抵御此类攻击的技术。
本实验涵盖以下几个内容:SQL 语句:SELECT 和UPDATE 语句;SQL 注入;Prepared statement
二、实验环境
该实验已在SEED Ubuntu 20.04 VM上进行了测试。您可以从 SEED 网站下载VM影像,并在自己的计算机上运行 SEED VM。此外,大多数 SEED 实验都可以在云上进行,您也可以按照我们的指示在云上创建SEED VM。
-
实验设置文件
可以根据一下路径引导,在对应的网站下载安装相对应的数据压缩包,或者在我们自己的虚拟机中输入路径下载该文件,两种方式在后续都会展示。
作者网站下载:
首先进入链接SEED Project:
展示如下:
此时我们点击页面展示中的labsetup.zip即可下载此次实验需要的安装包。
此外我们可以直接在虚拟机中下载解压该文件,操作如下:
首先在虚拟机中进入此次实验的文件路径,才相应的文件夹下,输入命令
$ wget https://seedsecuritylabs.org/Labs_20.04/Files/Web_SQL_injection/Labsetup.zip
--no-check-certificate。正常运行通过后,即下载完成,而后在该目录下进行解压缩即可。解压缩之后,我们通过相对应的容器命令对容器进行设置。容器的设置及命令如下所述。
容器设置和命令
在下面,我们列出了一些常用的Docker和Compose命令写。由于我们将非常频繁地使用这些命令,所以我们在.bashrc 文件中为他们创建了别名。
$ docker-compose build # Build the container image
$ docker-compose up # Start the container
$ docker-compose down # Shut down the container
// Aliases for the Compose commands above
$ dcbuild # Alias for: docker-compose build
$ dcup # Alias for: docker-compose up
$ dcdown # Alias for: docker-compose down
所有的容器都将在后台运行。要在容器上运行命令,我们通常需要在容器上获得一个shell。我们首先需要使用“docker ps”命令来找出容器的 ID,然后使用“ docker exec “在该容器上启动shell。同样。我们在 .bashrc文件中为这些命令创建了别名。
$ dockps %%//%% Alias for: docker ps --format "{ {.ID}} { {.Names}}"
$ docksh %%//%% Alias for: docker exec -it /bin/bash
// The following example shows how to get a shell inside hostC
注意:如果docker命令需要容器 ID,则不需要键入整个 ID 字符串。输入前几个字符就足够了,只要它们在所有容器中能够相互区分。通过以上命令,我们首先对容器进行创建:
$dcbuild 运行结果如下:
而后我们对容器进行启动:
$dcup 运行结果如下:
至此,我们的docker容器已经创建并且成功启动,其中包含了此次实验所需要的数据库的加载和生成相关信息。
同时,我们根据压缩文件中的相关信息可以知道,我们已经为这个实验开发了一个网络应用程序,并使用容器来设置这个网络应用程序。实验设置中有两个容器,一个用于托管 Web 应用程序,另一个用于托管 Web 应用程序依赖的数据库。Web 应用程序容器的 IP 地址为 10.9.0.5,Web应用程序的 URL 如下:
我们需要将此主机名映射到容器的IP地址。请将以下条目添加到 /etc/hosts 文件中。您需要使用root特权来更改此文件(使用sudo)。需要注意的是,由于其他一些实验,此名称可能已添加到文件中。如果映射到不同的 IP 地址,则必须删除旧条目。
10.9.0.5 www.seed-server.com
最后一行中我们添加上我们需要的映射即可