一、在vps安装docker和docker-compose
1、腾讯云Ubuntu服务器安装docker
(1)使用sudo apt update与sudo apt upgrade -y命令更新系统
(2)安装必要的包
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
(3)添加dockers的官方密钥
curl -fsSL https://mirrors.tencentyun.com/docker-ce/linux/ubuntu/gpg | sudo tee /etc/apt/trusted.gpg.d/docker.gpg > /dev/null
(4)添加腾讯云镜像的docker APT源代替官方源:
echo "deb [arch=$(dpkg --print-architecture)] https://mirrors.tencentyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
(5)安装docker
sudo apt install docker-ce docker-ce-cli containerd.io
(6)使用sudo systemctl start docker与sudo systemctl enable docker命令启动并运用docker服务
(7)使用sudo docker --version命令查看docker版本
(8)使用sudo usermod -aG docker $USER命令将用户添加到docker组
(9)使用newgrp docker命令重新登陆
(10)测试非root用户运行dockers:docker run hello-world,成功。
2、腾讯云Ubuntu服务器安装docker-compose
(1)使用sudo apt install -y docker-compose下载安装docker-compose
(2)使用docker-compose -v命令查看docker-compose的版本,成功。
二、vulhub中的漏洞复现
腾讯云Ubuntu服务器配置vulhub靶场(后续因为实在打不开网页转战kali,靶场文件通过xftp传输上去)
1、tomcat弱口令/后台文件上传getshell
(1)使用cd vulhub/tomcat/tomcat8命令到tomcat8目录下,再使用sudo docker-compose up -d启动tomcat。
(2)查看虚拟机的公网,使用浏览器输入http:公网:8080(tomcat默认端口8080)访问网站。
(3)点击manager app在弹窗尝试用tomcat的默认账号密码tomcat/tomcat发现可以直接登录。
(4)先使用sudo vim shell.jsp命令编辑shell.jsp文件,写入一段脚本。然后使用sudo jar -cvf shell.war shell.jsp命令将写好的shell.jsp文件打包成一个.war文件。
(5)将打包好的.war文件使用xftp(新建会话里输入虚拟机公网、用户名以及密码)传输到Windows主机上
拖拽shell.war文件到shell文件夹中,即可完成传输
(6)将.war文件传输到tomcat上
(7)发现可以访问刚刚上传的文件
(8)打开蚁剑添加数据,连接该文件地址则可以查看tomcat的所有文件
漏洞成因:首先tomcat manager登录界面存在弱口令漏洞,可以通过tomcat/tomcat如此简单的用户名及密码登录,然后服务器未对上传文件的路径和内容进行严格的验证,攻击者可以将恶意文件(如JSP WebShell)上传到服务器,此处的shell.war压缩包被解压后里面的shell.jsp可以直接被访问。
2、weblogic弱口令/任意文件读取
(1)使用cd vulhub-master/weblogic/weak_password命令进入该目录下,启动服务
(2)浏览器打开http://公网:7001/console/login/LoginForm.jsp(默认端口7001)
注意虚拟机的公网会随着改变网络适配的模式、或者一些特殊命令而改变,不确定ip可以通过ifconfig查看
(3)使用账号加密码weblogic/Oracle@123登录,进入后台管理界面
(4)随后打开http://公网IP:7001/hello/file.jsp?path=/etc/passwd,成功读取passwd文件。
(5)使用burpsuite抓包密钥文件SerializedSystemIni.dat与全局配置文件config.xml两个文件
访问路径path改为security/SerializedSystemIni.dat
访问路径path改为config/config.xml
最终抓包得到密钥。
使用weblogic_decrypt.jar工具解密最终得到账户密码Oracle@123
漏洞成因:WebLogic管理控制台存在弱口令,通过后台可以读取敏感文件,甚至上传恶意脚本。
3、apache换行解析
(1)进入CVE-2017-15715文件后启动靶场
(2)浏览器上使用kali公网:8080成功打开网页
(3)编写php一句话木马做测试文件
(4)上传测试文件时用burpsuite拦截抓包
(5)选择十六进制,在此处插入换行符0a,然后点击forward放行此请求
(6)访问刚上传的testtt.php%0a,发现后最不是php的文件已经被成功解析,说明此靶场存在换行解析漏洞。
漏洞成因:Apache某些版本存在换行解析漏洞,攻击者通过伪造请求包将换行符注入服务器,改变原始请求的结构,导致服务器误解析并执行恶意命令。
4、apache druid RCE
(1)将在https://github.com/apache/druid/archive/druid-0.20.0.zip下载的压缩包本地解压通过xftp传输到kali上
(2)到druid/distribution/docker目录下启动docker服务
注意apache/druid的版本需要与直接下载的druid版本一致,我原先的下载版本是0.17.0结果打不开网页,解决办法是vim docker-compose.yml将apache/druid的下载版本手动修改为0.20.0。
(3)访问kali公网ip:8888进入Druid console的控制台界面,点击Load data ——>Local disk。
(4)逐步进行以下设置
Base directory: quickstart/tutorial/
File filter: wikiticker-2015-09-12-sampled.json.gz
(5)先打开bp的拦截功能,然后返回网页点击apply进行抓包,将抓包结果发送给bp的repeater板块。
(6)修改网页的请求为以下内容再点击send按钮发送。
(7)发现服务器执行js脚本里的id命令
漏洞成因:Apache Druid(某些版本)存在任意代码执行漏洞,服务端对用户输入的验证不足,导致攻击者可以构造恶意的查询请求来执行任意代码。
三、总结RCE漏洞的原理和利用条件及解决方案
1、根据以上的实验总结
(1) Tomcat弱口令/后台文件上传
原理:Tomcat默认使用的 /manager 后台界面存在弱口令,攻击者可以通过弱密码直接登录后台,上传恶意的 脚本文件,实现代码执行。
利用条件:Tomcat 使用弱口令以及上传功能未受限制,且能上传可执行文件。
解决方案:使用强密码,禁止默认的弱口令;限制后台访问,配置防火墙或ip白名单;禁止随意上传可执行文件。
(2) WebLogic 弱口令/任意文件读取
原理:WebLogic管理控制台存在弱口令,通过后台可以读取敏感文件,甚至上传恶意脚本。
利用条件:WebLogic 后台弱口令、后台有文件上传功能或任意文件读取漏洞。
解决方案:使用强密码,禁用默认用户;限制后台访问权限;修复WebLogic的已知漏洞。
(3) Apache换行解析漏洞
原理:Apache某些版本存在换行解析漏洞,攻击者可以通过伪造请求包将换行符注入服务器,改变原始请求的结构,导致服务器误解析并执行恶意命令。
利用条件:Apache存在换行解析漏洞,服务器允许对用户输入进行解析。
解决方案:对输入进行严格验证和过滤,防止恶意请求注入。
(4) Apache Druid
原理:Apache Druid(某些版本)存在任意代码执行漏洞,服务端对用户输入的验证不足,导致攻击者可以构造恶意的查询请求来执行任意代码。
利用条件:Druid未及时更新,存在漏洞;攻击者可以构造查询请求并发送到Druid服务器。
解决方案:更新Druid到最新版本;对外部接口进行严格的权限管理和验证,避免恶意请求进入系统。
2、综合
RCE漏洞的核心是攻击者通过发送恶意数据到服务器,最终导致服务器在未经授权的情况下执行攻击者的代码。
1、RCE 漏洞的产生因素:
(1)输入验证不足:服务器未能严格验证用户输入,恶意代码可以注入并被执行。
(2)执行危险函数:服务器端直接执行用户输入的数据,使用了如 eval()、exec() 等能够动态执行代码的函数。
(3)未安全配置:如应用默认弱口令、错误权限管理,或者系统漏洞未及时修复。
2、 RCE漏洞的解决方案
(1)加强访问控制:限制后台管理界面的访问;实施强密码策略,禁用默认账号和弱密码。
(2)安全的输入和输出:对用户输入严格验证,防止代码注入。
(3)定期更新和打补丁:及时更新Web应用和服务器组件,修复已知漏洞。
(4)启用安全防护机制:使用 Web 应用防火墙(WAF)来过滤恶意请求。
(5)实施文件上传限制,确保只能上传特定文件类型,并检查文件内容。
(6)最小化权限:运行 Web 服务时使用最低权限账户,限制被入侵后能访问的资源范围。