当前位置:首页 > 渗透测试 > 正文内容

Vulnhub靶场

admin2周前 (10-07)渗透测试49

1.Vulnhub靶场概述

VulnHub是一个提供各类故意设计存在漏洞的虚拟机镜像的靶场平台,用户可下载并在本地(如VMware、VirtualBox)运行,通过模拟真实渗透测试场景来练习漏洞挖掘与利用技能,涵盖Web渗透、提权、内网渗透等多种类型,适合网络安全初学者和从业者进行实战演练。

2.Vulnhub靶场之DC-1

DC-1 是 VulnHub 平台上专为渗透测试入门设计的经典靶机,运行着存在高危漏洞的 Drupal 7 CMS,目标是通过漏洞利用、数据库凭据提取和 SUID 提权获取全部 5 个 flag 并拿到 root 权限。

3.DC-1渗透思路

其核心攻击路径为:利用 Drupalgeddon2(CVE-2018-7600) 漏洞获取初始 shell,从 settings.php 中提取数据库凭据,登录 Drupal 后台获取 flag 提示,最终利用具有 SUID 权限的 find 命令提权至 root。

4.渗透步骤

  • 信息收集:扫描目标主机端口与服务,发现 80 端口运行 Drupal 7,识别其版本存在已知漏洞。

  • 漏洞利用:利用 Drupalgeddon2 远程代码执行漏洞获取初始 shell,从配置文件 settings.php 中提取数据库账号密码。

  • 本地信息收集与凭据获取:登录 Drupal 后台或查询数据库,获取 flag1 提示及管理员账号信息,进一步拿到 flag2、flag3。

  • 提权与夺旗:利用 SUID 权限的 find 命令提权至 root,读取 flag4 并最终获取 root 目录下的最终 flag,完成靶机渗透。

4.1 信息收集

在vmware中搭建kali系统,并且下载vulnhub实验室的DC-1的虚拟机OVA镜像,导入vmware中。修改网卡类型为nat类型。启动kali系统和DC-1系统。由于我们并不知道该系统的账户和密码,因此无法获取该系统的IP地址信息,因此需要通过kali系统进行arp扫描来获取系统IP地址信息。

arp-scan -l

图片.png

根据扫描结果,我们可以确定靶机的IP地址是172.16.1.20.既然已经知道了靶机地址,我们使用nmap进行端口探测。

   nmap -A -sV -p- 172.16.1.20

图片.png

根据扫描结果,我们获取了到了该靶机开启的相关端口信息,其中开启了80端口和以及111/39836端口,其他端口我们无法判断具体的应用,但是80端口是http的默认端口,由此判断该靶机一定运行着一款http的web应用,我们访问80端口。

图片.png

根据访问结果显示,该系统部署了Drupal框架应用,我们尝试使用admin账号登录,发现登录失败,我们可以使用kali系统自带的whatweb工具对其进行扫描,探测该靶机Drupal框架版本,进一步获取相关信息。

whatweb -v http://172.16.1.20

图片.png


图片.png


根据扫描结果,我们获取了相当理想的信息,首先获取该靶机部署了apache的中间件,版本号2.2.22,获取了Drupal的版本是V7。我们根据获取的信息进行汇总下一步的渗透思路。

我们利用MSF渗透模块进行Drupal的漏洞扫描,看看Drupal版本7在历史上曾经有哪些漏洞。

msf > search drupal

图片.png


图片.png


图片.png图片.png

我们发现有很多的历史漏洞,但是为了能够尽快渗透,获取flag,我们选择最新的漏洞进行渗透,也就是2018-03-28的历史漏洞进行渗透。

4.2 漏洞利用

我们进入该漏洞模块,命令如下:

msf > use 1

这里可以使用use 1,意思是进入查询到的第2个ID,我们还可以使用其他命令进入,命令如下:

use exploit/unix/webapp/drupal_drupalgeddon2

首先进入该漏洞利用模块,我们查询该模块使用的具体参数。

图片.png

在这里我们发现了很对参数,其实我们使用的最重要就是RHOST参数,该参数是靶机的IP地址,我们需进行设置,其中80端口,模块已经为我们自动设置,我们不需要设置。

set RHOST 172.16.1.20

图片.png

设置成功,类似于上图所示,然后我们使用run命令或者exploit进行渗透。

图片.png

当出现上图所示时,我们已经监听到了靶机的内部,我们可以看到已经建立并且打开了一个session会话,我们的kali系统的4444端口正在监听靶机的56839端口,我们使用pwd可以看到我们所处的靶机目录。

图片.png

我们可以看到我们进入了靶机的/var/www目录。但是这样只能运行MSF模块下面的命令,非常的不方便,由于web应用利用反向shell进入是没有bash的,那么我们可以使用python命令为靶机建立一个伪shell进行,具体命令如下:

我们直接敲击shell,会进入如下图所示的界面:

图片.png

