渗透测试综合靶场 DC-2 通关详解

一、准备阶段

准备工具如Kali Linux,下载并设置DC-2靶场机。确保攻击机和靶机在同一网络段,通常设置为桥接模式或NAT模式。

1.1 靶机描述 
Much like DC-1, DC-2 is another purposely built vulnerable lab for the purpose of gaining experience in the world of penetration testing.
As with the original DC-1, it's designed with beginners in mind.
Linux skills and familiarity with the Linux command line are a must, as is some experience with basic penetration testing tools.
Just like with DC-1, there are five flags including the final flag.
And again, just like with DC-1, the flags are important for beginners, but not so important for those who have experience.
In short, the only flag that really counts, is the final flag.
For beginners, Google is your friend. Well, apart from all the privacy concerns etc etc.
I haven't explored all the ways to achieve root, as I scrapped the previous version I had been working on, and started completely fresh apart from the base OS install.就像DC-1一样,DC-2是另一个特意构建的易受攻击的实验室,目的是在渗透测试的世界中获得经验。
和原始的DC-1一样,它也是为初学者设计的。
必须具备Linux技能和熟悉Linux命令行,以及一些基本渗透测试工具的经验。
就像DC-1一样,这里也有五个标志,包括最终的标志。
同样,就像DC-1一样,对于初学者来说,这些标志很重要,但对于有经验的人则不那么重要。
简而言之,唯一真正重要的标志,是最终的标志。
对于初学者来说,谷歌是你的朋友。嗯,除了所有的隐私问题等等。
我没有探索所有实现root的方法,因为我放弃了我之前一直在做的版本,并从基础操作系统安装开始完全重新开始了。

和DC-1一样,下载好DC-2的虚拟文件后倒入VM虚拟机,并设置为NAT模式。

这里不会的可以参照本专栏的上篇文章。

二、靶场渗透

DC-2是一个为渗透测试初学者设计的脆弱实验室,它包含了多个flag,但只有最终的flag才是最重要的。以下是对DC-2靶场渗透的步骤总结:

  • 环境搭建:首先需要下载DC-2靶场环境,可以通过Vulnhub网站获取。下载后,使用虚拟机软件如VMware导入,并设置网络模式为NAT。
  • 信息收集:使用工具如nmap进行端口扫描,确定靶机的IP地址和开放的端口。例如,使用nmap -sP 192.168.233.0/24来探测活动主机,然后使用nmap -A -p- -v 192.168.233.178来探测开放的端口和服务。
  • 访问Web站点:访问靶机的Web服务,可能会发现需要添加域名解析到hosts文件,以便能够通过域名访问靶机。
  • 发现flag1:在Web站点的某个部分,可能会直接找到flag1,或者需要根据提示使用特定工具(如cewl)来生成密码字典。
  • 用户名枚举与密码爆破:使用wpscan工具枚举WordPress站点的用户名,然后使用生成的密码字典进行爆破,可能会发现如admin, jerry, tom等用户名。
  • SSH登录:使用爆破出的用户名和密码尝试SSH登录,可能会发现某个用户(如tom)可以成功登录。
  • rbash限制绕过:登录后可能会遇到受限的shell(rbash),需要使用特定的技巧来绕过限制,例如使用BASH_CMDS[su]=/bin/sh;a或者修改环境变量来执行命令。
  • 提权:在成功绕过rbash限制后,可以尝试提权。可能会发现用户有sudo权限可以无密码执行某些命令,如git,可以利用这一点进行提权。
  • 发现final-flag:提权后,可以搜索并获取最终的flag文件。
2.1 信息收集
2.1.1 发现靶机真实IP

和DC-1差不多,我们在一开始没有任何信息,所以需要我们先挖掘真实IP,以便我们能继续进行其他操作如远程连接或提权等。

使用nmap工具发现在同一网段下的其他IP地址,根据排除法我们知道DC-2的IP应该是172.16.130.175

因为本机IP为172.16.130.134;172.16.130.1是网卡;172.16.130.2是网关

2.1.2 探测端口及服务

使用命令探测开放的端口:

nmap -sV -p- [你要探测的IP]
或
nmap -A -p- -v [你要探测的IP]


两条命令功能类似,只不过一个直接简洁明了的给出我们开放端口,另一个给出我们更加详细的描述而已。

根据上图,我们可以看出他给出了DC-2开放了两个端口,80默认端口和7744端口。

2.1.3 网站配置

