DC-2靶场通关记录
0.序言/确定端口
与DC-1一样也拥有5个flag,镜像下载地址为DC:2 ~ VulnHub,下载解压导入VM打开即可,依旧需要将靶机和kali置于同一网段下即可
开启kali后依旧先确定ip以及端口
靶机的mac地址为

ifconfig确定kali的ip,然后根据ip查端口
nmap -sn 192.168.220.129/24
-sn : 相当于Ping扫描,只做存活主机探测,不做端口扫描
/24:CIDR 前缀长度,/24相当于扫C段256个端口

确定靶机ip为192.168.220.131
然后扫一下端口看看开放了哪些服务
nmap -A -p- 192.168.220.131
-A是全面扫描, -p-是扫描全部端口(0-65535)

开了80和7744,注意到80是http服务,网站访问一下,发现访问失败,且ip被转化为了域名。

想起在下载地址中提到要配置hosts文件



再试着访问一下

成功!
1.flag1
发现网站页面上就有个flag,点进去看看

翻译:
你通常使用的词表可能无法使用,所以或许你只需要用“cewl”即可。
密码越多越好,但有时你根本无法获得全部密码。
以第一个身份登录,查看下一个标志。
如果找不到,请以另一个身份登录。
cewl是一个kali自带的爬虫生成自定义字典,用于爆破。
理解来说就是让我们用爆破的方式进行登录
2.flag2
但是登录的地址在哪儿呢?没有找到提示,选择直接开扫看看能不能扫出来
dirsearch -u http://dc-2/ -x 403 404(dirsearch不是kali自带的(好像不是))
常见配置:
-u URL目标网址(必选)
-e php,html,txt指定扫描后缀扩展名
-w 字典.txt自定义字典,不使用内置字典
-r递归扫描,发现目录继续往下扫
-i 200,302只显示指定状态码
-x 404,403排除指定状态码
-o result.txt输出保存到文件
--random-agent随机 UA,绕过简单反爬
--delay 0.5请求延时,防止封 IP
-l urls.txt批量扫描多个 url 列表

发现一个url,复制访问一下看看

访问成功,看来下一步就需要用到cewl进行爆破了,lz这里没有了解过cewl,先去补习一下: cewl工具使用 - jackie_le - 博客园
大概懂了,就是个爬网页信息然后存起来的功能
cewl http://dc-2 -w /root/桌面/dc-2
找到对应路径,发现确实多了一个dc-2的文件,打开看看里面有什么

这些内容应该是用来充当密码的,那怎么知道用户都有谁呢?(盲猜一手有admin)
有点懵,回想了一下工具和步骤,好像没有扫用户名的。不会要用bp拿字典去爆吧?
应该是可行的,但看到别的大佬是根据网站的指纹信息来确定方式的
因为网站是WordPress,有一个专门正对于其工具为wpscan(kali自带)
WordPress是全球流行的博客网站,许多外国的博客都是用它搭建的,但是存在着很多漏洞(CVE‑2017‑5487)
wpscan --url http://dc-2 -e u (-e u : 作用为枚举用户)
发现一共有三个用户:admin,jerry和tom

在桌面写一个txt把这三放进去,然后和刚才cewl生成的字典拿去爆

wpscan --url http://dc-2 -U /root/桌面/user -P /root/桌面/dc-2

爆出来了俩,没有admin(密码分别是adipiscing和parturient)
登录一个试试

翻阅发现flag2

如果你没法利用 WordPress 走捷径,还有另一条路,希望你找到另一个入口点
3.flag3
wordpress是该网站的指纹,不走这条路是否意味着让我们注意http网站之外的东西?
但还有一个账号也爆出来了,登录一下看看有没有什么东西
登陆进去啥也没有,这条路到头了
一开始进行端口探测时除了80端口,还有一个7744端口是ssh服务,连一下试试
ssh jerry@192.168.220.131 -p 7744

奇怪,输了密码也连不上,什么情况
试一下另一个账号tom
ssh tom@192.168.220.131 -p 7744

连上了,ls发现路径下的flag3.txt文件,cat读一下发现命令被禁止了

rbash 原理:只能执行 PATH 环境变量里面目录下的程序
看一下PATH:echo $PATH

发现有四个可以执行,分别是less,ls,,scp和vi。这里需要用到vi或者less(scp用于复制)
less flag3.txt(进去后按q退出)

Poor old Tom is always running after Jerry. Perhaps he should su for all the stress he causes.
得到flag3的内容
4.flag4
flag3内容中提到了su,su是一个用于切换用户的命令,ssh既然tom可以登录进来,应该是需要让我们用su切换到jerry用户
试一下失败了,被rbash禁止了,需要进行rbash逃逸。因为可以用到vi命令,可以对文件内容进行编辑,于是使用vi进行逃逸
在flag3.txt里写入
vi flag3.txt,然后i进行写入,
:set shell=/bin/bash:shell
然后发现cd可以用了,到处cd然后ls看看

最终在一系列搜寻之和发现jerry目录,在里面发现flag4.txt

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. :-)
还差一个flag,而已经没有提示了(其实最后一行还是提示了,暗示需要用到git)
5.flag5

找到root位置,cd进不去
回想起来不对啊,不是提示要用到su命令吗?好像到现在也没用上。
先在环境变量中加上bin(因为bin中可以使用那些命令),然后就可以完成切换啦
export PATH=$PATH:/bin:/usr/bin

成功切换!

然后发现jerry用户也无法cd到root里去。查一下jerry被允许干啥
sudo -l

用户 jerry 可在 DC-2 上执行以下命令:
(root) NOPASSWD: /usr/bin/git
居然有个美好的提示:git!和前面的flag4提示内容对应了
sudo git help config 。这里的关系其实有点绕。
该语句的功能查看 git 的 config(配置)帮助文档。 当帮助内容比较长时,git 默认调用系统的 less 分页程序来分页显示文本。
less 有一个内置功能:在阅读页面输入
!命令,可以执行操作系统命令前面加了
sudo,所以 git 进程是以 root 身份运行的
然后直接输入!/bin/bash
就会以 root 身份启动 bash,拿到 root shell

成功拿到root权限,再进root文件夹,获得最终flag

6.总结
靶场整体流程可以视为:
网页信息收集 → WordPress 爆破 → SSH 登录受限 shell → rbash 逃逸 → su 切换用户 → sudo NOPASSWD 提权 root
先扫靶机端口服务,然后根据SRC漏洞工具获得账号密码,再在ssh进到受限shell,通过rbash逃逸切换用户,最终通过git+less 逃逸拿到 root。
还是可以看作:信息收集--漏洞利用--提权 的流程
要点汇总:
- hosts 文件修改,域名访问网站
- wpscan 枚举用户 + 爆破 WordPress 账号
- rbash 受限 shell 的原理与逃逸(vi /less)
- su 切换用户:需要目标用户密码;
su -是完整登录式切换- Linux 提权排查顺序:
sudo -l> SUID > cron > 内核漏洞- GTFOBins:sudo 可执行 git,利用 less 分页器
!逃逸获取 root shell

浙公网安备 33010602011771号