一:在vps安装docker和docker-compose
依次执行如下命令进行安装:
apt update
apt install docker.io -y
apt install docker-compose -y
二:复现vulhub中的漏洞,说明漏洞成因
环境
修改daemon配置文件/etc/docker/daemon.conf来使用aliyun的加速器。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{ "registry-mirrors": ["https://yh10ip94.mirror.aliyuncs.com"] }
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
进入tomcat8目录,执行docker-compose up -d,启动tomcat。
查看docker容器进程
在浏览器输入“虚拟机IP:8080”进入tomcat。
开始复现
1. tomcat 弱口令/后台文件上传getshell
1)发现tomcat管理后台,进行弱口令尝试。
2)账号密码尝试tomcat后登录后台。
漏洞成因
网站管理没有修改tomcat的默认密码。
2. weblogic 弱口令/任意文件读取
1)环境搭建,网址:http://8.137.109.33:7001/console/login/LoginForm.jsp
本环境存在弱口令:weblogic Oracle@123
eblogic常用弱口令: Default Passwords | CIRT.net
2) 进入后台
3) 任意文件读取
可成功读取passwd文件
由于weblogic密码使用AES加密,先找到密文和密钥文件,进行解密
漏洞成因:
- 登录存在弱口令
- 存在文件目录读取后门
- 未对目录设置操作权限
三、总结RCE漏洞的原理和利用条件及解决方案
原理
RCE(远程代码执行)漏洞的原理在于攻击者能够向目标系统发送恶意输入,这些输入被目标系统不当处理或未进行充分验证,导致系统执行了攻击者指定的代码。这通常发生在应用程序需要从用户那里接收输入,并将其作为代码或命令的一部分来执行时。如果应用程序没有对这些输入进行严格的验证和过滤,攻击者就可以构造恶意输入,从而控制目标系统。
RCE漏洞可能发生在以下几种情况:
- 系统命令注入:在Web应用中,如果应用程序在执行系统命令时使用了用户输入的数据且未进行充分过滤,就可能出现命令注入漏洞。攻击者可以通过注入恶意命令来执行任意代码。
- 代码注入:在动态脚本语言中较为常见,如PHP、Python等。如果应用程序允许用户输入的内容被直接作为代码执行,就可能出现代码注入漏洞。
- 模板注入:当服务器端模板引擎在处理用户输入时没有进行充分的安全检查,攻击者可以通过构造恶意输入来执行任意代码。
- 反序列化漏洞:如果应用程序在反序列化用户输入的数据时没有进行充分的安全检查,攻击者可以构造恶意的序列化数据,导致在反序列化过程中执行任意代码。
利用条件
- 存在未经验证的输入:目标系统需要从用户那里接收输入,并且这些输入被用于执行代码或命令。
- 输入处理不当:目标系统没有对用户输入进行严格的验证和过滤,或者验证和过滤机制存在缺陷。
- 代码执行权限:攻击者需要能够构造出被目标系统执行的恶意代码或命令。
- 系统配置缺陷:目标系统的配置可能存在缺陷,使得攻击者能够更容易地利用RCE漏洞。
解决方案
- 严格验证和过滤用户输入:对所有用户输入进行严格的验证和过滤,确保它们符合预期的格式和类型,并且不包含恶意代码或命令。
- 使用安全的编程实践:避免使用不安全的函数或方法,如eval()、system()等,这些函数或方法可能会执行用户输入的代码或命令。
- 最小化权限:确保应用程序以最小权限运行,即使发生RCE漏洞,攻击者也只能获得有限的访问权限。
- 使用安全的库和框架:选择经过安全审计和广泛使用的库和框架,它们通常包含更多的安全特性和修复了更多的安全漏洞。
- 定期更新和修补:定期更新和修补应用程序及其依赖的库和框架,以修复已知的安全漏洞。
- 监控和日志记录:实施监控和日志记录机制,以便在发生安全事件时能够及时发现和响应。