此时,我们输入DC-2的IP进行访问,发现无法访问,且IP地址自动被转换为了域名!由此我们可以想到:dc-2这个域名解析失败,我们需要更改hosts文件添加一个ip域名指向。

hosts文件是一个系统文件,它将网络主机名映射到IP地址。当你的计算机尝试访问一个域名时,系统会首先检查hosts文件以确定是否能找到对应的IP地址。如果没有找到,系统才会继续查询DNS服务器。

如果你害怕此次的实验会对之后虚拟机的 使用产生影响,那么你可以在修改之前提前拍摄一张快照,或者之后将对应域名再从hosts文件中删除也可以。

hosts文件通常位于以下位置:

  • 在Windows系统中,hosts文件通常位于C:\Windows\System32\drivers\etc\目录下。
  • 在Linux和macOS系统中,hosts文件通常位于/etc/hosts目录下。

hosts文件的格式通常如下:

# 这是一个注释
127.0.0.1       localhost
# 以下行是映射某个域名到特定IP地址的例子
192.168.1.100   example.com

在 Kali Linux(或任何类 Unix 系统)中,hosts 文件是一个用于将主机名映射到 IP 地址的文件。它位于 /etc/ 目录下。默认情况下,只有 root 用户或具有适当权限的用户才能编辑此文件。

要编辑 hosts 文件,你可以使用任何文本编辑器,如 nanovigedit(如果已安装)。在此,我以vim编辑器举例:

sudo vim /etc/hosts

添加成功后保存退出,再次访问网站,发现这次可以解析了。

在网站中随便点点,拿下flag1

Your usual wordlists probably won’t work, so instead, maybe you just need to be cewl.More passwords is always better, but sometimes you just can’t win them all.Log in as one to see the next flag.If you can’t find it, log in as another.你通常的密码列表可能不管用,所以相反,你可能只需要使用 cewl。更多的密码总是更好的,但有时候你就是赢不了它们全部。作为其中一个登录就可以看到下一个标志。如果你找不到,尝试作为另一个登录。

大致意思就是叫我们暴力破解账号密码

2.1.4 目录扫描

我们可以使用dirb命令进行目录扫描,看看网站下有什么东西

dirb http://dc-2/

在这其中有许多后台地址,但似乎没什么有用的东西


2.1.5 用户名枚举

既然如此,那么我们就从另外一个角度下手,从页面可以看出,这是一个wordpress站,我们采用专门针对wordpress的工具wpscan来进行扫描。

Wpscan 枚举,cewl 生成字典,爆破获取密码:

从页面信息中可以知道,此页面是 wordpress 为框架开发的 cms系统,WordPress 是一个免费的开源内容管理系统,用PHP 编写,并与 MySQL 或 MariaDB 数据库配对。功能包括插件架构和模板系统。cewl 是一个网页关键字抓取工具,cewl 是一个 kali 自带的密码生成工具,WordPress 有一个 kali 自带扫描工具 wpscan 可以爆破网站的用户名,可以用关键字作为密码继续进行爆破。

爬取网站生成字典的常用工具:cewl

cewl简介

cewl 是一个 ruby 应用,爬行指定 url 的指定深度。也可以跟一个外部链接,结果会返回一个字典,这个字典可以传给其他工具进行密码暴力破解,kali中自带cewl。

现在,我们来试着使用cewl生成密码,这样,我们就生成了一个字典文件:

cewl -w dc2_passwords.txt http://dc-2	//生成字典

Wpscan简介

WPScan 是一款专门针对 WordPress 网站进行安全漏洞扫描的工具,它能够检测包括 WordPress 核心、插件和主题在内的多种安全问题。这款工具对于安全研究人员和网站维护者来说非常有用,可以帮助他们发现并修复潜在的安全威胁。

使用 WPScan 时,你可以通过不同的参数来定制扫描任务,例如:

  • --url 或 -u:指定要扫描的 WordPress 网站的 URL。
  • --enumerate 或 -e:枚举信息,如插件、主题和用户信息。
  • --api-token:提供 API 令牌以获取漏洞数据库的访问权限,这对于显示与检测到的插件或主题相关的已知漏洞信息是必要的。
wpscan --url http://dc-2
wpscan --url http://dc-2 --enumerate t 扫描主题
wpscan --url http://dc-2 --enumerate p 扫描插件
wpscan --url http://dc-2 --enumerate u 枚举用户

首先我们使用wpscan来扫描一下wordpress版本

wpscan --url http://dc-2


通过扫描我们可以发现wordpress的版本为4.7.10

