# 前言
还是接着补充这个系列的第二篇,只能说这个系列确实经典,但是也很简单,我原称之为 vulnhub 中的 dvwa,武术界的马保国
# 环境搭建
地址:DC: 2 ~ VulnHub
攻击机:kali
使用 VMware 搭建环境(这个参考这个系列的上一篇即可 DC-1 - Vulnhub | Clown の Blog = (xcu.icu),环境搭建都一样,这里我还是将网络模式改为了 nat)
# 打靶流程
这里插一句,本来我一直写攻击流程,但是实验环境还是太理想,这里就改一下
还是使用 nmap 来进行主机发现
然后进行端口扫描
这里发现了两个端口存活,这里使用 - sV 参数来进行对应的协议的发现
这里可以看到 80 端口是一个 Apache 的 httpd 服务,7744 端口是一个 OpenSSH 的服务,版本是 6.7p1,这里用的不是一个很常规的端口,所以这里需要留意一下。说不定后面用得上。
这里访问目标的 80 端口发现这里会跳转到 dc-2 这个页面
很显然这里是被重定向了,可以使用 burp 来验证一下
这里可以看到对 192.168.246.145 这个 ip 发起了一个 get 请求,响应码是 301 证明了我们的猜想
解决方式也很简单,修改一下我们的 host 文件即可
vim /etc/hosts |
修改成上图这个样子即可,这里再去访问就可以了
这里先用 whatweb 来做一个 cms 识别
WordPress 的 cms 版本是 4.7.10,这里
这里前面几个页面讲的一些奇怪的东西我只能说理解不了,但是这里有一个 flag 页面
很显然这是作者给的一个提示
Your usual wordlists probably won’t work, so instead, maybe you just need to be cewl. | |
More passwords is always better, but sometimes you just can’t win them all. | |
Log in as one to see the next flag. | |
If you can’t find it, log in as another. |
我的英语水平额,,,,不提也罢,不过不是可以查嘛,就直译就可以:
你平常的字典或许没有作用,因此作为替代,可能你需要 cewl
cewl 是一个 ruby 应用,爬行指定 url 的指定深度。也可以跟一个外部链接,结果会返回一个单词列表,这个列表可以扔到 John the ripper 工具里进行密码破解。cewl 还有一个相关的命令行工具应用 FAB,它使用相同的元数据提取技术从已下载的列表中创建作者 / 创建者列表。
密码越多越好,但有时你就是无法赢得所有的密码。
以一个人的身份登录以查看下一个标志。
如果找不到,请以另一个用户登录。
在这里贴一个网上找到的 Cewl 使用指南 Kali Linux 字典生成工具 Cewl 使用全指南 - FreeBuf 网络安全行业门户,很显然这里需要用这个工具来生成一个字典,然后用这个字典来登录某个用户
这样使用就比较麻烦,使用 - w 参数,或者直接将结果重定向到一个字典
现在根据提示拿到了一个字典,但是根据提示来说很显然我们需要一个登录的地方来使用我们的字典,这里其实我的第一反应是有两个地方可能会用的上这个字典的,一个是前面收集到的端口 ssh,还有一个就是 web 服务的管理页面,这里就需要进行目录爆破来收集一下信息
这里就可以看到有一个 login.php 的页面,这里还看到了有两个特殊的也值得关注一下,一个是 /wp-includes/、一个是 /wp-admin/install.php。第一个是因为这里的 include,这里就可以存在文件包含之类的问题。另一个是 install 这个文件,这个安装文件正常情况下,安装完成后删除是比较合理的
可惜的是这两个地方我没有找到可以利用的地方,但是这里在 readme 文件,有或者是这个 install 路由都可以很确定这是一个 WordPress 的 cms,可以使用 WPScan 做一些扫描
wpscan --url http://dc-2 --enumerate p#扫描插件 |
wpscan --url http://dc-2/ --enumerate u#猜解后台用户名 |
可以看到这里是有三个用户的 admin、jerry、tom。这下用户名密码都有了分别尝试用三个用户登录,到这里实际上就理解了前面的提示中所说的 “如果找不到,请以另一个用户登录”。这里还是使用 WPScan 来做
这里可以看到 jerry 和 tom 是能够正常登录的,这里登录看一下
在 jerry 用户的 page 中发现了第二个提示
If you can't exploit WordPress and take a shortcut, there is another way. | |
Hope you found another entry point. |
,,,直接上翻译
另一个入口,很显然是中上面我已经提到的那个奇怪的 ssh 端口,这里尝试用这两个账号去连接 ssh
尝试后发现 tom 是可以直接用上面的账号登录的,这里可以看到当前的 home 目录下面似乎又是一个提示
当我想要打开的时候我发现这里被 rbash 限制了,也就是限制型 bash;是平时所谓的 restricted shell 的一种,也是最常见的 restricted shell(rbash、ksh、rsh 等),这里先查看有哪些命令是可用的
compgen -c |
这里可以看到有 less、scp、vi 这些都是有机会实现 rbash 逃逸的
这种利用打开文件后可以在下面运行命令的特点显然是不能成功的,因为这里的斜线会被检测出来
内容还是能够正常读取的
Poor old Tom is always running after Jerry. Perhaps he should su for all the stress he causes
这个内容似乎没有什么很明显的提示,还是要研究一下 rbash 逃逸,最后经过尝试这个 vi 是可以成功的
直接输入 vi 命令,然后交互处执行下面的命令设置环境变量
然后再交互执行 shell 即可
这样就成功了
但是发现这里虽然 cd 可以使用了,但是 id 和 whoami 等命令还是不能使用
这里看了一下环境变量,发现当前的 PATH 只有当前用户的 /usr/bin
显然就只能使用者几个命令,这里修改环境变量
export PATH=$PATH:/bin/ | |
export PATH=$PATH:/usr/bin |
修改后再次查看
这时就可以使用 /bin 和 /usr/bin 下的命令了
当前用户只是一个普通的权限,现在该思考的就应该是怎么提权
在 home 目录中发现这台靶机还有一个 jerry 用户,前面使用 WPScan 扫描出来了两个用户就有他的密码,这里尝试 su 到 jerry 用户下
这里就直接到 jerry 这个用户下了,很显然开始不能直接使用 ssh 连接是因为做了一些限制
Good to see that you've made it this far - but you're not home yet.
You still need to get the final flag (the only flag that really counts!!!).
No hints here - you're on your own now. :-)
Go on - git outta here!!!!
还是上翻译
这里不是最终的目的,我们还需要拿到 root 权限,这里说没有提示,那么还是按照之前的提权思路,先查看可以使用 root 权限无密码的命令
这里看到 git 这个命令是可以直接使用 root 权限的,上面最后一句还是提到了 git outta here,这样看来实际上还是有提示的::🐱,这里也是去网上翻阅了一下 git 提权方法,实际上和前面的 vi 提权有些像的
sudo git -p help |
这里如果一只不成功实际上有一个小坑:
终端如果太大,显示信息就会在一个页面全部显示出来,这时会直接结束;所以需要把终端调小一点,让其在一页显示不出来,这时才可以输入接下来的命令