一、环境搭建:
1、DC-2与DC-1非常相似,DC-2是另一个专门建立的易受攻击的实验室,目的是获得渗透测试领域的经验。与最初的DC-1一样,它是为初学者设计的。必须具备Linux技能并熟悉Linux命令行,还必须具有使用基本渗透测试工具的经验。就像DC-1一样,有五面旗帜,包括最后一面旗帜。和DC-1一样,旗子对初学者来说很重要,但对有经验的人来说就不那么重要了。简而言之,唯一真正有意义的旗帜,是最后一面旗帜。对于初学者来说,谷歌是你的朋友。好吧,除了所有的隐私问题等等。我没有探索实现root的所有方法,因为我放弃了我一直在研究的上一个版本,并从基本操作系统安装中完全重新开始。
和DC-1一样,有五个flag
2、下载靶场DC-2的环境
靶场下载地址:
https://www.vulnhub.com/entry/dc-2,311/https://www.vulnhub.com/entry/dc-2,311/
3、网络设置,要与攻击机kali在同一网段,要么都用NAT模式,要么都用桥接模式(我这里用的是NAT模式)。
二、渗透靶场
1、目标是确定目标靶场
使用ifconfig来确认网段
知道网段后使用nmap -sP XXX.XXX.XXX.XXX/24
2、信息收集:寻找靶机真实IP
使用nmap扫描存活主机
nmap -sP 192.168.234.0/24
3、信息收集:探端口及服务
nmap -A -p- -v 192.168.234.130
发现开放了80端口,存在web服务,Apache/2.4.10,
发现开放了7744端口,开放了ssh服务,OpenSSH 6.7p1
4、访问火狐web站点
http://192.168.234.130
发现访问不了,且发现我们输入的ip地址自动转化为了域名,我们想到dc-2这个域名解析失败,我们需要更改hosts文件,添加一个ip域名指向。
修改hosts文件,添加靶机IP到域名dc-2的指向
vim /etc/hosts
添加完成之后,再次访问,访问成功
可以很明显的发现这是一个wordpress的站点
5、在网页下面我们发现了flag
点进入发现是flag1
大致意思如下:
你通常的单词列表可能不起作用,所以,也许你只是得小心点。
更多的密码总是更好,但有时你就是赢不了他们都是。
以一个身份登录,以查看下一个标志。
如果你找不到它,就以另一种身份登录。
大概意思就是让我们暴力破解账号和密码
6、目录扫描
我们可以使用dirb命令进行目录扫描,看看网站下有什么东西
在这其中有许多后台地址,但似乎没什么有用的东西
复制链接然后打开火狐进入到登录页面
发现多个遍历,但似乎没什么有用的东西
7、用户名枚举们提到这是一个wordpress
既然如此,那么我们就从另外一个角度下手,从页面可以看出,这是一个wordpress站,我们采用专门针对wordpress的工具wpscan来进行扫描。
WPScan是Kali Linux默认自带的一款漏洞扫描工具,它采用Ruby编写,能够扫描WordPress网站中的多种安全漏洞,其中包括WordPress本身的漏洞、插件漏洞和主题漏洞。最新版本WPScan的数据库中包含超过18000种插件漏洞和2600种主题漏洞,并且支持最新版本的WordPress。值得注意的是,它不仅能够扫描类似robots.txt这样的敏感文件,而且还能够检测当前已启用的插件和其他功能该扫描器可以实现获取站点用户名,获取安装的所有插件、主题,以及存在漏洞的插件、主题,并提供漏洞信息。同时还可以实现对未加防护的Wordpress站点暴力破解用户名密码。
Wpscan一些常用语句:
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 枚举用户
扫描wordpress版本
wpscan --url http://dc-2
首先我们使用wpscan来扫描一下wordpress版本
通过扫描我们可以发现wordpress的版本为4.7.10
登录页面尝试登录
随即输入用户名密码,提示用户名不存在,似乎可以用户名枚举
wpscan还可以用来枚举用户,再尝试利用枚举到的用户爆破密码
首先来个用户枚举,再尝试利用枚举到的用户爆破密码
wpscan --url http://dc-2 --enumerate u
通过枚举爆破,我们得到了三个用户名:admin、jerry、tom
8、暴力破解出账号和密码
根据flag1可以用暴力破解,我们使用cewl生成字典,
Cewl是一款采用Ruby开发的应用程序,你可以给它的爬虫指定URL地址和爬取深度,还可以添额外的外部链接,接下来Cewl会给你返回一个字典文件,你可以把字典用到类似John the Ripper这样的密码破解工具中。除此之外,Cewl还提供了命令行工具。kali中自带cewl。
为了方便大家记录,或者为将来的研究提供参考,Cewl可以将打印出的字典存储为文件。
cewl 是一个 kali 自带的密码生成工具,WordPress 有一个 kali 自带扫描工具 wpscan 可以爆破网站的用户名,可以用关键字作为密码继续进行爆破。
爬取网站生成字典的常用工具:cewl
这里可以使用-w参数来将密码字典存储为text文件:
cewl httpl://dc-2/ -w dc2.txt
使用wpscan进行暴力破解
wpscan --url http://dc-2 --passwords dc2.txt
可以看到,wpscan会用最原始的方法进行暴力破解
爆破出来两个账号
jerry/adipiscing
tom/parturient
那么,我们尝试使用jerry/adipiscing登录此站点,成功登陆,随便翻找一下,发现flag2
tom/parturient登陆此站点
9、发现flag2
登录后台之后,我们看到flag2,我用的是jerry的账号
点进去之后看到flag2提示信息,简单说就是如果wordpress行不通的话就会一个点,我们之前发现有ssh,我们看看ssh
If you can't exploit WordPress and take a shortcut, there is another way.
如果你不能利用WordPress并采取一条捷径,还有另外一种方法。
Hope you found another entry point.
希望你找到了另一个入口。
由此信息,我们想到之前还发现了ssh(7744端口),现在让我们来试试。
10、登陆ssh
分别使用tom和jerry的密码进行远程登录,发现jerry无法正常登陆,那我们先使用tom的账号登陆ssh:ssh tom@192.168.234.130 -p 7744
在tom的家目录中,我们发现了flag3,但是无法使用cat直接查看,我这里选择使用less和vi来查看
提示内容如下
这里的“su”是指在Linux系统中使用超级用户(超级管理员)权限来执行命令
这提示我们,或许该采用一些权限更高的权限来执行命令
尝试使用rbash绕过
在 Linux 系统中,rbash(restricted bash)是一种限制性的 shell 环境,它限制了用户执行某些命令和操作的能力。这通常用于提高安全性,防止用户执行可能对系统造成危害的命令。然而,在渗透测试或系统管理中,有时需要绕过这些限制来执行必要的操作。
在flag3中提示我们需要提权,但无法直接使用su命令提权到jerry,现在我来尝试rbash绕过,查看一下可以使用的命令:
echo $PATH
cd进不去目录 使用ls直接查看目录信息
我们无法切换目录往往是因为权限不够,那我们现在尝试使用echo来绕过rbash:
BASH_CMDS[a]=/bin/sh;a
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin
echo /*
这段代码是用来在受限的 shell 环境中(如 rbash)绕过一些限制,以执行非限制性命令的技巧。下面是每行代码的解释:
BASH_CMDS[a]=/bin/sh;a
BASH_CMDS 是一个环境变量,通常在 rbash 环境中用来定义允许执行的命令列表。
这行代码将 /bin/sh 添加到 BASH_CMDS 环境变量中,使得 sh 命令可以被执行。
a 是一个变量,这里将其赋值为 /bin/sh,然后在命令的末尾调用它(a),从而执行 /bin/sh。
export PATH=$PATH:/bin/
这行代码将 /bin/ 目录添加到当前用户的 PATH 环境变量中。
PATH 环境变量定义了系统在哪些目录中查找可执行文件。
通过添加 /bin/ 到 PATH,用户可以尝试执行 /bin 目录下的任何命令,即使这些命令在 rbash 中通常是被限制的。
export PATH=$PATH:/usr/bin
类似于上一行,这行代码将 /usr/bin 目录也添加到 PATH 环境变量中。
/usr/bin 是另一个包含许多系统命令的目录,这样做可以进一步增加可执行命令的范围。
echo /*
这行代码看起来像是一个示例或测试命令,它的作用是打印出根目录(/)下的所有文件和目录名称。
在 rbash 中,如果限制了对 ls 命令的使用,这个命令可以作为一个替代方法来列出目录内容。
这段代码的目的是为了在受限的 shell 环境中获取更多的自由度,以便能够执行更多的命令
11、现在我们有了权限,再来看看jerry目录下的内容
在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!!!!
大致意思就是还没有结束。猜想需要提权才能获取到最终的flag,并且flag4 提示我们可以使用git,我们可以通过git来提权
使用tom用户无权限运行sudo 我们切换到jerry用户
我们可以看到无需root权限,jerry 可以使用 git在已经在tom账户下绕过rbash的前提下,我们重新使用su切换用户,来到jerry用户。
查看一下jerry是否可以使用git:
sudo -l
12、 提权
查看一下可以使用的root权限命令
find / -user root -perm -4000 -print 2>/dev/null
jerry用户也不可以直接sudo su
使用git命令进行提取
sudo git help status
输入!/bin/sh,直接输入就行
现在,我们拿到了root权限!
13、发现final-flag.txt
cd /root
cat final-flag.txt
最终拿到flag