wpscan还可以用来枚举用户,再尝试利用枚举到的用户爆破密码

wpscan --url http://dc-2 --enumerate u

通过爆破,我们得到了三个用户名:admin、jerry、tom

2.1.6 暴力破解密码

完成上述准备步骤后,我们可以根据flag1给我们的提示来进行暴力破解密码了

已知我们之前使用cewl生成了一个字典

现在我们来使用wpscan进行暴力破解:

wpscan --url http://dc-2 --passwords [你的字典]


可以看到,wpscan会用最原始的方法进行暴力破解,最终爆破出来两个账号的密码:jerry和tom

那么,我们尝试使用他们登陆站点,成功登陆,随便翻找一下,发现flag2


If you can't exploit WordPress and take a shortcut, there is another way.Hope you found another entry point.如果你不能利用 WordPress 并采取捷径,还有另一种方法。希望你找到了另一个入口点。

由此信息,我们想到之前还发现了ssh(7744端口),现在让我们来试试。

2.1.7 登陆ssh

分别使用tom和jerry的密码进行远程登录,发现jerry无法正常登陆,那我们先使用tom的账号登陆ssh:

ssh tom@172.16.130.175 -p 7744

输入密码后成功连接

在tom的家目录中,我们发现了flag3,但是无法使用cat直接查看,我这里选择使用vi来查看,当然你也可以选择反弹shell


oor old Tom is always running after Jerry. Perhaps he should su for all the stress he causes.
可怜的老汤姆总是在追杰瑞。也许他应该为他所造成的所有压力使用 su(切换用户)命令。这里的 "su" 是指在 Linux 系统中使用超级用户(超级管理员)权限来执行命令

这提示我们,或许该采用一些权限更高的权限来执行命令

2.2 用户切换、权限提升
2.2.1 rbash绕过

在 Linux 系统中,rbash(restricted bash)是一种限制性的 shell 环境,它限制了用户执行某些命令和操作的能力。这通常用于提高安全性,防止用户执行可能对系统造成危害的命令。然而,在渗透测试或系统管理中,有时需要绕过这些限制来执行必要的操作。

在flag3中提示我们需要提权,但无法直接使用su命令提权到jerry,现在我来尝试rbash绕过,查看一下可以使用的命令:

echo $PATH

想cd到目录下,但系统拒绝了,那么我们先列出目录下的内容

我们无法切换目录往往是因为权限不够,那我们现在尝试使用echo来绕过rbash:

