vulnhub-DC1
vulnhub是一个有各种靶机的网站,用来练习渗透是一个不错的选择。要注意这个并不是p神的那个vulhub,vulhub是各大公开的漏洞,要用docker运行,这里vulnhub是用虚拟机的。
flag1
打开DC1靶机,看到直接就让登录,我想这怎么搞啊。看别人的解析,原来是这个靶机只是开着就行了,下面就在攻击机进行渗透。也对,要是直接登录了,还算什么渗透呀。
但现在,靶机的IP和端口都不知道,这里用kali的nmap扫描整个子网段。因为都是在虚拟机上运行的,网络模式也是NAT的,这两个机子都是在同一个网段的,并不需要特别的配置。
能看到两个开放端口的主机,第一个测试后是我本机的IP,因为这个时候我本地还在运行一个PHP网站,试一下就知道了。判断下面的IP是靶机IP,因为开了80端口,就直接浏览器访问。看到是一个管理网站,用Drupal驱动。看到Power by,就认为它可能是一个模版网站,这样的网站通常都有对应的版本漏洞。
到网上搜一下,看到就有相关的漏洞分析。
打开msfconsole,查找相关exp。
选择2018年的那一条,设置好远程主机,运行exp。
看到建立了连接,输入shell,获得普通用户权限。
查看当前目录,找到flag1。提示我们找config文件。
flag2
之前进入的shell并不是交互的,用python -c 'import pty;pty.spawn("/bin/bash")'
即可进入交互式的shell。
drupal的配置文件为/sites/default/settings.php
,是数据库连接配置文件。
找到之后查看内容,看到第二个flag,获得了数据库的账户和密码。
flag2提示暴力破解和字典攻击并不是唯一获取访问的途径,毕竟他已经把数据的账户和密码给出了,就连接查看数据库。
显示数据库,再查看主要数据库的表。
看到用户表为users。
我们查看name和pass。
看到账户和加密的密码,flag2提示暴力破解并非唯一的方法,下面就去破解密码。
flag3
由于很多在线MD5爆破和MD5数据库,可以查到很多MD5码的原文,所以Drupal 7已不再采用Drupal 6和5简单的MD5加密,而是采用一种新型的Hash加密方法。新型加密方法是“加了盐(Salt)”的MD5码,简单理解就是,并不会直接将password进行MD5加密,而会和用户名或其它随机字符串组合在一起后再MD5加密。
在Drupal 7安装目录的scripts目录下,有一些Drupal 7开发者准备好的PHP脚本,可以执行一些高级操作。其中有一个脚本名为password-hash.sh,它的功能是传入一个密码(字符串),即返回加密后的密码字符串。我们可以利用它,生成一个我们知道密码,再用该密码替换原admin密码。
Drupal 7对数据库加密的脚本位于网站根目录scripts下,利用该脚本修改为新密码123456。先退出mysql,切换到www目录下,看到scripts。使用php scripts/password-hash.sh 123456
,得到加密的密码。
下面再次登录数据库。
选择数据库之后,修改用update语句更改密码。
用admin和123456登录cms,在Content看到flag3。
查看flag3内容,提示:特殊的文件保留权限(Perms)会帮助找到密码,你需要用-exec执行命令来获得shadow文件信息。
flag4
先查看密码,看到了flag4用户。
切换目录,查看flag4,提示我们查看root用户的flag。
flag5
我们查找root,find /root
,看到最后一个flag在root目录下面。
当想切换到root目录下面,会提示没有权限,就需要提权了。
使用命令:
- mkdir test
- find test -exec ‘/bin/sh’ /
看到我们获取了有root权限的shell,直接查看最终的flag。
上面提权的方法叫做suid提权,学一下提权的原理。
suid是其他用户执行这个程序的时候可以用该程序所有者/组的权限。suid提权可以理解为某个文件有s标志,并且如果该文件拥有者为root,当我们运行这个文件时就可以有root的权限。前面的提权就是如此,find命令找到了文件夹test,下来以root权限执行/bin/sh,就获得了root权限的/bin/sh。常见suid提权的命令包括nmap、vim、find、bash、more、less、nano、cp等。
回顾过程
- 信息收集
- 目标IP探测
- Nmap端口扫描
- CMS漏洞搜索
- 识别Drupal CMS管理系统
- 搜索Drupal漏洞编号CVE-2018-7600
- msf漏洞利用
- 搜索drupal漏洞
- msf使用漏洞并配置参数
- 反弹shell
- 敏感信息分析
- python交互反弹shell
- 获取数据库账户密码
- 数据库密码修改
- 搜索drupal数据库密码信息
- 利用脚本生成密码并替换管理员密码
- suid提权
- 查看最终flag
参考