渗透测试综合靶场 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.rhkb.cn/news/430846.html

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

相关文章

面试知识点总结篇二

一、makefile链接库参数 LIBS -L/path/to/lib -lmylib//,-lmylib会链接名为libmylib.so或libmylib.a的库。all: myprogrammyprogram: myprogram.ogcc -o myprogram myprogram.o $(LIBS)//此处使用myprogram.o: myprogram.cgcc -c myprogram.c二、shell指令 Shell…

高性能分布式搜索引擎Elasticsearch详解

♥️作者:小宋1021 🤵‍♂️个人主页:小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!! 🎈🎈加油! 加油&#xff01…

在线相亲交友系统:寻找另一半的新方式

在这个快节奏的时代里,越来越多的单身男女发现,传统意义上的相亲方式已经难以满足他们的需求。与此同时,互联网技术的迅猛发展为人们提供了新的社交渠道——在线相亲交友系统作者h17711347205。本文将探讨在线相亲交友系统如何成为一种寻找另…

MYSQL基础语法

1-什么是数据库 数据库就是保留数据的仓库,体现在电脑当中,是一个软件或者是文件系统。然后把这些数据都保存在特殊的文件中,然后使用固定的语言(SQL语句)去操作文件中的数据。 2-数据库的优点 数据库是按照特定的格…

Spring MVC 基本配置步骤 总结

1.简介 本文记录Spring MVC基本项目拉起配置步骤。 2.步骤 在pom.xml中导入依赖&#xff1a; <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.0.6</version><scope>…

Activiti7《第九式:破气式》——流畅驱动工作流进程。面试题大全

冲冲冲&#xff01;开干 这篇文章将分为九个篇章&#xff0c;带你逐步掌握工作流的核心知识。“破气式”&#xff0c;代表着工作流中的 无形之力&#xff0c;它是贯穿整个流程的 关键驱动 不知不觉已经到了独孤九剑最后一式了&#xff0c;我相信到这里之后各位都已经出神入化…

成功使用DDNS动态域名访问我的群晖NAS(TP-link路由器)

当NAS设备部署在动态IP环境中&#xff08;如家庭或小型办公室宽带&#xff09;&#xff0c;远程访问常常受到IP地址频繁变动的困扰。为了解决这一问题&#xff0c;结合神卓互联NAS公网助手提供的DDNS&#xff08;动态域名服务&#xff09;功能&#xff0c;我们可以轻松实现通过…

EasyGBD国标GB28181设备端,支持GB28181-2016、GB28181-2022

功能概要&#xff1a; 功能概述&#xff1a;EasyGBD是GB/T28181 Device的简称&#xff0c;指国标GB28181协议的设备端。EasyGBD功能组件支持Windows、Linux、Android、iOS、ARM等所有平台&#xff0c;可兼容国标GB28181-2011、GB28181-2016的全部功能。 操作系统&#xff1a;任…

医院监护病房智慧ICU远程探视双向对讲为医院带来什么?

随着信息技术的进步和社会对医疗服务要求的不断提高&#xff0c;医院在努力提升服务质量的同时&#xff0c;也在积极寻求更科学有效的管理手段。全视通智慧医院解决方案下有十几个业务系统&#xff0c;主要专注于医院信息化系统&#xff0c;针对于智慧门诊、智慧病房、智慧手术…

玩转腾讯混元大模型——带您解读各个功能

自从2022年的OpenAI公司推出chatGPT人工智能聊天机器人&#xff0c;从此人工智能大模型便在各国可所谓风靡一时&#xff0c;不断涌现出各种各样的大模型&#xff0c;深得用户喜爱。然而在此领域中&#xff0c;腾讯也研发出了自己的大语言模型&#xff0c;下面我们一起来了解一下…

C#基础(11)函数重载

前言 前面我们已经完成了ref和out补充知识点的学习&#xff0c;以及函数参数相关的学习&#xff0c;今天便再次为函数补充一个知识点&#xff1a;函数重载。 函数重载是指在同一个作用域中&#xff0c;可以有多个同名函数&#xff0c;但参数列表不同。它的发展可以追溯到早期…

一.python入门

gyp的读研日记&#xff0c;哈哈哈哈&#xff0c;&#x1f642;&#xff0c;从复习python开始&#xff0c; 目录 1.python入门 1.1 Python说明书 1.2 Python具备的功能 1.3 学习前提 1.4 何为Python 1.5 编程语言 2.Python环境搭建 2.1 开发环境概述 2.2 Python的安装与…

【开发心得】筑梦上海:项目风云录(5)

写这个长篇的目的&#xff0c;前文已经说过。就这个目的而言&#xff0c;这里会更多的讲项目中存在的风险和应对&#xff0c;假如你正在做项目或者打算从事软件项目管理&#xff0c;可以一起交流讨论一下。 目录 小娇的离去 管人的大忌 理解甲方的立场 时刻表的诞生 未完…

dotnet4.0编译问题

因为最近在写cobaltstrike的execute-assembly内存加载的c#项目 用visual studio2022编译&#xff0c;最低net只能用6.0版本的&#xff0c;并且execute-assembly不支持 我想使用4.x版本进行编译&#xff0c;因为visual studio不支持&#xff0c;那么使用命令行进行编译 因为要用…

np.pad实现零填充

np.pad 是 NumPy 中用于对数组进行填充的函数&#xff0c;它可以在数组的不同维度上添加指定数量的值。 X&#xff1a;输入的 NumPy 数组。通常是一个 4 维数组&#xff0c;可能表示图像数据&#xff0c;形状为 (batch_size, height, width, channels)&#xff0c;例如 (样本数…

Java语法-类和对象(上)

1. 面向对象的初步认识 1.1 什么是面向对象 概念: Java是一门纯面向对象的语言(Object Oriented Program&#xff0c;简称OOP)&#xff0c;在面向对象的世界里&#xff0c;一切皆为对象。 1.2 面向对象VS面向过程 如:洗衣服 面向过程: 注重的是洗衣服的过程,少了一个环节也不…

nginx基础篇(一)

文章目录 学习链接概图一、Nginx简介1.1 背景介绍名词解释 1.2 常见服务器对比IISTomcatApacheLighttpd其他的服务器 1.3 Nginx的优点(1)速度更快、并发更高(2)配置简单&#xff0c;扩展性强(3)高可靠性(4)热部署(5)成本低、BSD许可证 1.4 Nginx的功能特性及常用功能基本HTTP服…

工厂模式,策略模式,代理模式,单例模式在项目中的应用

项目背景&#xff1a; 首先这篇文章是总结了OJ项目和AI答题平台项目&#xff08;和一点点的聚合搜索项目&#xff09;中设计模式的文章 在项目中也用了很多次的设计模式&#xff0c;我感觉起来&#xff0c;这些设计模式的作用就是提高项目的扩展性和降低耦合性 工厂模式&…

vite分目录打包以及去掉默认的.gz 文件

1.vite打包情况介绍&#xff1a; 1.1vite在不进行任何配置的情况下&#xff0c;会将除开public的所有引用到资源打包编译添加哈希值至assets文件夹中&#xff08;非引用文件以及行内样式图片未被打包编译资源会被treeSharp直接忽略不打包&#xff09;&#xff0c;     1.2w…

七层负载均衡和四层负载均衡的区别

文章目录 什么是七层负载均衡&#xff1f;一、定义与工作原理二、优点与缺点三、应用场景四、常见七层负载均衡器五、负载均衡算法 什么是四层负载均衡&#xff1f;一、定义与原理定义&#xff1a;原理&#xff1a; 二、特点与应用场景特点&#xff1a;应用场景&#xff1a; 三…