前言
与DC-1非常相似,DC-2是另一个专门建立的易受攻击的实验室,目的是获得渗透测试领域的经验。与最初的DC-1一样,它是为初学者设计的。必须具备Linux技能并熟悉Linux命令行,还必须具有使用基本渗透测试工具的经验。就像DC-1一样,有五面旗帜,包括最后一面旗帜。和DC-1一样,旗子对初学者来说很重要,但对有经验的人来说就不那么重要了。简而言之,唯一真正有意义的旗帜,是最后一面旗帜。对于初学者来说,谷歌是你的朋友。好吧,除了所有的隐私问题等等。我没有探索实现root的所有方法,因为我放弃了我一直在研究的上一个版本,并从基本操作系统安装中完全重新开始。
2、下载靶场环境
靶场下载地址:
https://www.vulnhub.com/entry/dc-2,311/
和DC-1一样,有五个flag
信息收集:寻找靶机真实IP
nmap -sP 192.168.xxx.xxx/24 再探端口及服务
nmap -A -p- -v 192.168.xxx.xxx
发现开放了80端口,存在web服务,Apache/2.4.10,
发现开放了7744端口,开放了ssh服务,OpenSSH 6.7p1
火狐上访问web站点
发现访问不了,且发现我们输入的ip地址自动转化为了域名,我们想到dc-2这个域名解析失败,我们需要更改hosts文件,添加一个ip域名指向。修改hosts文件,添加靶机IP到域名dc-2的指向
vim /etc/hosts
添加完成之后,再次访问,访问成功
可以很明显的发现这是一个wordpress的站点
发现flag1
在网页下面我们flag
点进入发现是flag1
大致意思如下:
你通常的单词列表可能不起作用,所以,也许你只是得小心点。
更多的密码总是更好,但有时你就是赢不了他们都是。
以一个身份登录,以查看下一个标志。
如果你找不到它,就以另一种身份登录。
大致意思就是暴力破解,账号密码
做一个目录扫描
dirb http://dc-2/
发现疑似后台地址
打开后进入到登录页面
用户名枚举
前面我们提到这是一个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
发现wordpress的版本4.7.10
登录页面尝试登录
随即输入用户名密码,提示用户名不存在,似乎可以进行用户名枚举
首先来个用户枚举,再尝试利用枚举到的用户爆破密码
wpscan --url http://dc-2 --enumerate u
[ admin] [ jerry] [ tom]: 枚举出三个用户名
暴力破解出账号密码
根据flag1可以用暴力破解,我们使用cewl生成字典,
Cewl是一款采用Ruby开发的应用程序,你可以给它的爬虫指定URL地址和爬取深度,还可以添额外的外部链接,接下来Cewl会给你返回一个字典文件,你可以把字典用到类似John the Ripper这样的密码破解工具中。除此之外,Cewl还提供了命令行工具。
为了方便大家记录,或者为将来的研究提供参考,Cewl可以将打印出的字典存储为文件。这里可以使用-w参数来将密码字典存储为text文件:
cewl http://dc-2/ -w dict.txt 或者 cewl http://dc-2/ > 1.txt
使用wpscan进行暴力破解
wpscan --url http://dc-2 --passwords dict2.txt
爆破出来两个账号
jerry/adipiscing
tom/parturient
jerry/adipiscing登录此站点
tom/parturient登陆此站点
登录后台之后,可以看到flag2,用的是jerry的账号
If you can't exploit WordPress and take a shortcut, there is another way.
Hope you found another entry point.
如果你不能利用WordPress并走捷径,还有另一种方法。
希望你找到了另一个切入点。
在tom的家目录发现flag3
jerry/adipiscing
tom/parturietn
登录ssh
ssh tom@192.168.xxx.xxx-p 7744 password:parturient
在tom账号的家目录 发现flag3
cat用不了,
这里把查看命令都尝试了一遍 less和vi可以来查看,
提示内容如下
接下来,尝试rbash绕过详情参考
RBASH绕过主要涉及到通过一系列技术手段来克服Restricted Bash(rbash)的限制,以便用户能够执行更多的命令和操作。RBASH是一种限制用户使用Bash shell的能力的措施,通过设置,可以限制用户访问的目录、可执行的命令以及环境变量的设置等,从而提高系统的安全性。然而,在某些情况下,这种限制可能会给用户带来不便,因此需要找到方法来绕过这些限制。
RBASH绕过的方法主要包括:通过修改环境变量:一种方法是通过修改PATH环境变量,添加更多的目录到$PATH中,从而使得用户可以访问到更多的命令。例如,通过命令export PATH=$PATH:/bin/和export PATH=$PATH:/usr/bin/,用户可以尝试执行位于/bin/和/usr/bin/目录下的命令1。
使用软连接:在用户的家目录下创建一个.bin目录,并通过软连接(symlink)将一些命令链接到这个目录,然后在.bashrc文件中设置环境变量,使得用户可以通过这个目录执行命令。例如,通过命令ln -s /bin/clear /home/$USER/.bin/clear创建一个指向clear命令的软连接,用户就可以通过这个软连接执行clear命令2。
利用Vim或Vi的:set shell命令:在Vim或Vi编辑器中,可以使用:set shell命令来改变shell,从而执行更多的命令。例如,通过输入:set shell=/bin/sh或:set shell=/bin/bash,可以切换到Bash或Shell环境,进而执行更多的命令2。
使用编程语言执行系统命令:通过编写简单的脚本或利用某些编程语言的系统调用功能,可以执行系统命令。例如,使用Python的os.system()函数或pty.spawn()函数来执行Bash或Shell命令2。
利用su和su-命令的区别:在RBASH环境中,su命令只会更改当前用户,而不会更改当前的用户环境。而su-命令则在更改当前用户信息的同时还会更改用户环境。利用这一点,可以在切换用户时逃逸出RBASH环境3。
SSH登录时逃逸:通过SSH登录时使用-t选项远程运行脚本,可以绕过RBASH的限制。例如,使用命令ssh username@IP -t "/bin/sh"或ssh username@IP -t "/bin/bash"来直接以Bash或Shell环境登录3。
这些方法提供了一种途径,使得用户在RBASH环境中仍然能够执行一些必要的操作,但需要注意的是,这些操作可能会带来安全风险,因此在使用时应谨慎考虑安全影响。
查看可以使用的命令
echo $PATH
cd进不去目录 使用ls直接查看目录信息
使用echo来绕过rbash
BASH_CMDS[a]=/bin/sh;a
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin
echo /*
11、在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
sudo -l
提权查看一下可以使用的root权限命令
find / -user root -perm -4000 -print 2>/dev/null
jerry用户也不可以直接sudo su
提权成功
发现final-flag.txt
cd /root
cat final-flag.txt
A special thanks to all those who sent me tweets
and provided me with feedback - it's all greatly
appreciated.
If you enjoyed this CTF, send me a tweet via @DCAU7.
特别感谢所有给我发推文的人
并向我提供了反馈——这一切都很棒
赞赏。
如果你喜欢这个CTF,请通过@DCAU7给我发推特。