BASH_CMDS[a]=/bin/sh;a
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin
echo /*

这段代码是用来在受限的 shell 环境中(如 rbash)绕过一些限制,以执行非限制性命令的技巧。下面是每行代码的解释:

  1. BASH_CMDS[a]=/bin/sh;a

    • BASH_CMDS 是一个环境变量,通常在 rbash 环境中用来定义允许执行的命令列表。
    • 这行代码将 /bin/sh 添加到 BASH_CMDS 环境变量中,使得 sh 命令可以被执行。
    • a 是一个变量,这里将其赋值为 /bin/sh,然后在命令的末尾调用它(a),从而执行 /bin/sh
  2. export PATH=$PATH:/bin/

    • 这行代码将 /bin/ 目录添加到当前用户的 PATH 环境变量中。
    • PATH 环境变量定义了系统在哪些目录中查找可执行文件。
    • 通过添加 /bin/ 到 PATH,用户可以尝试执行 /bin 目录下的任何命令,即使这些命令在 rbash 中通常是被限制的。
  3. export PATH=$PATH:/usr/bin

    • 类似于上一行,这行代码将 /usr/bin 目录也添加到 PATH 环境变量中。
    • /usr/bin 是另一个包含许多系统命令的目录,这样做可以进一步增加可执行命令的范围。
  4. echo /*

    • 这行代码看起来像是一个示例或测试命令,它的作用是打印出根目录(/)下的所有文件和目录名称。
    • 在 rbash 中,如果限制了对 ls 命令的使用,这个命令可以作为一个替代方法来列出目录内容。

这段代码的目的是为了在受限的 shell 环境中获取更多的自由度,以便能够执行更多的命令

现在我们有了权限,再来看看jerry目录下的内容


成功拿到flag4

Good to see that you've made it this far - but you're not home yet. You still need to get the final flag (the only flag that really counts!!!).  No hints here - you're on your own now.  :-)Go on - git outta here!!!!
很高兴看到你已经走到了这一步 - 但你还没有到家。你仍然需要获取最终的标志(唯一真正重要的标志!!!)。这里没有提示 - 你现在只能靠自己了。:-)继续吧 - 赶紧离开这里!!!

没什么提示,接下来就要靠我们自己了。

2.2.2 git提权

猜想我们需要提权才能获取到最终的flag,我们试着使用git来提权。

在已经在tom账户下绕过rbash的前提下,我们重新使用su切换用户,来到jerry用户。

查看一下jerry是否可以使用git:

sudo -l

可以看到,无需root权限,jerry可以使用git。

那么,现在我们就来使用git命令进行提权,输入下面命令:

sudo git help status

输入!/bin/sh,直接输入即可

现在,我们成功拿到了root权限!

三、总结

DC-2与DC-1的渗透步骤有一些相似之处,但也存在一些区别。以下是DC-2渗透步骤与DC-1的区别:

  1. 靶机发现与IP解析

    • DC-2:发现靶机真实IP后,需要修改hosts文件以解析域名到IP地址,因为直接访问IP时域名解析失败。
    • DC-1:没有提到需要修改hosts文件,直接通过IP进行渗透测试。
  2. 端口探测

    • DC-2:探测到除了常见的80端口外,还有一个7744端口开放。
    • DC-1:主要提到了22和80端口,没有提到7744端口。
  3. 网站配置与访问

    • DC-2:需要修改hosts文件后才能访问网站,且网站是基于WordPress的。
    • DC-1:直接通过IP访问Drupal网站,没有提到需要修改hosts文件。
  4. 目录扫描与用户枚举

    • DC-2:使用dirb进行目录扫描,使用wpscan进行WordPress站点的用户枚举。
    • DC-1:没有提到使用dirb或wpscan,而是直接利用Drupal的已知漏洞进行攻击。
  5. 密码破解

    • DC-2:使用wpscan结合cewl生成的字典文件对WordPress用户进行密码破解。
    • DC-1:没有提到使用cewl生成字典文件,而是直接利用已知漏洞获取shell。
  6. SSH登录与用户提权

    • DC-2:使用破解得到的用户名和密码尝试SSH登录,并在受限的rbash环境中尝试提权。
    • DC-1:SSH登录和提权过程没有详细描述,主要关注于Drupal漏洞的利用。
  7. 提权技术

    • DC-2:尝试使用rbash绕过和git提权技术来获取更高权限。
    • DC-1:提权过程主要关注于SUID提权。
  8. 最终提权与获取flag

    • DC-2:通过SSH登录、rbash绕过、git提权等步骤最终获取root权限,并找到flag。
    • DC-1:通过SUID提权和数据库操作来获取flag。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/53111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python毕业设计作品:python手机数码商城系统毕业设计源代码作品和开题报告(Django框架)

博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…

算法知识点———并查集

并查集是一种用于管理元素所属集合的数据结构,实现为一个森林,其中每棵树表示一个集合,树中的节点表示对应集合中的元素。并查集支持两种操作: 合并(Union):合并两个元素所属集合(合…

828华为云征文 | 华为云Flexusx与Docker技术融合,打造个性化WizNote服务

前言 华为云Flexus X实例携手Docker技术,创新融合打造高效个性化WizNote服务。华为云Flexus X实例的柔性算力与Docker的容器化优势相结合,实现资源灵活配置与性能优化,助力企业轻松构建稳定、高效的云端笔记平台。828华为云企业上云节特惠来袭…

【JVM安装MySQL】

环境 > VMware Workstation Pro > CentOS 7 >Navicat Premium Lite > MobaXterm添加 MySQL Yum 仓库 根据操作系统在下载界面选取对应yum库进行下载 wget https://dev.mysql.com/get/mysql80-community-release-el7-9.noarch.rpm在文件下载界面安装 rpm -ivh mysq…

html+css+js网页设计 旅游 穷游10个页面

htmlcssjs网页设计 旅游 穷游10个页面 网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&#xff…

苹果CMS插件:优化蜘蛛访问内容,提升百度收录率

确保蜘蛛抓取原始内容 专为苹果CMS设计的广告管理插件,能够智能识别搜索引擎蜘蛛与普通访客,确保蜘蛛访问时展示原始内容,从而提升被百度等搜索引擎收录的几率。 广告显示提升收益 对于普通访客,该插件则优先显示广告内容&#…

MySQL函数:数值函数

先附一张黑马程序员的听课截图 1. 向上取整函数CEIL(X) select CEIL(1.5); //这个也就是数学中的向上去整数,无需解释 2. 向下取整函数 FLOOR(X) select FLOOR(1.5); //同上,换成向下取整3. 求模运算 MOD(N,M) 求N / M的余数 select mod(3, 4) …

从入门到精通,带你探索适合新手的视频剪辑工具

用视频来分享生活已经变成越来越多人的一种习惯,很多时候视频并不能一镜到底,所以还需要一些的修改、剪辑操作,那么这次我将介绍几款视频剪辑工具,希望能够让你分享的道路更加通畅。 1.FOXIT视频剪辑 连接直达>>https://w…

Adobe Illustrator文字创建轮廓出现笔画缺失

问题如下: 左边为创建轮廓前,右边为创建轮廓后,可以发现笔画缺失了 解决办法: 办法一:放大字体 结果: 办法二:关闭GPU性能 结果:

Docker Registry API best practice 【Docker Registry API 最佳实践】

文章目录 1. 安装 docker2. 配置 docker4. 配置域名解析5. 部署 registry6. Registry API 管理7. 批量清理镜像8. 其他 👋 这篇文章内容:实现shell 脚本批量清理docker registry的镜像。 🔔:你可以在这里阅读:https:/…

【Binlog实战】:基于Spring监听Binlog日志

【Binlog实战】:基于Spring监听Binlog日志 binlog的三种模式 MySQL 的二进制日志(binlog)有三种不同的格式,通常被称为 binlog 模式。这三种模式分别是 Statement 模式、Row 模式和Mixed 模式。 Statement 模式: 在 …

Html css样式总结

1.Html css样式总结 1.1. 定位position 布局是html中非常重要的一部分,而定位在页面布局中也是使用频率很高的方法,本章节为定位在布局中的使用技巧和注意事项。   position定位有4个属性,分别是static(默认),absol…

Java音视频文件解析工具

文章目录 一 jave-all-deps二 具体用法2.1 添加依赖2.2 视频转音频2.3 视频格式转换2.4 获取视频时长 三 总结 小伙伴们知道,松哥平时录了蛮多视频课程,视频录完以后,就想整理一个视频文档出来,在整理视频文档的时候,就…

信息安全数学基础(17)Wilson定理

前言 Wilson定理(Wilsons Theorem)是数论中的一个基本定理,它揭示了素数与其阶乘之间的一个重要关系。 一、表述 对于任意素数p,有(p−1)!≡−1(modp),其中(p−1)!表示p−1的阶乘,即123⋯(p−1)。 这个定理…

PM2.5粉尘传感器详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 3.工作原理介绍 4.粉尘浓度转化关系 5.空气污染指数 三、程序设计 main.c文件 PM25.h文件 PM25.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 GP2Y1014AU是日本夏普公司开发的一款光学灰尘浓度检测传…

PyQt5 导入ui文件报错 AttributeError: type object ‘Qt‘ has no attribute

问题描述: 利用 PyQt5 编写可视化界面是较为普遍的做法,但是使用全新UI版本的 Pycharm 修改之前正常的UI文件时,在没有动其他代码的情况下发现出现以下报错 AttributeError: type object Qt has no attribute Qt::ContextMenuPolicy::Defaul…

Android Framework(六)WMS-窗口显示流程——窗口内容绘制与显示

文章目录 窗口显示流程明确目标 窗户内容绘制与显示流程窗口Surface的5种状态完整流程图 应用端处理finishDrawingWindow 的触发 system_service处理WindowState状态 -- COMMIT_DRAW_PENDING本次layout 流程简述applySurfaceChangesTransaction 方法概览READY_TO_SHOW和HAS_DRA…

基于springboot酒店管理系统

酒店管理系统 552酒店管理系统 摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,…

通信工程学习:什么是GPON吉比特无源光网络

GPON:吉比特无源光网络 GPON(Gigabit-Capable Passive Optical Network,吉比特无源光网络)是一种基于ITU-T G.984.x标准的最新一代宽带无源光综合接入技术。该技术以其高带宽、高效率、大覆盖范围和用户接口丰富等特点&#xff0c…

Netty笔记01-Netty的基本概念与用法

文章目录 1. 概述1.1 Netty 是什么?1.2 Netty 的特点1.3 Netty 的作者1.4 Netty 的地位1.5 Netty 的优势1.6 Netty 的工作原理1.7 Netty 的应用场景1.8 Netty 的重要组件 2. 第一个程序2.1 目标2.2 服务器端2.3 客户端2.4 流程梳理💡 提示 1. 概述 1.1 …