Obtenha informações sobre vulnerabilidades e exploits em seus sistemas através do Pompem

O Pompem é uma ferramenta de busca de informações sobre vulnerabilidades relacionadas a diversos sistemas de gestão de conteúdo e softwares de sistema e rede.
Escrito em Python, o programa foi desenvolvido para listar artigos em sites e informações de bancos de dados sobre falhas de segurança conhecidas.

Com base nestas informações, o administrador pode tomar as “medidas cabíveis” para resolver eventuais problemas relacionados à sua plataforma.

O usuário alvo deste tipo de aplicação é o pentester, ou seja, profissionais ligados à área de segurança, cuja atribuição é determinar a força da segurança de sistemas que estejam sob seus cuidados. Ou seja, trata-se de um perfil específico de usuário avançado.

Neste post, vou abordar a instalação mais simplificada, dentro do sistema operacional Debian 10.

Nesta distribuição do GNU/Linux, o Pompem, consta como um pacote na categoria pentest tools e é mantida pelo Debian Forensics.


apt show pompem

Package: pompem
Version: 0.2.0-3
Priority: optional
Section: utils
Maintainer: Debian Forensics 
Installed-Size: 51,2 kB
Depends: python3, python3-requests
Homepage: https://github.com/rfunix/Pompem
Download-Size: 9.928 B
APT-Sources: http://deb.debian.org/debian testing/main amd64 Packages
Description: Exploit and Vulnerability Finder
 Find exploit with a system of advanced search, designed to automate the search
 for Exploits and Vulnerability in the most important databases facilitating
 the work of pentesters, ethical hackers and forensics expert. Performs searches
 in databases: PacketStorm security, CXSecurity, ZeroDay, Vulners, National
 Vulnerability Database, WPScan Vulnerability Database. This tool is essential
 in the security of networks and systems.
 .
 The search results can be exported to HTML or text format.

Como você pode ver, o Pompem é essencial na busca e detecção de exploits e vulnerabilidades — bem como a obtenção de ajuda para solucionar os problemas — em várias categorias de sistemas.

Para iniciar a instalação, use o apt (de novo…):


sudo apt install pompem

Como usar o Pompem

O Pompem é uma forma rápida de obter informações sobre problemas de segurança, já disponibilizadas em sites especializados.
Se você administra um grande servidor ou um blog WordPress, pode obter rapidamente informações voltadas para a sua situação.
Abra um terminal, para fazer algumas experiências.
Use o recurso search (busca) para encontrar dados sobre uma determinada plataforma (Joomla, no exemplo abaixo):


pompem -s "joomla"


+Results joomla
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+Date            Description                                     Url                                    
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+ 2018-06-18 | Joomla Jomres 9.11.2 Cross Site Request Forgery | https://packetstormsecurity.com/files/148223/Joomla-Jomres-9.11.2-Cross-Site-Request-Forgery.html 
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+ 2018-06-14 | Joomla Ek Rishta 2.10 SQL Injection | https://packetstormsecurity.com/files/148189/Joomla-Ek-Rishta-2.10-SQL-Injection.html 
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

...

+ 2018-04-13 | Joomla Convert Forms 2.0.3 CSV Injection | https://cxsecurity.com/issue/WLB-2018040100 
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+ 2018-04-09 | Joomla com_foxcontact Shell Upload Vulnerability E | https://cxsecurity.com/issue/WLB-2018040066 
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+ 2018-06-14 | Joomla Ek Rishta 2.10 SQL Injection | https://packetstormsecurity.com/files/148189/Joomla-Ek-Rishta-2.10-SQL-Injection.html 
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Minha lista, acima, está com “algumas” linhas cortadas. Se prepare para obter uma relação bem mais extensa, aí.
Como você pode ver, o resultado compreende 3 colunas:

  1. Data da divulgação da vulnerabilidade
  2. Título do post
  3. URL do site, aonde você pode obter mais informações sobre o problema

Ter conhecimento (leitura) de inglês, neste caso, pode ajudar bastante.

Introdução ao wp-cli

