一、在VPS上安装docker和docker-compose
二、上课涉及的vulhub中的漏洞,全部复现,同时说明漏洞成因
1.下载vulhub,传入vps并解压
靶场地址:Vulhub - Docker-Compose file for vulnerability environment
unzip vulhub-master.zip
环境部署演示
进入vulhub-master目录
进行安装
docker-compose up -d
查看doc8ker环境
访问ip:8080
安装完成
下面案例不再演示安装过程
2.Tomcat 7+ Weak Password && Bac.
登录tomcat
可以看到这里有注入点
使用哥斯拉生成一句话木马shell.jsp
将文件压缩为.zip后将后缀改为.war,并进行上传
上传漏洞后多出/shell选项
使用哥斯拉进行链接,可以看到链接成功
3.Weblogic 常规渗透测试环境
访问网址:http://47.108.212.89:7001/console/login/LoginForm.jsp
查找Weblogic常用的弱口令密码
system:password
weblogic:weblogic
admin:secruity
joe:password
mary:password
system:sercurity
wlcsystem: wlcsystem
weblogic:Oracle@123
这里使用weblogic:Oracle@123进行登录
访问网址:http://47.108.212.89:7001/hello/file.jsp?path=/etc/passwd
会下载一个file.htm文件
打开文件
4.Apache HTTPD 换行解析漏洞(CVE2017-15715).
访问网站:http://47.108.212.89:8080
提交一句话木马,使用bp进行拦截,修改一下文件名(这里加了 /)
三、总结RCE漏洞的原理和利用条件及解决方案
RCE漏洞的原理
RCE漏洞的根本原因在于应用程序在处理用户输入时没有进行充分的验证和过滤,导致攻击者能够注入恶意代码并在服务器上执行。这些恶意代码可以执行各种操作,包括数据窃取、系统破坏、安装恶意软件或完全控制受影响的系统。
RCE漏洞的利用条件
- 存在可执行代码的接口:应用程序中必须存在能够执行系统命令或代码的接口,如PHP中的
exec()
、shell_exec()
、system()
等函数。 - 用户输入可控:攻击者必须能够控制输入到这些接口的数据,即用户输入是未经过滤或过滤不严的。
- 未进行充分验证和过滤:应用程序没有对用户输入进行充分的验证和过滤,使得恶意代码能够绕过安全检查并执行。
解决方案
- 严格校验和过滤用户输入:
- 对所有外部输入进行严格的验证和过滤,确保输入数据的合法性和安全性。
- 使用白名单验证技术,只允许预期内的输入通过。
- 使用安全的库和函数:
- 避免使用能够执行系统命令或代码的危险函数,除非在绝对必要的情况下,并且进行了严格的控制和过滤。
- 使用经过安全审计和验证的库和框架来开发应用程序。
- 实施最小权限原则:
- 限制应用程序的权限,确保它们只能执行必要的操作。
- 使用操作系统的安全机制(如Linux的chroot环境)来限制应用程序可以访问的文件和资源。
- 及时更新和打补丁:
- 定期更新和打补丁以修复已知的安全漏洞。
- 关注行业安全动态,及时了解并应对新出现的威胁。
- 进行安全编码实践:
- 遵循安全编码最佳实践,避免常见的安全漏洞。
- 对开发人员进行安全编码培训,提高他们的安全意识和编码技能。
- 部署安全防护措施:
- 使用应用程序防火墙(WAF)和入侵检测系统(IDS)来监控和阻止潜在的攻击。
- 配置防火墙和路由器规则以限制不必要的网络流量和访问。
- 定期进行安全审计和漏洞扫描:
- 定期进行代码审计和漏洞扫描以发现潜在的安全问题。
- 使用自动化工具来辅助安全审计和漏洞扫描工作。
- 备份和恢复策略:
- 定期备份关键数据和系统配置,以便在遭受攻击时能够迅速恢复。
- 制定详细的恢复计划并定期进行演练以确保其有效性。