avatar

目录
vulnhub-DC2

flag1

用nmap扫瞄子网段,确定靶机IP。

此时需要在本机的hosts文件加一个域名解析,不然会出错,这里为192.168.123.147 dc-2。我想是因为访问这个IP,会自动跳转到http://dc-2,要不加解析,就变成向DNS服务器寻求解析了,而DNS服务器显然是没有这个的,会造成无法访问页面。

这里需要再用nmap扫描一下目标IP的65535个端口,防止错失一些端口信息。看到有80和7744端口。nmap好像默认是扫前1000个端口,这里就用-p-让它扫全部端口。

看到靶机开放有80端口,浏览器访问,可以看到第一个flag。提示我们惯用的字典可能不管用,让我们cewl。

flag2

cewl是一个从目标网站选取关键词,并生成字典的工具。这里生成一个字典dc_passwords.txt。

但我们此时还没有用户名,不知道怎么登录。用谷歌插件Wappalyzer,看到是一个WordPress的CMS。

WPScan是很多安全系统默认自带的一款漏洞扫描工具,它采用Ruby编写,能够扫描WordPress网站中的多种安全漏洞,其中包括主题漏洞、插件漏洞和WordPress本身的漏洞。最新版本WPScan的数据库中包含超过18000种插件漏洞和2600种主题漏洞,并且支持最新版本的WordPress。值得注意的是,它不仅能够扫描类似robots.txt这样的敏感文件,而且还能够检测当前已启用的插件和其他功能。

WPScan常用参数如下:

  • –url 目标网站地址
  • -e, –enumerate [OPTS] 枚举
    • vp 枚举有漏洞的插件
    • ap 枚举所有插件
    • p 枚举所有插件
    • vt 枚举有漏洞的主题
    • at 枚举所有主题
    • t 枚举流行的主题
    • tt 枚举缩略图
    • cb 枚举备份配置文件
    • dbe 导出数据库
    • u 枚举用户
    • m 枚举媒体
  • -t, –max-threads VALUE 最大线程数,默认为5
  • -U, –usernames LIST 枚举用户
    • –password-attack ATTACK 指定用户爆破密码
  • -P, –passwords FILE_PATH 爆破密码,当没有指定用户时候,会默认使用-e u枚举出来的用户进行爆破

使用wpscan命令wpscan --url https://dc-2扫描,看到一些配置信息,还能看到当前版本不是最新的,就有可能存在漏洞。

再用wpscan --url https://dc-2 -e u,枚举WP的用户。

使用之前的生成的密码字典爆破,wpscan --url https://dc-2 -e u-t 50 -P dc_2passwords.txt。看到两个账户和密码。

那有了账户和密码怎么登录呢,网页上又没有登录接口。查了一下,知道WordPress的后台地址为wp-admin,访问http://dc-2/wp-admin,就会有登录页面。输入jerry和密码,登录成功。在Pages页面找到第二个flag,提示我们如果无法利用WordPress并采取捷径的话,换另一种方法。希望我们找另一个入口点。

在查找网站域下面的地址时,用kali下的dirb也是一个不错的选择。

flag3

另一个入口点在哪儿呢,这时想到之前的SSH端口,尝试去登录一下。用jerry试了几次,都发现登录失败。

那就换下一个账户,登录成功。

ls后,看到第三个flag。想直接查看时,发现出错:命令没找到。

rbash全称Restricted Shell,是一个被阉割的shell,只能使用被指定的命令。而且使用了rbash,还会有以下限制(禁止事项):

  1. 使用cd来改变路径
  2. 设置或取消SHELL,PATH,ENV或BASH_ENV变量的值
  3. 指定的命令里包含/
  4. 指定包含/的文件名作为传递参数给内建命令的参数
  5. 指定包含斜杠(slash)的文件名作为-p选项的参数,传递给hash内建命令
  6. 启动时从shell环境中导入函数定义
  7. 启动时解释shell环境中SHELLOPTS的值
  8. 使用 >, >|, <>,>&, &>, >>等重定向操作符重定向输出
  9. 使用exec内建命令来意另一个命令替换shell
  10. 使用enable内建命令的 -f 和 -d 选项来增加和内建命令
  11. 使用enable内建命令来允许和禁止shell内建命令
  12. 指定command内建命令的 -p 选项
  13. 使用set +rset +o restricted来关闭受限模式

知道有了许多限制之后,就先看我们能使用哪些命令,用echo $PATH查看环境变量。我们不能使用cd,那就使用ls来查看目标文件夹内容。

看到less命令,就想到之前的suid提权就有它。我想用它提权,发现rbash限制执行命令后再输入’/‘,么的办法。vi命令可以直接用来编辑文件,那直接用它也能查看文件内容。(其实也可以用less查看,less可以指定行数,输出文件后面几行内容)查看flag3.txt,看到提示:可怜的老汤姆总是追逐着杰瑞。也许他应该承受自己所造成的所有压力。

flag4

上面提示杰瑞,可能在jerry用户下面有信息。

查看内容,提示:还没有到家,需要找到最终的flag。

flag5

还有最后一个,说没其他提示,可能就是root权限了。说没提示,但还是有的,上面最后一行:继续,git离开这里。离开哪里?离开这受限的rbash。怎么离开?git提权。前面常见的suid提权没有这个,长见识了。但git提权是要sudo命令的,还是先要跳出这个rbash。绕过限制的方法为下面几条的命令,执行完毕就可以执行其他命令。

BASH_CMDS[a]=/bin/sh;a        # 把/bin/sh赋值给BASH_CMDS[a]变量
/bin/bash
export PATH=$PATH:/bin/        # 将/bin作为PATH环境变量导出
export PATH=$PATH:/usr/bin  # 将/bin/bash作为PATH环境变量导出

git提权方法(两种):

sudo git help config
    !/bin/bash # 或者 !'sh'  完成提权

sudo git -p help 
    !/bin/bash

尝试的时候,发现tom并没sudo这个命令。

那尝试换到jerry,发现是可行的。

进行git提权。

发现我们已经是root用户了。

切换到root根目录,看到最后的flag。

回顾过程

  1. 信息收集
  • 目标IP探测
  • Nmap端口扫描
  1. CMS漏洞搜索
  • 识别WordPress CMS管理系统
  • 使用WPScan扫描
  1. 生成字典并爆破
  • bewl生成字典
  • WPScan扫描账户
  • 爆破账户密码
  1. SSH连接
  • 绕过rbash切换用户
  1. git提权
  • 查看最终flag

参考

[1] VulnHub DC-2 入门靶机初探

文章作者: crownZ
文章链接: https://crownz-sec.github.io/2020/05/17/vulnhub_DC2/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 crownZ's Blog

评论