Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
lightweight_static_analysis — Crie análises estáticas úteis e leves usando ferramentas de código aberto + um pouquinho do seu código | Kitploit
Ferramentas/GitHubGitHub/nccgroup/lightweight_static_analysis
Análise Estática de Código (SAST)Análise de VulnerabilidadesAnálise de CódigoScripting e AutomaçãoSegurança WebTestes de PenetraçãoAprendizado e Educação
GitHubnccgroup/lightweight_static_analysis

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

lightweight_static_analysis

Crie análises estáticas úteis e leves usando ferramentas de código aberto + um pouquinho do seu código

Ver Repositório
134há 6 anosAinda não revisado

Análise Estática Leve

Este repositório contém o código de PoC para uma palestra da ShellCon 2019, "Fazendo Você Mesmo: Como Escrever Ferramentas Personalizadas e Leves de Análise Estática" (slides).

Em resumo, este repositório demonstra alguns exemplos concretos de como você pode criar análises estáticas interessantes usando ferramentas de código aberto e uma pequena quantidade de código personalizado.

Exemplos de código neste repositório:

  1. Explorar iterativamente uma base de código Rails para entender os controllers que ela define e os before_actions que ela usa.
  2. Encontrar injeção de comandos em aplicativos NodeJS.

Como os exemplos funcionam

Em um nível alto, a implementação dos exemplos funciona da seguinte forma:

  1. Encontre algum código-fonte que você queira analisar.
  2. Faça o parse do código-fonte usando a ferramenta semantic do GitHub em uma Árvore Sintática Abstrata (AST) e envie isso para JSON.
  3. Faça o parse do AST em formato JSON com nosso código Python e então faça algumas análises interessantes com ele.

Configuração

Este projeto foi feito para ser executado usando Docker.

Para isso, você precisará configurar algumas coisas primeiro.

Como nosso Dockerfile é baseado na imagem Docker do semantic, que está hospedada no registro de pacotes do GitHub, você precisará configurar o Docker para usar o Registro de Pacotes do GitHub.

  1. Crie um token de acesso pessoal com as permissões que o artigo acima descreve.
  2. Autentique-se no registro de pacotes do GitHub: $ docker login docker.pkg.github.com -u USERNAME -p TOKEN
  3. Construa o container Docker: docker build -t lightweight_static_analysis .
  4. Execute um shell bash dentro do container Docker e então execute nossos scripts.
root@kitploit:~
# Run this 
# (Make sure to run this from a terminal in this repo's project root)
$ docker run -it --rm --entrypoint /bin/bash -v $PWD:/lightweight_static_analysis lightweight_static_analysis

# cd into this project's source code within the 
# running container
$ cd /lightweight_static_analysis

# Run main.py with different config options, described further below

Executando

Depois de ter um shell bash no container Docker (veja acima o comando docker run), você pode executar main.py com um dos vários modos possíveis.

root@kitploit:~
/lightweight_static_analysis> $ python3 src/main.py <options>

Você pode ver todas as opções disponíveis executando src/main.py sem opções ou visualizando a seção parser.add_argument do main.py.

Explorando bases de código Rails

Aqui estão alguns comandos que podem ajudar você a explorar interativamente uma base de código Rails.

Primeiro, você vai querer clonar um ou mais repositórios Rails e colocá-los em examples/. Se você precisar de alguns repositórios de exemplo, pode usar o código-fonte do rubygems.org, ou um dos repositórios listados no Open Source Rails.

root@kitploit:~
# Print out the class, super class, defined methods, and before actions
# for all controllers
$ python3 src/main.py --rails-summarize-controllers examples/<repo_name>

# Print out every controller name, grouped by super class
#
# This can find examples where security protections defined in a parent class
# (e.g. ApplicationController or Api::BaseController) aren't applied because
# the vulnerable controller didn't subclass the appropriate class.
$ python3 src/main.py --rails-controllers-by-superclass examples/<repo_name>

# For every before_action used by any controller, list the controllers that
# use that before_action and the routes that it is and isn't applied to
# (e.g. handle the 'except' and 'only" keywords)
#
# This can:
# * Give you quick insight the various before_actions the application defines,
#   yielding some intuition as to the code's flow and organization.
#   * `verify_with_otp` - Hm, that sounds interesting, I probably want to
#      review how that filter is implemented.
# * Show you where a given before_action is and isn't applied across an entire
#   code base, potentially leading to bugs where it is inconsistently used
#
# For example
# * Is there a before_action that's used to protect all state0-changing API
#   routes except for 1 model? That's strange.
# * Is there an authentication or authorization before_action applied to every
#   action in a controller except one? Why?
$ python3 src/main.py --rails-controllers-by-before_action examples/<repo_name>

Se você quiser entrar em um REPL ipdb depois que o parsing for concluído, para examinar interativamente o código Ruby analisado, você pode fazer isso passando também a flag --repl aos comandos acima.

Esses exemplos dependem das várias classes AstNode definidas em ast_node.py, e todo o código específico de Rails está em ruby.py.

Encontrando injeção de comandos via exec()s do shell JS

Esta implementação ainda não foi organizada e documentada, mas veja batch_parse_json() em main.py e visit() e os outros métodos que ela chama em visitor.py.

Mantenha contato

Ficamos felizes em conversar sobre este trabalho em mais detalhes; sinta-se à vontade para abrir uma issue ou entrar em contato no Twitter: @clintgibler, @defreez.

Se você quiser acompanhar este e outros projetos em que trabalhamos, confira nossa newsletter de segurança tl;dr, onde enviamos resumos detalhados das principais palestras de segurança e links para as melhores ferramentas e recursos de segurança.

É uma newsletter de baixo volume e alto sinal, voltada para mantê-lo atualizado com o que há de mais novo e melhor em segurança, para que você faça seu trabalho de forma mais eficiente e eficaz e tenha dicas úteis para compartilhar no "watercooler" da infosec.

Baixar ferramenta