1.在vps安装docker和docker-compose
Docker
Docker 是一个开源的应用容器引擎,它允许开发者打包其应用及其依赖项到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 或 Windows 操作系统上。Docker 主要有以下几个组成部分:
- Docker 客户端:用户与 Docker 引擎交互的界面,可以是命令行工具或图形界面工具。
- Docker 引擎(服务):负责构建、运行和管理 Docker 容器的守护进程。
- Docker 镜像:包含应用程序及其依赖项的只读模板。
- Docker 容器:镜像的运行实例,是一个独立的、隔离的环境,可以运行应用程序。
Docker 的主要特点
- 轻量级:容器共享宿主机的操作系统内核,因此比虚拟机更轻量。
- 可移植性:容器化的应用程序可以在任何支持 Docker 的环境中运行。
- 隔离性:每个容器有自己的文件系统、用户组、进程空间等,保证了应用程序之间的隔离。
- 一致性:容器在任何环境中都表现一致,减少了“在我机器上能运行”的问题。
Docker Compose
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它使用 YAML 配置文件来定义一个应用程序所需的所有服务,从而使用户能够启动和停止整个应用程序。
Docker Compose 的主要特点
- 多容器应用:允许用户定义一个应用程序所需的多个容器及其相互关系。
- 配置文件:使用
docker-compose.yml
文件来定义服务、网络、卷等。 - 生命周期管理:可以轻松地启动、停止、重建整个应用的所有服务。
- 环境变量:通过环境变量来配置服务,使得配置更加灵活。
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
1.安装 Docker Engine:
1sudo apt-get install docker-ce docker-ce-cli containerd.io
2.确保是否安装了 curl
和 jq
,如果还没有安装,则使用如下命令安装:
1sudo apt-get install curl jq
3.确定最新的 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"
检查docker-compose
2. vulhub中的漏洞,全部复现,同时说明漏洞成因
TomcatTomcatTomcat弱口令/后台文件上传getshell
用配置好的Docker环境去访问对应靶场的8080端口:
利用弱口令“tomcat”-“tomcat”,进行登录,登录成功。
Weblogic弱口令/任意文件读取
访问console端口:
弱口令“weblogic:Oracle@123”可登录:
Apache换行解析
Apache 的换行解析漏洞(Line Feed Injection)是指由于 Web 服务器对 HTTP 请求头部中的换行符(如 \n
或 \r\n
)处理不当,导致攻击者可以通过注入特殊的换行符来欺骗服务器,使其执行未预期的操作或绕过安全检查。
从本机中访问:
上传一个名为shell.php的文件,并用burp suite抓包。
选择Hex模式,找到文件名shell.php后面加上0a(在0d处右键->Insert byte),点击发送。
使用蚁剑进行连接。
Apache Druid RCE
Apache Druid 是一个高性能的数据存储和查询系统,主要用于实时数据分析和大数据查询。然而,由于其复杂的架构和广泛的使用场景,Druid 也可能存在安全漏洞,其中包括远程代码执行(RCE)漏洞。这类漏洞允许攻击者在受影响的系统上执行任意代码,从而导致严重安全风险。
进入靶机对应的8888端口:
尝试用BP拦截数据包,可直接修改id内容。
3. 总结RCE漏洞的原理和利用条件及解决方案
利用条件
RCE漏洞的利用通常需要满足以下几个条件:
- 用户输入未被充分验证:应用程序在接受用户输入时没有进行足够的验证和清理,使得恶意输入能够通过。
- 环境可执行恶意代码:应用程序运行的环境中,存在可以执行恶意代码的语言解释器或其他执行环境(如PHP、Python等)。
- 权限控制不足:应用程序在执行用户输入的代码时,具有足够的权限去访问系统资源或执行敏感操作。
- 代码注入点:存在一个或多个代码注入点,攻击者可以通过这些点插入恶意代码。
解决方案
为了防止RCE漏洞的发生,可以采取以下措施:
- 输入验证:对所有用户输入的数据进行严格的验证,确保只接受预期的格式和范围内的数据。
- 输出编码:在展示任何用户提交的数据之前,对其进行编码或转义,防止其被解释为代码执行。
- 最小权限原则:应用程序运行时使用最小权限账户,即使存在RCE漏洞,攻击面也会减小。
- 安全编程实践:使用安全的编程实践,比如使用参数化查询或预编译语句来防止SQL注入,使用安全函数替代不安全的函数。
- 安全配置:确保Web服务器和应用程序框架的安全配置,关闭不必要的服务和端口,减少暴露面。
- 定期审计:定期进行代码审计和渗透测试,及时发现并修复潜在的安全漏洞。
- 更新和打补丁:确保所有的软件和服务都是最新版本,并安装了所有必要的安全补丁。
- 使用WAF和HIDS:部署Web应用防火墙(WAF)和主机入侵检测系统(HIDS)来监测和阻止恶意流量。
- 用户教育:提高开发者的安全意识,教育他们如何编写安全的代码。