DC-1靶场渗透实验

一、环境准备

Kali虚拟机

DC-1靶场http://www.five86.com/downloads/DC-1.zip

首先将kali虚拟机和靶机DC1都设置为net模式

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_15,color_FFFFFF,t_70,g_se,x_16 

ifconfig查看kali的IP为192.168.152.128

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16

使用nmap扫描此网段下的主机

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

启动DC-1靶机

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

再次扫描得到DC-1靶机的IP地址为192.168.152.138

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

二、实验过程

使用nmap针对该IP进行详细扫描

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

发现打开了22、80和111的端口,还开启了ssh服务

访问发现80端口可以访问,如图

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

是一个登录界面

这里很明显的可以看到

Powered by Drupal由 Drupal 提供支持,后面会用到

在使用burpsuit尝试进行爆破登录时被锁定了

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16  

使用御剑扫描也没有找到其他页面

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

尝试使用awvs进行扫描

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

发现存在远程代码执行(SA-CORE-2018-002)漏洞

使用msfconsole工具搜索该漏洞

直接在kali下调用该工具

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

search SA-CORE-2018-002

搜索该漏洞及利用方式

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

use 使用该模块

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

show options查看此模块中我们还需要设置的选项,为YES且空的就是还需要我们设置的

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

如图RHOST(目标IP地址)为YES但是还没有设置

使用set设置目标IP

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

Exploit进行攻击

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

如图攻击成功发现第一个flag,并提示我们

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

翻译如下

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

提示我们去找该CMS的配置文件

我们按渗透的常理来说一般都会尝试去看一下像账户、密码这样重要的文件,于是我们在/etc/passwd配置文件下找到一个flag4用户,在flag4用户的家目录/home/flag4下找到了flag4

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16

根据flag1的提示我们去找此网站CMS的配置文件

前面我们发现网页有Powered by Drupal的指纹,说明此网站采用Drupal的开源内容管理框架(CMF)

搜一下drupal的配置文件

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

在sites/default/下

我们去到此目录

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

发现三个文件

逐个打开发现flag2在setting.php文件中

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

翻译过来就是

爆破攻击和字典攻击不是 获得访问权限的唯一方法(您将需要访问权限)。你能用这些证书做什么?

提示我们暴力破解不行,只能获取权限

同时也发现数据库的大量信息username、password等

所以接下来我们进行提权

利用python的内置模块pty中的spawn()方法

构造命令

python -c 'import pty;pty.spawn("/bin/bash")'

实现交互式shell

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

尝试登录MySQL数据库

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

登录成功

由前面发现的信息可以知道密码存放在drupaldb数据库users表中

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

我们可以看见用户名为admin的账户,并且看到其密码,但是被加密了

我们使用hash-identifie工具查询一下它的加密方式

新建一个终端

直接输入hash-identifie打开 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

粘贴admin的密码

发现找不到此密码采用的加密方式

搜索发现正是因为查询不到其加密方式,所以暴力破解是无法攻破的,需要利用Drupal 7的一个脚本文件password-hash.sh

exit  退出数据库

cd /  回到根目录

find / -name password-hash*

在根目录下查询所有名字中带有password-hash的所有文件

如图找到此脚本的位置在/var/www/scripts/下

此脚本的使用需要在/var/www目录下

cd /var/www到此目录

运行scripts/password-hash.sh 10010

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

得到10010通过此加密方式加密的结果

接下来进行密码替换

回到数据库

执行

update users set pass=’$S$DvKJG.ztCY1wgzNfTFGwQO2jFdKS8fhaMnWIjZAVNEkrVOdfpDhe’ where name =’admin’;

替换密码

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

如图替换成功

尝试在网页登录

登陆成功后在如图所示位置找到flag3

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16  

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

flag3的信息中提到了passwd和shadow,很明显就是/etc/passwd和/etc/shadow,还提到了find、perms、-exec,应该是提权用的。

前面我们已经发现了flag4了,这里学到了另一种方法得到flag4

根据提示在/etc/passwd下发现一个flag4的账户

但是查看/etc/shadow失败,看不到密码

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

因为前面在扫描的时候发现靶机开启了ssh远程服务

现在又发现这个flag4的用户

新建一个终端

使用hydra工具尝试进行密码的暴力破解

sudo hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.152.138

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

得到用户名密码flag4/orange

尝试登录靶机

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

如图登录成功找到flag4

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

Flag4提示下一个flag在root目录下

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_19,color_FFFFFF,t_70,g_se,x_16 

但是没有权限访问

我们使用具备root权限的SUID文件进行提权,SUID可以让调用者以文件拥有者的身份运行该文件,利用SUID提权的思路就是运行root用户所拥有的SUID的文件,那么我们运行该文件的时候就得获得root用户的身份了。

使用find查询具有root权限的SUID的文件

find / -perm -u=s -type f 2>/dev/null

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

可以看到find命令有SUID权限,如果find以SUID权限运行,所有通过find执行的命令都会以root权限运行

查找根目录下名为jwt的文件并执行shell

touch jwt

find / -name jwt -exec “/bin/sh” \;

whoami查看拿到了root权限

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDmmI7ml6XkuI3lho0,size_20,color_FFFFFF,t_70,g_se,x_16 

cd /root

ls

cat thefinalflag.txt

拿到了最后的flag。