目录一览
部署方法
1.下载镜像并解压。
2.打开虚拟机,将解压的.ova文件拖入虚拟机,如果导入过程出现不合规的提示不用管,按照提示点击重试就可以了。
3.配置网络,一般设置成和攻击机kali一样即可,这里我设置的是NAT模式。
4.打开虚拟机启动靶场。
下载DC-2_drupal镜像
下载地址:
https://pan.baidu.com/s/1nf0OUdufQ5SDlfdKu6wyng?pwd=chao
提取码:chao
靶机描述:
There are multiple ways of gaining root, however, I have included some flags which contain clues for beginners.
There are five flags in total, but the ultimate goal is to find and read the flag in root’s home directory. You don’t even need to be root to do this, however, you will require root privileges.
(有多种获取根的方法,但是,我包含了一些标志,为初学者提供了线索。
总共有五个标志,但最终目标是在根目录的主目录中查找和读取标志。您甚至不需要成为根用户就可以做到这一点,但是,您需要根权限。)
简单说就是它有五个flag,需逐个获取flag,最终获取root下的flag,获取flag的方法不唯一。
打靶过程
1.获取靶机的ip地址
渗透的常规操作,用arp-scan -l
来获取靶机的ip地址。
2.端口扫描
用nmap进行端口扫描,命令nmap -A ip地址 -p1-65534
,结果如下:
从扫描结果来看,该靶场开放了以下端口:
80:存在web页面
7744:ssh服务
3.访问web页面
扫描好了端口之后我们上web页面看一下,在浏览器输入url:ip地址:80
,得到一个访问失败的页面:
进入开发者模式的网络(NetWork),刷新页面后查看状态码:
可以发现状态码为301,301状态码为永久性重定向状态码,这就是说请求会发送到新url上去,从下面的Location可以看到新地址域名是http://dc-2/。
但是我们访问过后会发现访问不了,这种ip访问报301,域名访问不了的情况原因有很多种。我在状态码这一块没有过多的研究,只知道这里的情况属于域名与ip没有绑定在一起的情况,那么这时候我们就需要借助hosts文件将其绑定。
这里我用的是kali,hosts文件存放在/etc目录下,具体存放在哪要看系统的。使用vim /etc/hosts
查看hosts文件,并添加ip地址 dc-2
这条策略,如下图。
添加完毕后再次访问,这时候ip和域名都可以访问。
4.flag1出现
进入页面后,Flag很明显地展现在我们面前,点击进去发现flag1。
flag1大致意思是我们需要一个字典,但是普通的字典是没有用的,可能我们需要使用到cewl,字典里的密码越多越好,如果这里没有你想要的东西了,可以去别的地方找找登录口。
到这里就已经明了了,flag1需要我们对这个网站进行扫描,寻找另一个目录,且这个目录具有登录口。
5.扫描目录得到wordpress登录口
这里我使用kali自带的dirb对dc-2靶场进行目录扫描,命令dirb http://dc-2/
,扫描结果如下:
可以看到扫描出三个网站,分别试着访问一下,最终发现wordpress登录口,其url为http://dc-2/wp-admin/。
6.爆破登录口,获得账户
出现了登录口后,第一件事想的就是进行爆破。但是由于flag1,常规的密码字典是不管用的,因此我们需要另辟道路。
前面我们可以看到dc-2靶场采用的是wordpress框架搭建的,那么接下来要说的是,wpscan这是一款专门扫描wordpress框架网站安全漏洞的一款扫描工具,因此,我们先用wpscan进行扫描网站存在的用户名。
命令:wpscan --url http://dc-2 -e u
(注意:url前面是两条杠,e前面只有一条杠)
从结果可以看出,dc-2靶场存在三名用户,分别是admin、jerry、tom。用户名有了,接着就是生成密码字典,普通的密码字典已经不能爆破成功了,因此需要另行生成密码字典。
cewl是一款利用爬虫技术,针对网站生成字典的工具,所以这里用cewl来生成字典是再好不过了。
命令:cewl http://dc-2/ -w password.txt
(-w password.txt表示将生成的字典写入password.txt文件中)
有了针对性的密码字典后,我们继续用wpscan进行爆破,这里我将上面爆破出的三个用户名提前存在user.txt文件里。
命令:wpscan --url http://dc-2 -U user.txt -p password.txt
从爆破结果可以看出,wpscan爆破出了两个账号密码,分别是jerry/adipiscing和tom/parturient,admin未爆破出来,将爆破出的账号密码登录wordpress登录口,成功登录。
7.flag2出现
在jerry界面的左侧导航栏有个Pages,点击后flag2大大的字样就显示在我们面前,点击后获得flag2提示。
原话:if you can’t exploit WordPress and take a shortcut, there is another way. Hope you found another entry point.
翻译:如果你没法利用wordpress找到入口,还有另一个入口。希望你能找到另一个入口。
这里作者的提示就点的很清楚了,意思是说这里已经没有利用价值了,或者说很难找到切入点,让我们找另一个入口。
8.ssh登录
我们之前在做端口扫描的时候,不但有扫出web页面,还扫出了ssh服务,那么这个ssh是否就是上面所说的另一个入口呢?我们可以用上面爆破的jerry和tom账户试一下。
在kali命令行输入ssh jerry@ip地址 -p ssh端口
,然后输入jerry的密码,发现jerry账户登不上去;再输入ssh tom@ip地址 -p ssh端口
,然后输入tom的密码,成功登录。
9.flag3出现
既然进到ssh,那第一件事就是用ls
查看里面有什么。
马上就看到了flag3.txt,用
cat flag3.txt
查看内容,发现提示没有这个命令,可能是由于权限导致不可以用这个命令,那么这时候就只要利用其他命令来间接地查看flag3的内容,比如vi flag3.txt
、less flag3.txt
、more flag3.txt
等等,哪个能用就用哪个,总之就是死皮赖脸的钻,直到看到flag3的内容。
原话:Poor pld Tom is always running after Jerry. Perhaps he should su for all the stress he causes.
翻译+解读:可怜的老汤姆总是跑在杰瑞后面(这一句可能暗示着tom的权限比jerry低)。可能他需要用su来缓解他造成的压力(暗示我们需要用su来提升tom的权限到jerry)。
10.rbash绕过
随便输入个没有权限的密码查看,发现它用的是rbash,平时我们用Linux命令的时候都是用bash,上网找了一下rbash的资料。rbash全称Restricted bash,即受限制的bash。果然,命令用不成就是因为被限制了,因此我们需要绕过rbash,这样才能使用su这个命令。(以上这些思路是参考别人的思路理解的)
上网找rbash的绕过方式,发现有两种,我们就取一种来做就行。
首先输入BASH_CMDS[a]=/bin/sh;a
;
其次输入export PATH=$PATH:/bin/
;
最后输入export PATH=$PATH:/usr/bin
。
执行完上面三行代码后即可绕过rbash。照网上的说法,三步的解释依次是把/bin/bash给a变量、将/bin 作为PATH环境变量导出、将/usr/bin作为PATH环境变量导出。
11.tom提权至jerry账户
成功绕过后,接下来就要着手准备提权操作了,执行命令su jerry
,密码就使用jerry的密码,成功登录。
虽然登录的是jerry的账户,但是刚登进去时用的还是tom的目录,因此我们需要先将目录转到jerry的目录。
首先cd /home
转到home目录,其次用ls
查看一下home里面有什么,最后cd ./jerry
成功进入jerry目录。
12.flag4出现
进入jerry目录后,使用ls
命令查看目录里面有什么。
发现有flag4,用cat flag4.txt
查看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(唯一的真正的flag)。
这里已经没有提示了,现在需要靠你自己了。
走吧,出去!!!
这里作者跟我们说没有提示了。
好了,走到这一步我们需要先缓一下,想想下一步需要干什么。作者已经没有给我们提示了,我们需要捋一下先前我们做了什么,有什么遗漏的地方。从最先的发现web页面,到爆破账号,再到ssh登录,提权,有说明地方我们没有用到呢?没错,admin账号,admin虽然没有爆破成功,不能直接利用,但这侧面说明了jerry并不是最高权限,在ssh的某个地方必定还有一个连jerry都打不开的目录,很可能就是root目录,且需要root权限,所以接下来我们的目标就是再一次提升权限。
13.权限再次提升,拿到root权限
在先前flag4的内容中,有一个小小的词汇可能会有利用价值——git。我们都知道,有一种提权方式是git提权,那这是否意味着我们接下来需要使用git提权来拿到root权限呢?我们试一下。
上网查找git提权的方法,输入命令sudo git -p help
。
最后发现轻易地提权成功了,说明我们先前的思路是对的。
14.拿到最终flag
有了root权限我们就可以为所欲为了,没有什么可以限制我们的了。
首先用cd /
返回根目录→ls
查看根目录内容,发现有个root目录,显然,它就是我们的目标了→cd /root
进入root目录→ls
查看root目录内容,发现final-flag→cat final-flag.txt
查看最终flag内容,游戏结束~~~
心得体会
我这次的靶场渗透相对于DC-1的渗透有了很明显的进步,DC-1的靶场渗透我还只能照着别人的方法一步一步走,丝毫脱离不了别人的思维限制,但这次的靶场渗透我能够独立地去完成,除了一些地方还需要依靠一下别人的思路,大部分的步骤我都能够自己独立地去思考去完成了,自我感觉真不错。