Bot do Telegram com Vulnerabilidade de Injeção

Este projeto demonstra um bot simples do Telegram implementado em Python usando a biblioteca python-telegram-bot. O bot inclui uma vulnerabilidade na função echo, que avalia qualquer entrada de texto recebida, potencialmente levando a ataques de injeção de código.

Executando o Projeto

Siga estas etapas para executar o projeto localmente:

  1. Clone o repositório:

    1
    
    git clone https://github.com/fguisso/python-injection
    
  2. Instale as dependências necessárias:

    1
    
    pip install python-telegram-bot
    
  3. Obtenha um Token de Bot do Telegram:

    • Inicie uma conversa com BotFather no Telegram. Você pode encontrá-lo pesquisando por “@BotFather” na barra de pesquisa do Telegram ou clicando aqui.
    • Envie o comando /newbot para iniciar o processo de criação de um novo bot.
    • Siga as instruções para escolher um nome e um username para o seu bot.
    • Após criar o bot, o BotFather irá fornecer um token. Copie esse token.
  4. Defina o Token do Bot como uma Variável de Ambiente:

    1
    
    export TOKEN_TELEGRAM="seu_token_do_bot_aqui"
    
  5. Execute o script Python:

    1
    
    python main.py
    
  6. Interaja com o bot no Telegram.

Funcionamento do Bot

O bot está configurado para receber mensagens contendo operações matemáticas como entrada. Essas operações são resolvidas no comando echo, que retorna o resultado da operação como resposta.

Por exemplo, ao enviar a mensagem 2 + 2 para o bot, ele retornará 4. Isso pode ser útil para realizar cálculos simples diretamente no Telegram.

Explicação da vulnerabilidade

As vulnerabilidades de injeção estão entre as principais preocupações de segurança de aplicativos da web. De acordo com o OWASP Top 10, a injeção de código (como SQL injection, XSS, Command Injection e outras) é uma das principais ameaças para a segurança dos aplicativos.

No contexto deste bot, a vulnerabilidade de injeção ocorre na função echo, que utiliza a função eval para evoluir qualquer entrada de texto recebida. Isso permite que possíveis atacantes executem código arbitrário enviando uma entrada maliciosa. Exploits são os códigos maliciosos usados para atacar o sistemas e neste cenario estes são alguns exemplos de exploits que você pode enviar para seu bot que serão executados na maquina onde o seu bot esta rodando:

Mensagem para o botResultado do exploit
os.getenv("TOKEN_TELEGRAM")Acesso a variáveis de ambiente
os.system("rm -rf /")Execução de comandos do sistema operacional, no caso, rm vai deletar todos os arquivos do sistema.
import malicious_moduleImportação de módulos maliciosos
__import__("malicious_module").malicious_function()Execução de código malicioso.

Os usuários são encorajados a testar esses exploits em seu próprio bot e observar os resultados. No entanto, tenha cuidado ao usar exploits, pois eles podem causar danos ao sistema.

Documentação