Visão Geral:
Este projeto implementa um estágio DAST (Dynamic Application Security Testing) usando OWASP ZAP no pipeline CI/CD do GitLab para realizar verificações automáticas em aplicações web. O objetivo é detectar vulnerabilidades antes da implantação em produção.
Funcionalidades Principais:
- OWASP ZAP: Ferramenta open-source para testes de segurança em aplicações web.
- Integração com CI/CD no GitLab: Verificações contínuas de segurança ao longo do ciclo de vida do desenvolvimento.
- Geração de Relatórios: Relatórios de vulnerabilidades gerados em PDF e enviados automaticamente por e-mail.
- Suporte a Proxy: Uso de proxy para download de dependências e envio de e-mails.
Variáveis de Ambiente
Defina as variáveis de ambiente abaixo no GitLab para configuração do estágio:
- Proxy Docker:
- : URL do proxy HTTP para o Docker.
Código: Selecionar todos
PROXY_DOCKER
- Configurações SMTP (para envio de e-mail):
- : Endereço do servidor SMTP.
Código: Selecionar todos
HOST_SMTP_ZAP
- : Nome de usuário para autenticação no SMTP.
Código: Selecionar todos
USER_SMTP_ZAP
- : Senha para autenticação no SMTP.
Código: Selecionar todos
PASSWORD_ZAP
- : E-mail remetente para envio do relatório.
Código: Selecionar todos
REMETENTE_EMAIL_ZAP
- Configurações do ZAP:
- : URL da aplicação que será alvo do scan.
Código: Selecionar todos
DAST_TARGET_URL
Código: Selecionar todos
.gitlab-ci.yml
Código: Selecionar todos
dast_scan:
stage: dast_scan
image: maven:3.8.5-openjdk-11-slim
before_script: []
script:
- export http_proxy=$PROXY_DOCKER
- export https_proxy=$PROXY_DOCKER
- apt-get update && apt-get -y install wget wkhtmltopdf msmtp
- wget https://github.com/zaproxy/zaproxy/releases/download/v2.15.0/ZAP_2.15.0_Linux.tar.gz
- mkdir zap && tar -xvf ZAP_2.15.0_Linux.tar.gz -C zap
- cd zap/ZAP_2.15.0
- ./zap.sh -cmd -quickurl $DAST_TARGET_URL -quickprogress -quickout ../zap_report.html -config database.reset=true
- cd ..
- wkhtmltopdf zap_report.html zap_report.pdf
# Configuração para envio de e-mail com relatório
- |
echo "account gitlab" > /etc/msmtprc
echo "host $HOST_SMTP_ZAP" >> /etc/msmtprc
echo "port 587" >> /etc/msmtprc
echo "auth on" >> /etc/msmtprc
echo "user $USER_SMTP_ZAP" >> /etc/msmtprc
echo "password $PASSWORD_ZAP" >> /etc/msmtprc
echo "tls on" >> /etc/msmtprc
echo "tls_starttls on" >> /etc/msmtprc
echo "tls_certcheck off" >> /etc/msmtprc
echo "from $USER_SMTP_ZAP" >> /etc/msmtprc
echo "logfile /var/log/msmtp.log" >> /etc/msmtprc
echo "account default : gitlab" >> /etc/msmtprc
- chmod 600 /etc/msmtprc
# Enviar e-mail com o relatório
- |
current_time=$(date "+%Y-%m-%d")
{
echo "Subject: Relatório DAST gerado em $current_time para o site $DAST_TARGET_URL."
echo "To: $REMETENTE_EMAIL_ZAP"
echo "Content-Type: multipart/mixed; boundary=\"boundary\""
echo ""
echo "--boundary"
echo "Content-Type: text/plain; charset=\"utf-8\""
echo ""
echo "O relatório do DAST está em anexo. O site escaneado é: $DAST_TARGET_URL."
echo ""
echo "--boundary"
echo "Content-Type: application/pdf; name=\"zap_report.pdf\""
echo "Content-Transfer-Encoding: base64"
echo "Content-Disposition: attachment; filename=\"zap_report.pdf\""
echo ""
base64 zap_report.pdf
echo "--boundary--"
} | msmtp --debug --from=default -t