安装docker和docker-compose
vulhub漏洞复现及漏洞成因
1.tomcat
在vps的docker中启动靶场后访问8080端口,可以看到是tomcat页面,使用tomcat的默认账号密码登录
编写shell打包成压缩包
点击选择文件,将刚刚生成的shell.war包上传,点击Deploy。部署成功后,会出现/shell
复制shell地址,蚁剑连接
2.weblogic
弱口令
在vulhub靶场启动weblogic,浏览器打开http://IP:7001/console访问登录界面
通过弱口令weblogic:Oracle@123登录管理后台
任意文件读取
访问http://IP:7001/hello/file.jsp?path=/etc/passwd可成功读取passwd文件
3.apache
启动服务,打开网页
上传文件,打开浏览器代理
打开burpsuite拦截抓包
在文件名后添加一个\x0A,然后发送,可以看到没有bad file的提示,说明文件上传成功
4.漏洞成因
tomcat:
1.弱口令:管理员没改初始密码,过于简单,容易破解。
2.上传shell:在部署war包后tomcat默认会将war包中的项目部署,没有过滤检测。
weblogic:
WebLogic服务器在搭建后,管理员未修改后台的默认密码或设置的密码过于简单,导致攻击者可以通过暴力破解、字典攻击等方式轻易获取登录权限,进而对服务器进行进一步的控制和攻击。
apache:
程序在解析PHP时,如果文件名最后有一个换行符x0A,apache依然会将其当成php解析,但是在上传文件时可以成功的绕过黑名单。
RCE
1.原理
RCE(远程代码执行)漏洞是指攻击者能够在目标系统上执行任意远程代码。这种漏洞通常是由于应用程序对用户输入没有进行充分的验证和过滤,导致攻击者可以通过构造恶意输入,让应用程序在执行过程中执行攻击者指定的代码。具体来说,当应用程序将用户输入的数据作为代码的一部分执行,或者将用户输入的数据用于执行系统命令时,如果没有对这些输入进行严格的验证和过滤,就可能引发RCE漏洞。
2.利用条件
存在未验证的用户输入:应用程序需要接收并处理用户输入的数据,且这些数据在后续的处理过程中被用于执行代码或命令。
不安全的函数或方法:应用程序中使用了不安全的函数或方法来处理用户输入,如eval()、system()、exec()等,这些函数或方法可以直接执行字符串作为代码或命令。
权限控制不当:如果应用程序在执行远程代码时没有进行适当的权限控制,攻击者可能会获得比预期更高的权限,从而执行更危险的操作。
3.解决方案
1.输入验证与过滤:
对所有用户输入进行严格的验证和过滤,确保输入数据符合预期的格式和范围。
使用白名单来限制允许输入的内容类型,避免使用黑名单,因为黑名单可能无法覆盖所有潜在的恶意输入。
2.使用安全的函数和API:
避免使用能够执行字符串作为代码或命令的函数,如eval()、system()等。
如果必须使用这些函数,请确保对输入进行了严格的验证和过滤,并限制执行权限。
3.权限管理:
实施最小权限原则,确保应用程序仅具有执行其任务所必需的最小权限。
对于需要执行敏感操作的功能,使用适当的权限控制机制来限制访问。
4.安全编码实践:
遵循安全编码标准和最佳实践,如使用安全的编程语言和框架。
对代码进行定期的安全审查和测试,以发现和修复潜在的安全漏洞。
5.安全更新和补丁:
及时关注并应用应用程序及其依赖组件的安全更新和补丁,以修复已知的安全漏洞。
6.入侵检测和响应:
部署入侵检测系统(IDS)和入侵防御系统(IPS)来监控和阻止潜在的恶意活动。
制定应急响应计划,以便在发生安全事件时能够迅速响应并减少损失。