Detectando Malwares em apps PHP

Se você é desenvolvedor PHP já deve ter visto a rodo aplicações com códigos maliciosos ( malwares ) dividindo espaço com o código fonte da aplicação correto ?

O script abaixo é um PHP CLI que pode identificar aqueles malwares escritos e convertidos para base64 que acaba sendo um trabalho insano para identificar.

A utilização é extremamente simples. Veja a documentação disponível

https://github.com/scr34m/php-malware-scanner

SlimPyFTPd

Estou compartilhando com a comunidade um novo script em Python que é um servidor de FTP ultra slim. Ele é fácilmente adaptado para rodar em containers Docker. Para quem tiver interesse em conhecer o projeto ele está publicado em meu Github em:

https://github.com/jaccon/SlimPyFTP

Espero que ajude!

23/10/19 é um dia histórico para a computação

O Google anunciou hoje o chip quântico Sycamore de 53 Qbits e isto muda completamente a história da computação como a conhecemos até hoje. Para ter uma ideia 230 QBits é equivalente a todos os átomos do Universo.

Um dos feitos para que possamos comparar ele resolveu uma operação aritmética com números aleatórios em 200 segundos. A mesma operação se fosse executada pelo computador mais poderoso do mundo o Summit da IBM levaria 10 mil anos para ser resolvido.

Este novo capítulo na história poderá acelerar ainda mais a forma como utilizamos inteligência artificial, segurança da informação e pesquisas nas mais diversas áreas.

A criptografia que protege o seu cartão de crédito hoje poderia ser quebrada em 1 bilhão de anos. Com a computação quântica levaria 100 segundos, isto deve-se pelo motivo que na computação quântica é possível processar uma massa muito maior de dados ao mesmo tempo.

E você o que achou da novidade ?

Criando uma imagem Docker a partir de um container customizado

Neste artigo eu vou abordar como podemos criar uma imagem Docker customizada a partir de um container. A flexibilidade que o Docker nos possibilita é realmente incrível. Além de facilitar o processo de deploy, adicionamos uma camada de segurança onde sem sombra de dúvidas é algo importante para uma aplicação moderna

Bom vamos ao que interessa. Primeiramente vou considerar que você possui o Docker instalado e rodando.

1 Comitando uma imagem

Primeiramente precisamos identificar qual é o ID que identifica o container no qual você quer criar a imagem. A forma mais fácil disto é utilizando o comando:

docker container ps |grep nome-do-container

O comando acima irá ter como saída algo como:

7e0d8d9968a5        nginx                          "nginx -g 'daemon of…"   4 months ago        Up 3 months         0.0.0.0:8006->80/tcp

Na linha acima veja que temos uma hash que identifica o container. É deste ID que precisaremos para fazer o commit do container. Agora com o ID do container na manga, vamos comitar o container:

 docker commit 7e0d8d9968a5 custom_container:version1

O comando acima irá criar um commit do container que esta rodando adicionando uma tag chamada custom_container:version1 no container

O próximo passo é exportar o container para um arquivo .tar para que você possa compartilhar e reutilizar o container em seus ambientes, vamos lá

2 Exportando o novo container para um arquivo .tar

 docker save custom_container:version1 > custom-container.tar

3 Importando uma imagem customizada para dentro do ambiente

Bom nós criamos uma nova imagem a partir de um container customizado, exportamos para um arquivo .tar e agora é a vez de saber como reaproveitar esta nova imagem.

docker load < custom-container.tar

Simples não ? caso você tenha alguma dúvida sobre algum ponto deste artigo utiliza minhas mídias sociais para publicar sua dúvida.

Fix Docker Network Non-Overlapping

Se você chegou até este link deve já ter visto o erro de network non-overlapping do Docker. Isto acontece quando o Docker tenta criar mais de uma interface para stacks diferentes. O fix para este tipo de problema é simples

docker network rm $(docker network ls | grep "bridge" | awk '/ / { print $1 }')

depois você pode iniciar com o comando:

docker-compose up -d

#dockerproblem #fixERROR: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network

Procurando por vulnerabilidades em sites em PHP

Para quem trabalha com sites rodando em PHP já deve ter se deparado com problemas de PHP Shells. Estas vulnerabilidades possibilitam que um invasor rode remotamente códigos em PHP que explore o file system do servidor.

Com isso o invasor pode gerar desde phishing scanning, defacements e algumas vezes até utilizar o servidor para armazenar arquivos remotamente.

A linha de mando abaixo utiliza o GREP para persquisar de forma recursiva por entrada em códigos fonte que possam conter entrada de php shell.

O teste é bem simples:

grep -RPn "(passthru|shell_exec|system|phpinfo|base64_decode|chmod|mkdir|fopen|fclose|readfile|php_uname|eval|tcpflood|udpflood|edoced_46esab) *\(" /var/www

Criando uma API em Express

O Express é um micro framework para desenvolvimento de APIs REST. Neste tutorial irei mostrar como criar uma API REST de forma simples e que tenha as operações básicas do protocolo HTTP com os métodos GET, POST, PUT e DELETE

Vamos começar o projeto criar um pasta chamada backend. Dentro dela iremos rodar o comando:

npm i yarn
yarn init -y

Os comandos acima irão primeiramente instalar o Yarn que é um package manager “gerenciador de pacotes” no Node. Ele é mais eficiente que o NPM por resolver as dependências de uma forma mais robusta.

O segundo comando irá criar um projeto e também o arquivo que gerencia as dependência de um projeto em Javascript o package.json, Com o arquivo package.json criado nós vamos partir para a criação da estrutura básica de nossa API REST

1) Vamos criar um diretório src e dentro dele vamos adicionar um arquivo chamado index.js
O conteúdo deste arquivo será algo como

 

const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World') })
app.listen(3333);

Descobrindo problemas de URLs seguras

Alguns dos problemas mais comuns na implementação do SSL em um servidor web são os erros de No Pad Locks. Algumas vezes você pode até ter o certificado SSL instalado corretamente mas o navegador pode varrer e considerar alguns outros fatores para não habilitar o Pad Lock aquele ícone que identifica que a conexão é segura.

Existe uma ferramenta que ajuda a fazer um scan na URL e identificar possíveis problemas.

https://www.whynopadlock.com/

A utilização é muito simples e tenho certeza que irá ajudá-lo na identificação de um possível problema.

Tags:
SSL Check, Problemas com SSL, SSL PadLocks, fix padlocks

Erro ao iniciar container Docker

Hoje encontrei um problema ao iniciar um docker container com MySQL, todas as configurações estavam OK porém ao carregar o container eu recebia o erro InnoDB: Error: io_setup() failed with EAGAIN after 5 attempts.

A solução foi adicionar o seguinte valor ao SO de hosting do Docker

sysctl -w fs.aio-max-nr=200000

Feito isto todos os problemas foram resolvidos