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

news2024/9/20 15:03:23
一、准备阶段

准备工具如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.coloradmin.cn/o/2145119.html

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

相关文章

GIS OGC之WMTS地图服务,通过Capabilities XML描述文档,获取matrixIds,origin,计算resolutions

GIS OGC之WMTS地图服务,通过Capabilities XML描述文档,获取matrixIds,origin,计算resolutions 需求:如何根据WMTS服务的Capabilities描述文档得到,openlayers调用wmts服务时的matrixIds,origin…

spring security 手机号 短信验证码认证、验证码认证 替换默认的用户名密码认证132

spring security内置的有用户名密码认证规则,还可以调用第三方微信、qq登录接口实现登录认证,这里使用自定义的手机号和短信验证码实现登录认证。 要实现自定义的手机号和短信验证码认证需要了解用户名密码认证的逻辑,仿照该逻辑就可以写出…

心觉:成功学就像一把刀,有什么作用关键在于使用者(一)

Hi,我是心觉,与你一起玩转潜意识、脑波音乐和吸引力法则,轻松掌控自己的人生! 挑战每日一省写作173/1000天 很多人觉得成功学是鸡汤,是没用的,甚至是骗人的 我先保持中立,不知道对不对 我们先…

实习项目|苍穹外卖|day11

Apache ECharts 前端技术。 营业额统计 还是比较简单的。 用户统计 订单统计 以上所有需求。难点在于对时间类的处理&#xff1a; // 接收格式 GetMapping("/turnoverStatistics")ApiOperation("营业额统计")public Result<TurnoverReportVO>…

游戏开发引擎__游戏场景(灯光,摄像机)

1.灯光 重要参数介绍 类型: 控制灯光的类型&#xff0c;有“定向”“点”“区域”和“聚光”4种模式。颜色: 控制灯光的颜色。模式: 控制灯光的光照模式&#xff0c;有“实时”“混合”和“烘焙”3种模式。强度: 控制灯光的明亮程度。间接乘数: 改变间接光的强度。阴影类型: …

使用梯度下降法实现多项式回归

原文链接:使用梯度下降法实现多项式回归 - 柒墨轩 - 博客园 使用梯度下降法实现多项式回归 实验目的 本实验旨在通过梯度下降法实现多项式回归,探究不同阶数的多项式模型对同一组数据的拟合效果,并分析样本数量对模型拟合结果的影响。 实验材料与方法 数据准备 生成训练…

C# 离线激活码的实现方式

一、简介 离线激活码是一种在软件、游戏、应用程序或其他数字产品领域中常用的授权方式&#xff0c;旨在确保产品的合法使用并维护开发者的权益。当用户购买或获得这些产品的使用权后&#xff0c;开发者会提供一个唯一的、一次性的激活码给用户。与在线激活不同&#xff0c;离…

java工具安装教程

提示:先安装软件打开后关闭&#xff0c;在执行魔法操作 解压后会多个文件夹&#xff0c;从文件夹打开 要魔法哪款软件就打开对应的魔法脚本 比如&#xff1a;idea就运行idea魔法 点击打开 显示下面弹窗则成功&#xff0c;点击确定即可 打开IDEA查看&#xff1a;

51单片机-直流电机(PWM:脉冲宽度调制)实验-会呼吸的灯直流电机调速

作者&#xff1a;Whappy&#xff08;菜的扣脚&#xff09; 脉冲宽度调制&#xff08;Pulse Width Modulation&#xff0c;PWM&#xff09;是一种通过调节信号的占空比来控制功率输出的技术。它主要通过改变脉冲信号的高电平持续时间相对于低电平的时间来调节功率传递给负载的量…

上市公司-客户ESG数据集(dta+xlsx+参考文献)(2009-2023年)

参考《经济问题》中李普玲&#xff08;2024&#xff09;的做法&#xff0c;将供应商与主要客户数据对应起来&#xff0c;并对上市公司及关联上市公司的ESG数据进行匹配&#xff0c;形成“供应商——客户ESG”的数据集&#xff0c;保留客户的销售占比 一、数据介绍 数据名称&am…