O wp-cli é uma ferramenta de linha de comando voltada para usuários avançados realizarem tarefas administrativas relacionadas ao sistema de gestão de conteúdo (CMS) WordPress.
Este post se baseia na documentação original do software. Recomendo consultá-la para obter mais informações e clicar nos outros links, no decorrer do texto, para se aprofundar mais em algum tema.

O WP-CLI é a ferramenta de linha de comando oficial, disponível para interagir com e gerenciar seus sites na plataforma WordPress.

O objetivo do projeto é oferecer uma alternativa completa para adiministradores(as) de sites WordPress.
É equivalente ao painel administrativo de qualquer CMS, só que oferece as mesmas possibilidades na CLI (interface de linha de comando).
Como exemplo preliminar, veja como instalar e ativar um plugin no seu site, na linha de comando do seu servidor:


wp plugin install nome-do-plugin --activate

Grandes provedores de hospedagem, como o DreamHost oferecem a ferramenta.
Para começar a usá-la, basta acessar o servidor via SSH e começar a usar.
Quem usa Linux, também pode instalar a ferramenta na sua máquina de trabalho local.
O programa também está disponível para outras plataformas, como o FreeBSD, MacOS e Windows (neste caso, com algumas limitações).
Para acesso remoto, o WP-CLI local repassa os comandos à cópia instalada no servidor. Funciona de modo semelhante ao comando scp.

Desenvolvido por usuários avançados do WordPress, para atender às necessidades administrativas de outros heavy users.
No longo prazo, mesmo um novato pode descobrir os benefícios da linha de comando: mais eficiência e mais controle.

A sintaxe do wp-cli

Veja a explicação sobre um exemplo prático, abaixo:


wp plugin install

usage: wp plugin install ... [--version=] [--force] [--activate] [--activate-network]

Como o comando não se encontra completo (por que não foi indicado exatamente qual o plugin a ser instalado), ele retorna uma linha de ajuda rápida sobre a sintaxe a ser usada, na execução do wp:

  • wp plugin install — este é o comando em si. Falta indicar parâmetros e opções para que seja executado com sucesso.
  • <plugin|zip|url> — logo após o comando é necessário indicar de onde você pretende instalar o plugin: pelo nome, a partir de um pacote ZIP ou de uma URL na Internet.
  • [--version=<version>] — parâmetros sugeridos entre “[colchetes]” são opcionais. Neste exemplo, o que se quer dizer é que você pode indicar uma versão específica a ser instalada ou não.

Eventualmente, você pode incorrer na seguinte mensagem de erro:

Pass --path=`path/to/wordpress` or run `wp core download`.

Ela quer dizer que você precisa indicar exatamente em que local se encontra o seu site, dentro do provedor.
Lembre-se que, mesmo uma simples conta compartilhada em um provedor de hospedagem pode ter vários sites WordPress instalados.
E instalar coisas erradas em lugares errados pode ser muito ruim.
Segue alguns exemplos de uso do WP-CL.

Como instalar o WordPress pelo WP-CLI

Instalar a mais nova versão do WordPress é uma das coisas que você pode fazer com o aplicativo:


sudo -g www-data -i -- wp core download --path=/var/www/html/novo-blog

Creating directory '/var/www/html/novo-blog/'.
Downloading WordPress 4.8.1 (en_US)...
md5 hash verified: f3dd0e033519aa363eb07e13c6676e3c
Success: WordPress downloaded.

Acima, o comando é apenas “wp core download”. Como executei no meu servidor local (que tem configurações diferentes de provedores de hospedagem (até por que não é um)), precisei dar mais algumas informações ao WP-CLI:

  • sudo -g www-data — pedi para que o comando seja executado com os privilégios do grupo ‘www-data’.
  • --path=/var/www/html/novo-blog indiquei um novo diretório para baixar e instalar a última versão do WordPress.

Se o diretório, indicado no parâmetro ‘–path’ não existir, ele será criado e o WordPress baixado para lá.
Abra o navegador no diretório recém criado e inicie o processo de instalação do novo site.

Como atualizar todos os plugins do seu site WordPress

Você pode atualizar todos os plugins instalados no seu site com um único comando. Veja:


wp plugin update --all --path='meusite.com.br/blog'

