Web Hacking Playground本地渗透测试平台插图

在真实案例中发现漏洞的 Web 应用程序,包括渗透测试和漏洞赏金计划

Web Hacking Playground 是一个受控的网络黑客环境。它包含在真实案例中发现的漏洞,包括渗透测试和漏洞赏金计划。目标是用户可以与它们一起练习,并学习检测和利用它们。

其他感兴趣的主题也将得到解决,例如:通过创建自定义有效负载来绕过过滤器、利用各种漏洞执行链式攻击、开发概念验证脚本等。

提示

本身应用程序源代码是开源的。然而,该实验室的方法是一种黑匣子方法。因此,不应通过审查代码来解决挑战。

此外,应该注意的是,模糊测试(参数和目录)和暴力攻击在本实验中没有任何优势。

Web Hacking Playground本地渗透测试平台插图1

设置

建议使用Kali Linux来执行此实验。如果使用虚拟机,建议使用VMware Workstation Player管理程序。

环境是基于Docker和Docker Compose的,所以两个都要安装。

要在 Kali Linux 上安装 Docker,请运行以下命令:

sudo apt update -y
sudo apt install -y docker.io
sudo systemctl enable docker --now
sudo usermod -aG docker $USER

要在其他基于 Debian 的发行版上安装 Docker,请运行以下命令:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo systemctl enable docker --now
sudo usermod -aG docker $USER

建议注销并重新登录,这样用户就被识别为属于 docker 组。

要安装 Docker Compose,请运行以下命令:

sudo apt install -y docker-compose

注意:如果使用 M1,建议在构建图像之前执行以下命令:

export DOCKER_DEFAULT_PLATFORM=linux/amd64

下一步是克隆存储库并构建 Docker 镜像:

git clone https://github.com/takito1812/web-hacking-playground.git
cd web-hacking-playground
docker-compose build

此外,建议安装Foxy Proxy浏览器扩展,它允许您轻松更改代理设置,以及Burp Suite,我们将使用它来拦截 HTTP 请求。

我们将在 Foxy Proxy 中创建一个新的配置文件,以使用 Burp Suite 作为代理。为此,我们转到 Foxy Proxy 选项,并添加具有以下配置的代理:

  • 代理类型: HTTP
  • 代理IP地址: 127.0.0.1
  • 端口: 8080

部署

安装所需的一切后,您可以使用以下命令部署环境:

git clone https://github.com/takito1812/web-hacking-playground.git
cd web-hacking-playground
docker-compose up -d

这将在端口 80 上创建两个在 Flask 中开发的应用程序容器:

  • 易受攻击的 Web 应用程序(社交):模拟社交网络。
  • 漏洞利用服务器:你不应该尝试破解它,因为它没有任何漏洞。其目的是模拟受害者访问恶意链接。

重要的

有必要将容器的 IP 添加到 /etc/hosts 文件中,以便可以通过名称访问它们,并且漏洞利用服务器可以与易受攻击的 Web 应用程序通信。为此,请运行以下命令:

sudo sed -i '/whp-/d' /etc/hosts
echo "$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' whp-socially) whp-socially" | sudo tee -a /etc/hosts
echo "$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' whp-exploitserver) whp-exploitserver" | sudo tee -a /etc/hosts

完成后,可以从「http://whp-socially」访问易受攻击的应用程序,从 「http://whp-exploitserver」 访问漏洞利用服务器。

使用漏洞利用服务器时,必须使用上述 URL,使用域名而不是 IP。这确保了容器之间的正确通信。

当涉及到黑客攻击时,为了代表攻击者的服务器,必须使用本地 Docker IP,因为实验室不打算向外部服务器(如 Burp Collaborator、Interactsh 等)发出请求。可以使用 Python http.server 来模拟 Web 服务器并接收 HTTP 交互。为此,请运行以下命令:

sudo python3 -m http.server 80

阶段

环境分为三个阶段,每个阶段都有不同的漏洞。重要的是按顺序完成它们,因为后续阶段的漏洞建立在前面阶段的漏洞之上。这些阶段是:

  • 第 1 阶段:使用任何用户访问
  • 第 2 阶段:以管理员身份访问
  • 第 3 阶段:读取 /flag 文件

重要信息

以下是每个阶段漏洞的剧透。如果您不需要帮助,可以跳过此部分。另一方面,如果您不知道从哪里开始,或者想检查您是否在正确的轨道上,您可以扩展您感兴趣的部分。

第 1 阶段:使用任何用户访问

在此阶段,可以通过跨站点脚本 (XSS) 窃取特定用户的会话,从而允许执行 JavaScript 代码。为此,受害者必须能够访问用户上下文中的 URL,可以使用漏洞利用服务器模拟此行为。

解决这个阶段的提示是:

  • 主页上有什么引人注目的帖子吗?
  • 您必须链接两个漏洞才能窃取会话。XSS 是通过利用Open Redirect漏洞实现的,受害者被重定向到外部 URL。
  • Open Redirect 有一些安全限制。你必须找到绕过它们的方法。分析 URL 中不允许出现哪些字符串。
  • Cookie 不是唯一存储会话信息的地方。查看应用程序中包含的 JavaScript 文件的源代码可以帮助消除疑虑。

第 2 阶段:以管理员身份访问

在此阶段,可以生成允许以管理员身份访问的令牌。这是典型的 JSON Web 令牌 (JWT) 攻击,可以修改令牌负载以提升权限。

解决这个阶段的提示是,有一个端点,给定一个 JWT,返回一个有效的会话 cookie。

第 3 阶段:读取 /flag 文件

在此阶段,可以通过服务器站点模板注入 (SSTI) 漏洞读取 /flag 文件。为此,您必须让应用程序在服务器上运行 Python 代码。可以在服务器上执行系统命令。

解决这个阶段的提示是:

  • 易受攻击的功能受双因素身份验证保护。因此,在利用 SSTI 之前,必须找到绕过 OTP 代码请求的方法。有时应用程序信任来自同一服务器的请求,而 HTTP 标头在这种情况下起着重要作用。
  • SSTI是Blind的,这意味着不直接获取在服务器上执行的代码的输出。Python smtpd 模块允许您创建一个 SMTP 服务器,该服务器将接收到的消息打印到标准输出:sudo python3 -m smtpd -n -c DebuggingServer 0.0.0.0:25
  • 应用使用的是Flask,所以可以推断模板引擎是Jinja2,因为它是Flask官方文档推荐的,使用比较广泛。您必须获得 Jinja2 兼容的有效负载才能获得最终标志。
  • 电子邮件消息有字符限制。可以在 Internet 上找到有关如何绕过此限制的信息。