萌新教程丨VulnHubDC系列之DC1靶机渗透测试
Vulnhub是一个提供各种漏洞的靶机网站,特别适合萌新进行渗透测试演练。接下来笔者将通过图文结合的方式对于Vulnhub的DC系列九个靶机做出详解,不仅要完成靶机作者所布置的任务,还会发散思路用不同的方法寻求突破!
注:今天的文章是 i 春秋论坛作者小鲜略略略表哥发布的文章,公众号旨在为大家提供更多的学习方法与技能技巧,文章仅供学习参考。
靶机配置及说明
靶机下载地址:
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、留意目标网站的配置文件(慢慢查看别错过重要信息);
3、数据库管理员提权(更新管理员密码或者添加一个新用户);
4、suid提权的命令(nmap、vim、find、bash、more、less、nano、cp)。
进入正文
开始之前让我们先来看看靶机与攻击机的配置,两者均是桥接模式(建议靶机和kali都保存快照,以便不时之需)。
靶机配置
下面我们一步一步来,首先查看Kali的ip得到192.168.1.10。
nmap探路,查看靶机IP得到192.168.1.13。
继续nmap嗅探其他相关靶机其余信息,发现开放22/80。
那我们就先访问80端口Web界面,通过插件看到CMS是Drupal 7。
那我们继续查看robots.txt,看看是否有利用的信息:
我们并没有得到有用的信息,只是找到了几个没啥用的页面,那我们继续扫描一下目录。
扫描依旧也没有什么结果,那我们换个思路,利用msf寻找一下是否有可用的漏洞。
这里我们可以依次利用一下,看看哪个模块可以成功来利用,我使用第四个Drupalgeddon2漏洞(CVE-2018-7600)。
Drupal系统没有对表单API接口的AJAX请求输入进行充分的检查,这就使得攻击者能够向内部表单结构中注入一个恶意的载荷,将导致Drupal系统在未进行用户认证的情况下执行这个载荷。通过利用这个漏洞,一个攻击者能够接管任何Drupal系统用户的整个站点。
这里我们只需要设置靶机的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。
思路1:根据提示,想到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提权。
思路2:既然所有通过find执行的命令都是root权限,那我们利用netcat,可以将它提权为root 权限,首先我们创建一个文件。
继续利用find将netcat提权为root权限。
同样的也获得最终flag!