Ativando modo de manutenção...
Fazendo download de (https://downloads.wordpress.org/plugin/akismet.3.3.4.zip)...
Descompactando a atualização...
Instalando a versão mais recente...
Removendo a versão antiga do plugin...
Plugin atualizado com sucesso.
Fazendo download de (https://downloads.wordpress.org/plugin/jetpack.5.2.1.zip)...
Descompactando a atualização...
Instalando a versão mais recente...
Removendo a versão antiga do plugin...
Plugin atualizado com sucesso.
Fazendo download de (https://downloads.wordpress.org/plugin/wpforms-lite.zip)...
Descompactando a atualização...
Instalando a versão mais recente...
Removendo a versão antiga do plugin...
Plugin atualizado com sucesso.
Desativando modo de manutenção...
+--------------+-------------+-------------+---------+
| name         | old_version | new_version | status  |
+--------------+-------------+-------------+---------+
| akismet      | 3.3.3       | 3.3.4       | Updated |
| jetpack      | 5.1         | 5.2.1       | Updated |
| wpforms-lite | 1.3.8       | 1.3.9.1     | Updated |
+--------------+-------------+-------------+---------+
Success: Updated 3 of 3 plugins.

Para mim, este processo durou 3 segundos. 😉

Assine este site

Todo dia eu aprendo alguma coisa nova sobre administração de servidores, WordPress, bancos de dados, Android etc.
Desde o começo, este site existe para compartilhar o que sei com outras pessoas.
Se quiser ser avisado(a) quando houver post novo no blog, inscreva-se abaixo!

Referências

https://wp-cli.org/.

Dicas e truques de configuração do SUDO para Linux e UNIX

Nos sistemas operacionais baseados no Linux ou no UNIX (MacOS, FreeBSD etc) há tarefas administrativas, que só podem ser executadas com privilégios de superusuário (root).
O comando sudo nasceu da necessidade do sysadmin delegar algumas destas tarefas a outros usuários do sistema — sem precisar expôr a própria senha.
captura de tela comando sudo
Usuários pertencentes ao grupo “sudo”, podem assumir privilégios superiores com o uso da própria senha — sem ter conhecimento da senha do root, portanto.
Quem usa o computador sozinho, pode fazer tudo como usuário comum. Eventualmente, pode “se investir de poderes especiais”, com o uso do sudo — e voltar à segurança de um usuário comum, logo em seguida.
Uma, dentre muitas tarefas comuns a todo usuário, por exemplo, é atualizar o sistema. O comando permite fazer isso, sem exigir que se autentique como root.
Na configuração padrão do sudo, usuários com acesso ao comando podem realizar as seguintes tarefas (entre outras):

  • Acessar dispositivos restritos do hardware.
  • Formatar e alterar sistemas de arquivos.
  • Instalar novos aplicativos e configurar áreas sensíveis do sistema.

Como configurar o comportamento do sudo no meu sistema

O arquivo de configuração do sudo é o /etc/sudoers. Contudo, as boas práticas de segurança, recomendam sempre usar o programa visudo para alterar este arquivo:


sudo visudo


Dentro do arquivo de configuração, há uma sessão com várias linhas. Cada uma delas começa com uma entrada Defaults.
Você pode alterar o comportamento do sudo:

  • editando uma destas linhas — removendo ou editando algum parâmetro ou, ainda, acrescentando um novo.
    Para acrescentar, vá até o final da linha e acrescente uma vírgula seguida do novo parâmetro desejado;
  • adicionando uma nova linha Defaults, seguida da tabulação e dos parâmetros de configuração que você deseja acrescentar.

Por ser muito usado no Linux, já escrevi alguns artigos sobre o sudo (veja a lista no final deste texto). Não esqueça também de dar uma olhada nas tags visudo e sudo, para obter mais informações sobre o uso da ferramenta.
sudo sudoers environment variables
Algumas pessoas, por questão de organização, preferem ter uma linha Defaults exclusiva para cada parâmetro de configuração.
Acompanhe as dicas, para entender melhor.

Edite corretamente o /etc/sudoers

Trata-se de uma dica de segurança.
O UNIX e o Linux são sistemas operacionais projetados para atender uma grande quantidade de demandas e usuários simultâneos.
O visudo bloqueia o acesso de outros usuários ao /etc/sudoers, enquanto você o estiver editando.
Portanto, use sempre o visudo para ajustar o sudo no seu sistema. Não edite o /etc/sudoers diretamente.
Além disso, o visudo faz uma análise do sudoers, logo depois da edição.
Se houver erros, ele avisa e permite que você volte para alterar e corrigir o arquivo.

Organize os Defaults

Como já disse, você pode adicionar vários parâmetros e valores por linha ou abrigar um único parâmetro por linha.
A escolha é sua.
A configuração, abaixo


Defaults        env_reset,timestamp_timeout=5,pwfeedback

tem o mesmo efeito desta


Defaults        env_reset
Defaults        timestamp_timeout=5
Defaults        pwfeedback

Eu gosto do segundo método de organizar os ajustes, pois ele permite adicionar um comentário (com ‘#’) ao final de cada linha.
A forma mais comum de usar a palavra-chave é assim: Defaults. Mas em sistemas mais complexos, com um grande número de usuários, em que o sysadmin deseja delegar especificamente e com abrangência, há outras formas de uso. Veja:

  • Defaults parameter, parameter_list — # os parâmetros desta configuração afetam todos os usuários autenticados no host.
  • Defaults@Host_List parameter, parameter_list # afeta todos os usuários logados no especificado em @Host_List.
  • Defaults:User_List parameter, parameter_list #afeta todos os usuários especificados na lista :User_List.
  • Defaults!Cmnd_List parameter, parameter_list #afeta os comandos especificados na lista !Cmnd_List.
  • Defaults>Runas_List parameter, parameter_list #afeta comandos listados, desde que executados por um usuário específico.

Como criar um arquivo de log do sudo

Como comportamento padrão, o sudo envia o log ou relatório sobre o que ocorreu durante o seu uso para o syslog(3).
Opcionalmente, você pode criar um arquivo para receber este relatório.
Adicione a seguinte linha:


Defaults        logfile="/var/log/sudo.log"

Se quiser que o seu arquivo de log contenha informações sobre o host e o ano relacionados às ações relatadas, use assim:


Defaults        log_host,log_year,logfile="/var/log/sudo.log"

Para poder ver o conteúdo do seu novo arquivo de log, use o sudo e o cat:


sudo cat /var/log/sudo.log

Jun 12 15:32:09 2017 : justincase : HOST=s5ultra : TTY=pts/0 ;
    PWD=/home/justincase ; USER=root ; COMMAND=/bin/ls
Jun 12 15:32:43 2017 : justincase : HOST=s5ultra : TTY=pts/0 ;
    PWD=/home/justincase ; USER=root ; COMMAND=/usr/sbin/visudo
Jun 12 15:34:46 2017 : justincase : HOST=s5ultra : TTY=pts/0 ;
    PWD=/home/justincase ; USER=root ; COMMAND=/bin/cat /var/log/sudo.log

Leia mais dicas e truques para usar com o sudo:

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Referências

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux_OpenStack_Platform/2/html/Getting_Started_Guide/ch02s03.html.
https://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/.

Personalize a mensagem de senha errada do sudo no seu sistema

O sudo permite customizar a mensagem exibida a cada vez que se erra na digitação da senha de autenticação.
Isto é feito através da inclusão ou edição do valor do parâmetro badpass_message=.

Siga o procedimento, abaixo, para criar uma mensagem personalizada de aviso de senha errada, para o sudo.
Abra o editor padrão de edição do sudoers:


sudo visudo

Em seguida vá até seção que tem os parâmetros Defaults.
Inclua mais um:


Defaults        badpass_message="Não posso deixar você fazer isso, Dave."

Eu usei uma frase do filme de Stanley Kubrick, 2001: Uma Odisseia no Espaço.


Leia mais dicas de configuração do comando sudo, clicando na tag visudo e/ou sudo.

A opção insults, no sudoers, se sobrepõe a badpass_message.
Mas você pode desativar qualquer parâmetro Defaults, inserindo um ‘#’ no começo da linha dele.
O bad pass msg acaba sendo uma alternativa para sistemas “chatos” que usam um sudo compilado sem suporte a insults.
Em tempo, saiba mais sobre como “ofender” as pessoas que erram a senha no sudo, neste post.
Divirta-se!

Configure o sudo para fazer piadas quando o usuário erra a senha

A cultura hacker é extremamente forte entre usuários Linux/UNIX e a descontração, quando alguém comete um erro, sempre fez parte da comunidade.
O comando sudo, como comportamento padrão, admite até 3 tentativas de senhas erradas.
Depois disto, ele termina e envia uma mensagem ao root (administrador do sistema), informando sobre a “tentativa de obter privilégios” perpetrada pelo usuário em questão.
comando sudo insultos
As piadas ou “insultos”, são variados.
Veja alguns exemplos (com a minha tradução livre):

  1. You speak an infinite deal of nothing — “Você diz um amontoado de besteiras”
  2. Take a stress pill and think things over — “Tome um calmante e pare para pensar”
  3. That’s something I cannot allow to happen — “Taí uma coisa que eu não posso deixar acontecer”
  4. You silly, twisted boy you — “Seu tolo, você é um menino confuso”
  5. I have been called worse — “Já me chamaram de coisa pior”

Sinta-se à vontade para sugerir uma tradução diferente, nos comentários, caso não concorde com alguma (sem ofensas!) Sua contribuição será bem vinda. 😉

Como configurar o sudoers para ofender os usuários

Abra o arquivo de configuração do sudo com o visudo:


sudo visudo

localize a seção que tem os Defaults e acrescente uma linha com o seguinte conteúdo:


Defaults	insults

Se não quiser acrescentar uma linha, é possível apenas adicionar uma vírgula, seguida do parâmetro ‘insults’ a qualquer uma das linhas já existentes.
Veja como está esta sessão no meu arquivo de configuração sudoers:


Defaults        env_reset,timestamp_timeout=5,pwfeedback, insults
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin$
Defaults        insults

A depender do seu sistema, pode ser necessário se reautenticar para poder ver os efeitos da alteração.

Como obter a lista de insultos, ofensas e piadas do sudo

No Debian 9, a lista completa de insultos pode ser obtida no arquivo binário ‘/usr/lib/sudo/sudoers.so’.
Ele pode ser encontrado com o comando find, caso não esteja lá:


find /usr/lib/sudo -type f | xargs grep "fallen in the water"

Arquivo binário /usr/lib/sudo/sudoers.so coincide com o padrão

Por ser um arquivo binário, se você usar o comando cat nele, vai obter um monte “lixo” na sua tela.
Tente encontrar as frases com o seguinte comando, no terminal:


strings /usr/lib/sudo/sudoers.so | less

Agora digite ‘/dumber’ e as frases irão aparecer na tela.
No Askubuntu (link no final), é possível encontrar as várias listas de insultos, separadas por arquivos.
Minhas preferidas são as que usam falas do filme 2001: A Space Odissey (2001: Uma Odisseia no Espaço).
Veja algumas:

  • “Just what do you think you’re doing Dave?”
  • “It can only be attributed to human error.”
  • “That’s something I cannot allow to happen.”
  • “My mind is going. I can feel it.”
  • “Sorry about this, I know it’s a bit silly.”
  • “This mission is too important for me to allow you to jeopardize it.”
  • “I feel much better now.”

Desta vez, vai sem tradução…

sudo insults list
Sudo insults list.

Acho, ainda, importante frisar que certas frases, desta “brincadeira”, induzem a erro de interpretação, como os exemplos abaixo:

  • invalid authentication methods.
  • Invalid authentication methods compiled into sudo! You may not mix standalone and non-standalone authentication.
  • There are no authentication methods compiled into sudo! If you want to turn off authentication, use the –disable-authentication configure option.
  • Unable to initialize authentication methods.

As mensagens acima podem levar um usuário desavisado a “entrar em parafuso” (se ele souber algum inglês, claro). Além disso, elas não fazem sentido algum para os propósitos do sudo.
Se você, como sysadmin, se incomoda com perguntas “inocentes” de usuários, ativar os insults pode não ser uma boa ideia.
Na dúvida, para não ter problemas, use uma mensagem personalizada para o sudo.

Referências

https://askubuntu.com/questions/837558/where-are-sudos-insults-stored/837562.