Giter VIP home page Giter VIP logo

log4j-filescan's Introduction

████████████████▀███████████████████████████████████████████████████████████████████
█▄─▄███─▄▄─█─▄▄▄▄█░█░████▄─▄█▀▀▀▀▀██▄─▄▄─█▄─▄█▄─▄███▄─▄▄─█─▄▄▄▄█─▄▄▄─██▀▄─██▄─▀█▄─▄█
██─██▀█─██─█─██▄─█▄▄░██─▄█─██████████─▄████─███─██▀██─▄█▀█▄▄▄▄─█─███▀██─▀─███─█▄▀─██
▀▄▄▄▄▄▀▄▄▄▄▀▄▄▄▄▄▀▀▄▄▄▀▄▄▄▀▀▀▀▀▀▀▀▀▀▄▄▄▀▀▀▄▄▄▀▄▄▄▄▄▀▄▄▄▄▄▀▄▄▄▄▄▀▄▄▄▄▄▀▄▄▀▄▄▀▄▄▄▀▀▄▄▀
by Renato Andalik (@andalik)

Simples e direto ao ponto... Não requer prática, nem tão pouco habilidade!
Log4j-FileScan é um script desenvolvido em Python 3 para realizar a varredura completa de um filesystem buscando por versões vulneráveis do framework Log4j2 conforme descrito na CVE-2021-44228, CVE-2021-45046, CVE-2021-45105 e CVE-2021-44832.
A varredura é realizada recursivamente tanto em disco quanto dentro de arquivos Java Archive (JARs).

log4j-filescan

Funcionamento

Para otimizar a velocidade da varredura, a busca ocorre SOMENTE nos arquivos relacionados ao problema:

  • Todos os arquivos com extensão Java ARchive (inclusive em arquivos compactados com zip):
    • *.jar, *.war, *.ear e *.zip

Se um arquivo com uma das extensões mencionadas acima é localizado, ocorre a varredura dos arquivos internos (tudo em memória).

Download e Execução

O script pode ser baixado e utilizado de 2 formas distintas:

1. Usando Binário (Piece of Cake Mode)

Para facilitar ainda mais, compilamos tudo e disponibilizamos um binário executável.
Basta baixar a versão para seu Sistema Operacional, abrir o prompt de comando e executar:

  • Windows: log4j-filescan.exe
    IMPORTANTE: Devido ao modelo de empacotamento proporcionado pelo PyInstaller (tudo em um único executável), alguns antivírus podem gerar um alerta falso-positivo. Desta forma, basta incluir o executável na lista de excessões do seu antivírus.

  • Linux: log4j-filescan

No Linux, via console, você também pode utilizar o wget para obter o binário:

wget https://github.com/andalik/log4j-filescan/releases/download/v1.1.1/log4j-filescan -O log4j-filescan
chmod +x log4j-filescan
sudo ./log4j-filescan

2. Usando Python 3

Para distribuições Linux com Python 3.6+ instalado, utilize um dos métodos abaixo:

wget https://github.com/andalik/log4j-filescan/raw/main/log4j-filescan.py
export LC_ALL=$(locale -a | grep UTF-8)
sudo python3 log4j-filescan.py

Criando executáveis

Criando executável Windows

  1. Baixar Python 3.6 ou superior em https://www.python.org/downloads/

    • Certifique-se, durante a instalacão, de selecionar a opção Add Python 3.x to PATH.
  2. Abrir o prompt de comando e executar pip para instalar o pyinstaller:

    pip install pyinstaller
    pip install colorama
  3. Baixar a última versão do script log4j-filescan.py e executar o PyInstaller:

    pyinstaller --onefile --hidden-import colorama log4j-filescan.py

O executável Windows será criado no diretório dist: dist\log4j-filescan.exe

Criando executável Linux

Examplo para Debian 11:

sudo apt update
sudo apt install python3-pip git
pip3 install --user pyinstaller

git clone https://github.com/andalik/log4j-filescan
cd log4j-filescan
~/.local/bin/pyinstaller --onefile log4j-filescan.spec

./dist/log4j-finder --help

Exemplos de Uso

  1. Varredura em um diretório específico (padrão é /):
$ python3 log4j-filescan.py
ou
$ python3 log4j-filescan.py /caminho/desejado (no Linux)
$ python3 log4j-filescan.py d:\ (no Windows)
  1. Varredura em um arquivo JAR:
$ python3 log4j-filescan.py /caminho/arquivo.jar
  1. Varredura em múltiplos diretórios e/ou arquivos:
$ python3 log4j-filescan.py /caminho/dir1 /caminho/dir2 /caminho/arquivo.jar
  1. Varredura excluindo alguns arquivos e/ou diretórios
$ python3 log4j-filescan.py / --exclude "/caminho/*.war"
  1. Verbose ou Modo Debug:
$ python3 log4j-filescan.py -v /caminho/desejado
$ python3 log4j-filescan.py -vv /caminho/desejado

Notas Importantes

  • No Windows, se nenhuma unidade for informada, a varredura ocorrerá apenas em c:\.
    Entretanto, é possível especificar todas as unidades físicas do computador para varredura de uma única vez.

Abra o Powershell (de preferência com “Run as Administrator”) e digite:

python3 log4j-filescan.py c:\ d:\ e:\

A ferramenta realizará a varredura no C:, depois no D: e por fim E:. Se alguma unidade não existir, a ferramenta simplesmente ignorará a unidade informada sem apresentar erro. Tudo ficará registrado na tela (quais arquivos vulneráveis encontrados em qual unidade).

  • Arquivos e/ou diretórios que não puderem ser acessados (permissão de acesso negado) não serão listados.

log4j-filescan's People

Contributors

andalik avatar

Stargazers

Wumpus avatar

Watchers

 avatar Wumpus avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.