Уязвимость функции GetConfPath() пользовательского интерфейса Nginx UI сервера nginx связана с ошибочным получением значений полей json без проверки в результате неверного ограничения имени пути к каталогу с ограниченным доступом. Эксплуатация уязвимости может позволить нарушителю, действующему удалённо, записывать произвольные файлы
Использование рекомендаций:
https://github.com/0xJacky/nginx-ui/releases/tag/v2.0.0-beta.36
Компенсирующие меры:
Рекомендуется изменять функцию GetConfPath() напрямую:
func GetConfPath(dir ...string) (confPath string) {
if settings.NginxSettings.ConfigDir == "" {
out := getNginxV()
r, _ := regexp.Compile("--conf-path=(.*)/(.*.conf)")
match := r.FindStringSubmatch(out)
if len(match) < 1 {
logger.Error("nginx.GetConfPath len(match) < 1")
return ""
}
confPath = match[1]
} else {
confPath = settings.NginxSettings.ConfigDir
}
// Ensure confPath does not allow directory traversal
safeConfPath := filepath.Clean(confPath)
return filepath.Join(safeConfPath, filepath.Join(dir...))
}
| Балл | 7.8 — высокая опасность |