但是我们发现是没有任何提示符或者其他的符号的,那么我们可以之间在这里进行敲python命令,如果敲错了,可以按住ctrl+back键进行退格,这里我敲击如下命令:

python -c 'import pty;pty.spawn("/bin/bash")'

图片.png

这样我们就进入了靶机的shell下面,但是由于该shell依然是伪shell,因此是没有像Linux系统下面那样敲击命令或者补全命令的。现在我们使用ls查看该目录下面的文件信息来进一步获取第一个flag信息。

图片.png

我们发现了flag1.txt文件,我们查看该文件内容,从而确定下一步的渗透思路和方法。

图片.png

我们发现给了我们一个小提示:一个好的CMS需要有一个好的配置文件,你也一样。既然提到了配置文件,那么我们不防看看配置文件里面又有什么样的惊喜呢!继续一下步。

首先我们需要知道配置文件的存放位置,这个我们可以在互联网进行搜索关于Drupal的配置文件存放位置。

图片.png

我们通过百度查询,发现drupal的配置文件默认存放在sites/default/settings.php这个文件,我们根据采集的信息发现在靶机的/var/www/x下面有sites目录,我们进入这个目录查看配置文件。

图片.png


图片.png

我们这次的发现可谓是收获满满,不仅获取了flag2的提示信息,我们还额外获取了数据库的登录密码和账号,我们对其账号和密码进行记录,后期能够使用到。

数据库名称:drupaldb  数据库账号:dbuser   数据库密码:R0ck3t

我们等了数据库,看看内容,在确定下一步怎么走。

图片.png

我们在数据库里面发现了一个users的表,因此判断web后台的登录密码和账号一定是在这个表中,我们查询该表,获取admin对应的密码。

图片.png

我们查询了数据表,但是开起来有点乱,我们发现有三列是我们最需要的,分别是uid,name,pass,我们单独查询这三列的信息,如下:

图片.png

我们发现了admin账号对应的密码是加密的,我们有很多方法可以进行暴力破解,但是为了方便和节省时间,我们查询是不是存在密码重置的脚本,一般的web应用框架都是有密码重置脚本,一般是存在scripts这样的目录下,我们查看是否存在这样的脚本目录。

图片.png

我们发现了一个名叫scripts的目录,我们进入该目录,ls查看文件。

图片.png

我们发现了一个password-hash的脚本,从命名看应该生成密码hash的脚本,我们查看内容,看看其使用方法。

图片.png

我们发现它使可以被php进行利用,那么我们就使用php带脚本进行密码hash的生成。

图片.png

我们将123456的hash生成为了密码的hash,使用方法告诉我们可以手动将该hash输入到sql中进行密码重置,那么我们进行mysql中admin密码的hash替换。

图片.png

我们已经对admin的hash替换成功,现在我们在web界面进行后台登录,查看下一步的渗透思路信息。

图片.png

我们使用替换的密码已经登录到了web后台,我浏览发现了flag3的信息。根据flag3的提示,我们将进行下一步提权。

图片.png


图片.png

通过flag3的提示,其中提到了find以及Passwd和shadow等信息,因此我们判断应该是通过某个二进制来进行提权获取权限,我们进行下一步,查看有哪些用户具有root的执行权限。

图片.png

我们发现了flag4的账号,但是我们需要root权限,在flag3里面提到了find,find作为文件查询,是具有root的运行权限,我们先查看是否有find的二进制文件。

图片.png

我们通过查询,发现具有SUID的二进制可执行文件有find,那么我们通过find进行提权。

 find  / -name index.php -exec  "/bin/sh" \;

其中index.php文件存不存在都不是很重要,因为们需要的是进入/bin/sh目录调用外部命令,关于find提取的原因是该系统被错误的为find配置了suid权限,具体的以后我们细讲,这里不做过多解释,我们现在已经通过以上命令获取了root权限。

图片.png

我们现在可以查看root下面的文件有哪些,最终的flag是不是在root下面。

图片.png

我们发现root目录下的thefindalflag.txt就是最终的flag,我利用cat获取内容。

图片.png

我们现在获取了flag1、flag2、flag3,以及thefinalflag的内容,但是还有一个flag4没有获取,我们可以使用find命令查看该flag的文件在那个目录下。

图片.png

我们发现在flag4在/home/flag4/下面。我们读取该flag的值即可。

图片.png

至此吗,我们对vulnhub实验室的DC-1的系统渗透就到此结束了,我们获取了5个flag的值。

下一篇,我们进行第二关,DC-2的渗透实验。

返回列表

没有更早的文章了...

下一篇:vulnhub-DC-2渗透教程

相关文章

vulnhub-DC-2渗透教程

vulnhub-DC-2渗透教程

引言DC-2 是一个面向初学者的 WordPress 渗透靶场,整个攻击链覆盖信息收集 → 字典生成 → 凭据爆破 → 横向移动 → 权限提升五个阶段。本教程侧重渗透思路的演进,对每一步"为...