Vulnhub -> DC-1

一、测试环境

DC-1、Mac、kali

VM名称:DC-1
下载(镜像)https://download.vulnhub.com/dc/DC-1.zip
描述:DC-1是一个专门构建的易受攻击的实验环境,目的是获得渗透测试的经验。
它的设计对初学者来说是一个挑战,但是它的难易程度取决于您的技能和知识以及学习能力。要成功完成此挑战,您需要具备Linux技能,熟悉Linux命令行以及具有使用基本渗透测试工具(例如可在Kali Linux或Parrot Security OS上找到的工具)的经验。
有多种获得root的方法,但是,其中包含了一些flag,这些flag包含了一些线索。
总共有五个flag,但是最终目标是在root的主目录中找到并读取该flag。您甚至不需要成为root用户即可执行此操作,但是,您将需要root特权。
根据您的技能水平,您可能可以跳过查找这些标志中的大多数标志并直接寻找根。
初学者可能会遇到他们以前从未遇到过的挑战,但是Google搜索应该是获得完成此挑战所需信息所需要的全部。

靶机DC-1

二、渗透过程

1、端口扫描

2、信息收集

访问下80端口的http服务192.168.0.102,发现是一个Drupal的CMS,使用whatweb查看以下具体信息,发现是一个Drupal的CMS且版本为7。

所以我们可以直接在网上搜索这个cms的漏洞利用方式

3、漏洞分析

使用Metasploit来进行查找这个cms在msf中能进行利用的exp

4、漏洞利用

尝试使用最新的漏洞exp进行攻击。选择使用某个脚本之后要使用show options命令查看脚本所需设定参数,一定要设定好required项是yes的参数,之后使用exploit命令进行攻击。

show options:显示配置参数,其中RHOSTS是必填项

进行反弹shell~

  • set RHOSTS 192.168.43.6
  • exploit 看到提示Meterpreter session 1opened并出现 meterpreter> 说明攻击成功。
  • shell 执行命令shell命令获得shell
  • whoami 查看当前用户
  • ls 查看当前目录下文件

查看第一个flag文件。

flag 1 ~

虽然shell已经进入,但它并不是交互的shell,所以我们要进入交互式的shell。靶机有python环境,使用python反弹交互式shell。

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

drupal的配置文件是 /sites/default/settings.php ,是数据库连接配置文件。

cat settings.php就发现了flag2和数据库账号密码。

flag 2 ~

5、数据库爆破

由于Drupal的默认配置文件为 /var/www/sites/default/settings.php,查看发现了flag2和数据库的账号密码,我们接着进入数据库查看。

登录数据库
mysql -u dbuser -p
username => dbuser
password => R0ck3t
database => drupaldb
数据库基本操作-查看一波
show databases;
use drupaldb;
show tables;

发现用户表为users,注意Drupal框架默认的用户表就是users表。

查询admin用户
select * from users;
select name,pass from users;

发现admin账号和经过加密的密码,flag2中给的提示暴力破解不是唯一的方法,而且密码加密且不是md5方式。如何破解密码是接下来的关键。

6、破解密码

利用PHP脚本修改管理员密码

由于很多在线MD5爆破和MD5数据库,可以查到很多MD5码的原文,所以Drupal 7已不再采用Drupal 6和5简单的MD5加密,而是采用一种新型的Hash加密方法。新型加密方法是“加了盐(Salt)”的MD5码,简单理解就是并不会直接将password进行MD5加密,而会和用户名或其它随机字符串组合在一起后再MD5加密。

第一个破解方法是利用Drupal 7安装目录的scripts目录下,有一些Drupal 7开发者准备好的PHP脚本,可以执行一些高级操作。其中有一个脚本名为password-hash.sh,它的功能是传入一个密码(字符串),即返回加密后的密码字符串。

由于Drupal 7对数据库加密的脚本位于网站根目录scripts下,利用该脚本修改为新密码123456,基本流程如下:

php scripts/password-hash.sh 123456
password: 123456 		
hash:$S$Dx65JxyHXK7If0aMbmgYw/vr6CGUh9gwljvp8Vrb390zdXE/Lrnr
接着我们再次登录数据库。
mysql -u dbuser -p
使用update语句修改密码,代码如下:
use drupaldb;
select name,pass from users;
update users set pass=’$S$Dx65JxyHXK7If0aMbmgYw/vr6CGUh9gwljvp8Vrb390zdXE/Lrnr’ where name=‘admin’;(这里的值兑换成自己的值)
select name,pass from users;
对原密码进行替换,再登录web服务,得到flag3。
admin
123456

可以在People页面看到我们的管理员用户信息。而对应的Flag3如下图所示。

得到 flag 3 ~

flag3的提示需要提升权限,使用“-exec”在shadow文件中,接下来需要先查看用户列表。

7、获取用户信息

flag3的提示提到了权限,于是我们尝试查看用户列表。

cat /etc/passwd

注意,/etc/passwd包含系统所有账户信息,只有超级用户才有写和访问。该文件每个用户占一行用,分隔成七个字段。如下图所示:

发现flag4用户,接着切换到falg4的home目录,发现flag4.txt文件。flag4提示flag in root,接下来我们需要提权。

flag 4 ~

8、提权

我们使用find获取root权限相关的信息,如下图所示:

find命令是用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并将查找到的子目录和文件全部进行显示。
find(选项)(参数)
-exec<执行指令>:假设find指令的回传值为True,就执行该指令
-perm<权限数值>:查找符合指定的权限数值的文件或目录

发现最终flag文件,但是无权限打开,flag3中提醒需要使用“-exec”提权。

接着进行root提权
mkdir test
find test -exec ‘/bin/sh’ /;

前面在flag4中提示最后一个flag在root根目录,接着进入到根目录/root下找到thefinalflag.txt文本。

flag 5 ~

三、总结

最终五个flag全部找到,游戏结束!DC-1这个靶机的综合性挺强的,也非常有趣。

其实DC-1这个靶机可以拓展的知识点太多了~

上一篇
下一篇