重邮信安集中实习第八天

目录

一、docker与docker-compose的安装

Docker

Docker的基本概念

Docker的安装

Docker Compose

Docker Compose的基本概念

Docker Compose的安装

服务启动与验证

二、vulhub漏洞复现

Tomcat弱口令/后台文件上传getshell

Weblogic弱口令/任意文件读取

apache换行解析

apache druid RCE

三、RCE漏洞的原理和利用条件及解决方案

RCE漏洞的原理

RCE漏洞的利用条件

RCE漏洞的解决方案


一、docker与docker-compose的安装

        Docker 和 Docker Compose 是两种流行的工具,它们在容器化技术领域中扮演着重要的角色。下面分别介绍这两个工具及其用途:

Docker

Docker的基本概念

        Docker 是一个开源的应用容器引擎,让开发者可以打包应用和依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

特点:

  • 便携性: Docker 容器可以轻松地在不同的开发环境、测试环境和生产环境之间迁移。
  • 一致性: 使用 Docker 可以保证开发环境与生产环境的一致性,减少了“在我的机器上可以运行”的问题。
  • 快速启动: Docker 容器几乎可以瞬间启动,比传统的虚拟机快得多。
  • 资源利用率: Docker 容器共享宿主机的操作系统内核,因此相比于虚拟机,它们使用资源更高效。

主要组件:

  • Docker 客户端: 用户与 Docker 引擎交互的界面。
  • Docker Daemon (守护进程): 运行在主机上的后台进程,负责接收客户端的指令并处理这些请求。
  • Docker 镜像: 一个只读模板,用于创建 Docker 容器。镜像是分层的,可以基于其他镜像构建。
  • Docker 容器: 由镜像创建的运行实例。每个容器都有自己的文件系统、IP 地址等。

Docker的安装

  1. 更新 apt 包索引:
    sudo apt-get update

  2. 安装几个必要的包,用于通过 HTTPS 进行包管理:
    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

  3. 添加 Docker 的官方 GPG 密钥:
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

  4. 添加 Docker 仓库到 APT 源列表中:
    echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Docker Compose

Docker Compose的基本概念

        Docker Compose 是一个工具,它允许定义和运行多容器的 Docker 应用。使用 Docker Compose,我们可以用 YAML 文件来配置你的应用服务,然后用一条命令,从这个配置文件(默认为 docker-compose.yml)中创建并启动所有服务。

特点:

  • 简化配置: Docker Compose 允许你在单个文件中定义多个服务及其依赖关系,这使得管理多容器应用变得更加简单。
  • 环境一致性: 不仅可以定义服务,还可以定义网络、卷等,确保开发、测试和生产的环境一致。
  • 可重复性: 使用 Compose 文件,你可以轻松地在不同环境中重现相同的服务配置。

相关概念:

  • 服务: 代表应用程序的一个组成部分,例如 Web 服务器、数据库等。
  • 网络: 用于定义服务之间的通信方式。
  • : 用于持久化存储,即使容器停止或重启,数据也不会丢失。
  • YAML 配置文件docker-compose.yml 文件描述了应用的所有服务,以及它们如何交互。

Docker Compose的安装

1.更新 apt 包索引:

sudo apt-get update

2.安装 Docker Engine:

1sudo apt-get install docker-ce docker-ce-cli containerd.io

3.确保是否安装了 curl 和 jq,如果还没有安装,则使用如下命令安装:

1sudo apt-get install curl jq

4.确定最新的 Docker Compose 版本:

1LATEST_DOCKER_COMPOSE_VERSION=$(curl -sL https://github.com/docker/compose/releases/latest | grep -Po '"tag_name": "v\K[^"]*')
2echo "Latest Docker Compose version is $LATEST_DOCKER_COMPOSE_VERSION"

5.安装 Docker Compose:

1sudo curl -L "https://github.com/docker/compose/releases/download/v$LATEST_DOCKER_COMPOSE_VERSION/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2sudo chmod +x /usr/local/bin/docker-compose

服务启动与验证

首先,启动 Docker 服务:

sudo systemctl start docker

然后,验证 Docker 是否安装成功:

docker version

最后,用下面代码验证docker-compose是否安装成功:

docker-compose --version


二、vulhub漏洞复现

Tomcat弱口令/后台文件上传getshell

        Tomcat 弱口令指的是 Apache Tomcat 服务器的管理界面或其它需要身份验证的部分使用了容易被猜测或破解的用户名和密码组合。

首先,用配置好的Docker环境去访问对应靶场的8080端口:

随后,点击“Manager App”,利用弱口令“tomcat”-“tomcat”,进行登录:

最后,即可登录成功:

Weblogic弱口令/任意文件读取

        WebLogic 服务器是由 Oracle 提供的企业级 Java 应用服务器,广泛应用于构建和部署企业级 Java 应用程序。

启动靶场后,访问console端口:

用弱口令“weblogic:Oracle@123”,即可登录:

Apache换行解析

        Apache 换行解析(Line Feed Parsing)通常指的是 Web 服务器在处理 HTTP 请求时,如何解析请求头中的换行符(newline characters)。

首先,启动靶场,访问对应端口:

因为,直接上传“.php”会提示“bad file”上传失败(如下图);上传其他文件又不会继续显示。下面,尝试将.php的文件头改成其他文件头:

修改完,再用蚁剑连接,即可成功:

Apache Druid RCE

        Apache Druid 是一个高性能、分布式的数据存储和查询系统,主要用于实时数据分析和报表展示。Druid 设计用于处理大量实时和离线数据,特别适合于实时监控和快速聚合查询。

首先,进入靶机对应的8888端口:

然后,尝试用BP拦截数据包:

        此时,发现:不需要任何修改都能执行成功。因此,直接将id内容修改为自己想执行的内容就可以了。


三、RCE漏洞的原理和利用条件及解决方案

定义:RCE漏洞,即Remote Code Execution(远程代码执行)漏洞,是一种严重的安全漏洞类型。它允许攻击者在受害者的远程系统上执行任意代码或命令,从而越过应用程序的正常边界,直接操控目标服务器或设备的核心功能。这种漏洞的出现往往是由于应用程序对用户输入没有进行充分的验证和过滤,导致攻击者可以通过构造恶意输入,让应用程序在执行过程中执行攻击者指定的代码。

RCE漏洞的原理

        RCE漏洞的产生通常是因为软件在处理外部提供的输入时没有进行充分的验证或过滤。当程序接收了不可信的数据,并且该数据能够影响程序的逻辑流时,就可能发生RCE。具体来说,RCE漏洞的形成机制包括以下几个方面:

  1. 输入验证不足:程序在接受用户输入时,如果没有对输入数据进行严格的检查,那么攻击者就可以通过精心构造的数据来诱导程序执行恶意代码。

  2. 代码注入:当程序将外部输入直接用于构建命令行参数、数据库查询语句、脚本代码或其他可执行表达式时,攻击者可以插入恶意代码片段,这些代码片段随后会被解释器或编译器执行。

  3. 环境配置不当:如果应用程序运行在一个配置不当的环境中,比如具有过多权限的执行上下文中,那么即使是一个小漏洞也可能导致严重的后果。

  4. 第三方组件缺陷:应用程序可能依赖于第三方组件或库,这些组件可能存在未被发现的安全漏洞,从而成为RCE攻击的入口点。

  5. 内存管理错误:编程中的内存管理错误,如缓冲区溢出、整数溢出等,也可能导致RCE漏洞。当程序未能正确处理边界条件时,攻击者可以利用这些错误来覆盖内存中的数据,进而执行任意代码。

RCE漏洞的利用条件

  1. 存在漏洞的应用程序:RCE漏洞首先需要存在于一个应用程序中,这可能是由于编程错误、设计缺陷或第三方组件的安全问题所引起的。漏洞可能存在于Web应用、桌面应用、服务器端程序等任何接受用户输入的地方。

  2. 网络可达性:攻击者必须能够通过网络访问到含有漏洞的应用程序或系统。这意味着目标主机需要暴露在Internet上或攻击者可以通过内部网络访问到它。

  3. 用户输入验证不足:应用程序在处理用户输入时没有进行充分的验证和清理,允许未经处理的数据直接影响程序的执行流程。这可能包括URL参数、表单输入、Cookies、文件上传等。

  4. 权限提升:即便应用程序本身存在漏洞,但如果它在受限的环境中运行,则攻击者可能无法利用漏洞获得太多权限。然而,如果应用程序以高权限运行,例如使用root或管理员权限,那么RCE漏洞的利用就可能导致整个系统的控制权落入攻击者手中。

  5. 社会工程学:有时,RCE漏洞的利用不仅限于技术层面,还可能涉及社会工程学技巧。例如,通过钓鱼邮件诱导受害者点击链接或下载附件,从而触发漏洞。

  6. 依赖关系:某些RCE漏洞的利用可能依赖于特定的软件版本或配置,例如旧版的Web服务器、数据库管理系统或是特定的操作系统环境。

  7. 可执行环境:为了执行代码,应用程序或系统需要提供一个能够解释或执行代码的环境。例如,如果漏洞允许攻击者上传PHP脚本,那么服务器就需要支持PHP脚本的执行。

  8. 缺少防护措施:如果目标系统没有部署适当的安全措施,如入侵检测系统(IDS)、入侵防御系统(IPS)、Web应用防火墙(WAF)等,那么RCE漏洞更容易被利用。

RCE漏洞的解决方案

1、更新和打补丁

  • 保持软件更新:确保所有应用程序、操作系统和第三方库都处于最新状态,及时安装官方发布的安全更新和补丁。
  • 自动化更新:考虑使用自动化工具来监控新发布的补丁,并自动应用到系统中。

2、输入验证与清理

  • 严格验证输入:对所有外部输入进行严格的验证和清理,确保只有预期格式的数据才能进入系统。
  • 使用白名单:只允许特定格式或类型的数据通过,拒绝所有其他类型的输入。
  • 避免直接使用用户输入:不要直接将用户输入嵌入到命令行参数、数据库查询或其他可执行结构中。

3、最小权限原则

  • 权限管理:确保应用程序和服务仅具有完成所需任务的最低权限,限制其执行潜在危险操作的能力。
  • 隔离环境:使用容器化或沙箱技术来限制应用程序的执行环境,减少其对系统的影响范围。

4、安全编码实践

  • 遵循安全编码指南:采用安全的编程习惯,避免使用已知的危险函数或API。
  • 代码审查:定期进行代码审查,查找潜在的安全漏洞。
  • 使用安全开发工具:利用静态分析工具和动态分析工具来辅助发现代码中的安全问题。

5、防御机制

  • 部署安全设备:使用入侵检测系统(IDS)、入侵防御系统(IPS)和Web应用防火墙(WAF)等安全设备来监控并阻止恶意流量。
  • 日志记录与监控:维护详细的日志记录,并实时监控异常活动,以便快速响应潜在威胁。

6、教育与培训

  • 提高意识:对开发人员进行安全意识培训,强调安全编码的重要性。
  • 应急响应计划:制定应急响应计划,确保在发现RCE漏洞时能够迅速采取行动。

7、第三方组件管理

  • 审计第三方组件:定期审核使用的第三方组件,确保它们没有已知的安全漏洞。
  • 替代危险组件:如果有组件存在安全风险,寻找更安全的替代品。

8、定期安全审计

  • 渗透测试:定期进行渗透测试,模拟真实世界的攻击场景来发现系统中的弱点。
  • 合规性检查:确保遵守相关的安全标准和最佳实践。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奥他

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值