标准管理系统Vue项目

系列文章目录 第一章 基础知识、数据类型学习 第二章 万年历项目 第三章 代码逻辑训练习题 第四章 方法、数组学习 第五章 图书管理系统项目 第六章 面向对象编程&#xff1a;封装、继承、多态学习 第七章 封装继承多态习题 第八章 常用类、包装类、异常处理机制学习 第九章 集…

Springboot与minio:

一、介绍 Minio是一个简单易用的云存储服务&#xff0c;它让你可以轻松地把文件上传到互联网上&#xff0c;这样无论你在哪里&#xff0c;只要有网络&#xff0c;就能访问或分享这些文件。如果你想要从这个仓库里取出一张图片或一段视频&#xff0c;让网站的访客能看到或者下载…

硬件体系架构的学习

硬件体系架构的学习 RISC全称Reduced Instruction Set Compute&#xff0c;精简指令集计算机&#xff1b; CISC全称Complex Instruction Set Computers&#xff0c;复杂指令集计算机。 SOC片上系统概念 System on Chip&#xff0c;简称Soc&#xff0c;也即片上系统。从狭义…

Spark-ShuffleWriter-UnsafeShuffleWriter-钨丝内存分配

一、上下文 《Spark-ShuffleWriter-UnsafeShuffleWriter》中提到在进行Page内存分配时&#xff0c;调用了一行代码 MemoryBlock page memoryManager.tungstenMemoryAllocator().allocate(acquired); 这里就会走MemoryManager的钨丝内存分配&#xff0c;下面我们来详细看下 …

python运行时错误:找不到fbgemm.dll

python运行时错误&#xff1a;找不到fbgemm.dll 报错&#xff1a; OSError: [WinError 126] 找不到指定的模块。 Error loading "D:\program\py\312\Lib\site-packages\torch\lib\fbgemm.dll" or one of its dependencies. 原因是Windows下缺失&#xff1a;libomp140…

Mastering openFrameworks_第十一章_网络

网络 网络为多个设备之间的数据交换提供了一种方式。它是一个主要组成部分&#xff0c;允许远程控制移动和平板设备应用程序中的一些参数&#xff0c;也用于使交互式项目在多台计算机上同步工作。在本章中&#xff0c;您将学习如何在openFrameworks项目中实现和使用OSC和TCP协…

BrainSegFounder:迈向用于神经影像分割的3D基础模型|文献速递--Transformer架构在医学影像分析中的应用

Title 题目 BrainSegFounder: Towards 3D foundation models for neuroimagesegmentation BrainSegFounder&#xff1a;迈向用于神经影像分割的3D基础模型 01 文献速递介绍 人工智能&#xff08;AI&#xff09;与神经影像分析的融合&#xff0c;特别是多模态磁共振成像&am…

系统安装CH384串口卡驱动

1. 解压驱动文件CH38XDRV.tar&#xff0c;并进入驱动目录 cd CH38XDRV/DRV_28S/LINUX/driver$ 2. 编译 sudo make edgeedge-PC:~/CH38XDRV/DRV_28S/LINUX/driver$ sudo make 请输入密码: 验证成功 make -C /lib/modules/4.19.0-arm64-desktop/build M/home/edge/CH38XDRV/DRV…

2024年【四川省安全员B证】新版试题及四川省安全员B证考试试卷

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 四川省安全员B证新版试题参考答案及四川省安全员B证考试试题解析是安全生产模拟考试一点通题库老师及四川省安全员B证操作证已考过的学员汇总&#xff0c;相对有效帮助四川省安全员B证考试试卷学员顺利通过考试。 1、…

数据库事务的详解

1、 介绍 什么是事务? 事务是一个原子操作。是一个最小执行单元。可以由一个或多个SQL语句组成&#xff0c;在同一个事务当中&#xff0c;所有的SQL语句都成功执行时&#xff0c;整个事务成功&#xff0c;有一个SQL语句执行失败&#xff0c;整个事务都执行失败。(一组操作同时…