VulnHubDC系列新手教程之DC1靶机渗透测试
角石角石
2020年04月15日 15:26

前言

Vulnhub是一个提供了带有各种漏洞的靶机网站,特别适合初学者渗透测试实战演练,我接下来对于vulnhub的DC系列九个靶机通过图文结合的方式做出详解,我们不仅仅要完成靶机作者所要求的任务,而且还应该发散思路寻找不同的方法寻求突破! 

靶机配置及说明

靶机下载地址:https://www.vulnhub.com/entry/dc-1,292/

靶机:DC1 (VirtualBox)       IP:192.168.1.13

攻击机:Kali(VMware )        IP:192.168.1.10

特别说明:每个靶机作者都对靶机做了详细的描述以及攻击目标,比如DC1就需要找到5个flag,最终目标是在root的主目录中找到并读取该标志!

通过每个flag所获得的知识点

1.msf的熟练使用以及搜索可利用漏洞(Drupal)

2.留意目标网站的配置文件(more慢慢查看别错过重要信息)

3.数据库管理员提权(更新管理员密码或者添加一个新用户)

4.suid提权的命令(nmap、vim、find、bash、more、less、nano、cp)

正文开始!!

开始之前让我们先来看看靶机与攻击机的配置,两者均是桥接模式(建议靶机和kali都保存快照,以便不时之需)

靶机配置

靶机正常运行

kali配置

下面我们一步一步来,首先查看Kali的ip得到192.168.1.10

nmap探路,查看靶机IP得到192.168.1.13

继续nmap嗅探其他相关靶机其余信息,发现开放22/80

那我们就先访问80端口Web界面,通过插件看到CMS是Drupal 7

那我们继续查看robots.txt看看有没有有用的信息

我们并没有得到有用的信息,只是找到了几个没啥用的页面,那我们继续扫描一下目录

扫描依旧也没有什么结果,那我们换个思路,利用msf寻找一下是否有可用的漏洞

OK!这里我们可以依次利用一下,看看哪个模块可以成功来利用,这里我就使用第四个Drupalgeddon2漏洞(CVE-2018-7600),

Drupal系统没有对表单API接口的AJAX请求输入进行充分的检查,这就使得攻击者能够向内部表单结构中注入一个恶意的载荷。这将导致Drupal系统在未进行用户认证的情况下执行这个载荷。通过利用这个漏洞,一个攻击者能够接管任何Drupal系统用户的整个站点。这里可以参考一下https://bbs.pediy.com/thread-226461.htm

这里我们只需要设置靶机的IP就可以执行exploit

我们可以看到打开session连接到靶机,接下来我们继续反弹一个交互的shell

我们可以看到自己当前的权限以及所在路径,那我们ls查看一下其他文件

我们顺利拿到第一个flag,同时也拿到了提示信息(寻找配置信息百度即可知道默认配置信息位置),这里最好用more查看不至于落掉重要信息

我们顺利拿到了数据库的一些关键信息(数据库名、登录名、密码),那我们顺着线索继续登录数据库

继续查看数据库信息,寻找关键线索flag3

到此我们也看到了flag3到底在哪里了(uid为1的用户是不受Drupal权限管制的,具有最高权限。),现在我们有两个思路

一、我们重置管理员的密码

使用Drupal对数据库的加密方法,加密脚本位置在网站根目录下的scripts下,使用加密脚本加密新密码666666,生成加密密文,然后登录系统查看flag3

得到666666的hash值,接下来我们需要重置管理员的密码为666666,还是得进入数据库直接更新密码(当时手滑忘了加分号)

那我们用 admin 666666 尝试登录查看flag3

我们在content查找到flag3

二、我们添加一个管理员权限的用户 这里需要我们查看一下靶机的版本,然后看一下有没有适用的脚本去添加用户,首先我们查看一下靶机版本

得到版本号为7.24,继续搜索Druapl可利用的脚本

我们发现只要小于7.31即可利用

那我们使用user user 尝试登录

成功登录,同样查看flag3信息

到此我们成功利用两种不同思路得到了flag3得信息,得到几个关键线索(FIND the passwd、need to -exec that command、in the shadow),那我们就按照线索提示寻找这个密码

很明显flag4在/home/flag4目录下

顺利得到flag4,同时根据提示(你可以用相同的方法在root目录下

找到最终flag

思路一:根据提示 想到suid提权

那么我们查找一下具有root权限的其他命令,以下几条均可查询

find / -user root -perm -4000 -print 2>/dev/null find / -perm -u=s -type f 2>/dev/null find / -user root -perm -4000 -exec ls -ldb {} ;

发现find命令本身就是root权限,那我们查看一下

那我们利用find提权

思路二:既然所有通过find执行的命令都是root权限,那我们利用

netcat,可以将它提权为root 权限,首先我们创建一个文件

继续利用find将netcat提权为root 权限

同样的也获得最终flag!欢迎留言交流!接下来继续探索DC2