owasp zap config
DevSecOps Enterprise Pipeline / security-gate-and-deploy (pull_request) Successful in 45s
DevSecOps Enterprise Pipeline / security-gate-and-deploy (pull_request) Successful in 45s
This commit is contained in:
+11
-12
@@ -59,31 +59,30 @@ jobs:
|
|||||||
- name: 5. Dynamic Security Scan (OWASP ZAP)
|
- name: 5. Dynamic Security Scan (OWASP ZAP)
|
||||||
if: github.event_name == 'push'
|
if: github.event_name == 'push'
|
||||||
run: |
|
run: |
|
||||||
|
echo ">>> Creating isolated network for DAST..."
|
||||||
|
docker network create zap-net
|
||||||
|
|
||||||
echo ">>> Provisioning ephemeral sandbox environment..."
|
echo ">>> Provisioning ephemeral sandbox environment..."
|
||||||
docker rm -f apex-sandbox || true
|
docker run -d --name apex-sandbox --network zap-net apex-solutions:latest
|
||||||
docker run -d --name apex-sandbox apex-solutions:latest
|
sleep 10 # Aumentei para 10s para garantir que o Node arranca bem
|
||||||
sleep 5
|
|
||||||
|
|
||||||
echo ">>> Initiating OWASP ZAP Baseline Scan..."
|
echo ">>> Initiating OWASP ZAP Baseline Scan..."
|
||||||
mkdir -p qatests
|
mkdir -p qatests
|
||||||
docker rm -f zap-scanner || true
|
|
||||||
docker volume rm zap-reports || true
|
|
||||||
docker volume create zap-reports
|
|
||||||
|
|
||||||
|
# O ZAP precisa de aceder ao contentor pela rede criada
|
||||||
docker run --user root --name zap-scanner \
|
docker run --user root --name zap-scanner \
|
||||||
--link apex-sandbox:apex-sandbox \
|
--network zap-net \
|
||||||
-v zap-reports:/zap/wrk/:rw \
|
-v zap-reports:/zap/wrk/:rw \
|
||||||
-t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \
|
-t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \
|
||||||
-t http://apex-sandbox:3000 \
|
-t http://apex-sandbox:3000 \
|
||||||
-r report.html \
|
-r report.html \
|
||||||
-I
|
-I -c zap-baseline.conf
|
||||||
|
|
||||||
docker cp zap-scanner:/zap/wrk/report.html qatests/report.html || true
|
docker cp zap-scanner:/zap/wrk/report.html qatests/report.html || true
|
||||||
|
|
||||||
echo ">>> Decommissioning ephemeral sandbox..."
|
echo ">>> Decommissioning ephemeral sandbox and network..."
|
||||||
docker rm -f zap-scanner || true
|
docker rm -f zap-scanner apex-sandbox || true
|
||||||
docker volume rm zap-reports || true
|
docker network rm zap-net || true
|
||||||
docker rm -f apex-sandbox || true
|
|
||||||
|
|
||||||
- name: 6. Production Deployment & Local Reports
|
- name: 6. Production Deployment & Local Reports
|
||||||
if: github.event_name == 'push'
|
if: github.event_name == 'push'
|
||||||
|
|||||||
@@ -23,6 +23,20 @@ app.get('/about', (req, res) => res.sendFile(path.join(__dirname, '../frontend/a
|
|||||||
app.get('/careers', (req, res) => res.sendFile(path.join(__dirname, '../frontend/careers.html')));
|
app.get('/careers', (req, res) => res.sendFile(path.join(__dirname, '../frontend/careers.html')));
|
||||||
app.get('/contact', (req, res) => res.sendFile(path.join(__dirname, '../frontend/contact.html')));
|
app.get('/contact', (req, res) => res.sendFile(path.join(__dirname, '../frontend/contact.html')));
|
||||||
|
|
||||||
|
// Rota de Pesquisa Vulnerável a Reflected XSS (Armadilha para o OWASP ZAP)
|
||||||
|
app.get('/api/search', (req, res) => {
|
||||||
|
const termoPesquisa = req.query.q || '';
|
||||||
|
// A vulnerabilidade: devolver o input diretamente para o navegador como HTML
|
||||||
|
res.send(`
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<h2>Resultados da pesquisa para: ${termoPesquisa}</h2>
|
||||||
|
<p>Nenhum resultado encontrado.</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
`);
|
||||||
|
});
|
||||||
|
|
||||||
// Configuração do transporte de E-mail
|
// Configuração do transporte de E-mail
|
||||||
let transporter;
|
let transporter;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# Bloqueia a pipeline se encontrar algo grave
|
||||||
|
FAIL_ON_SEVERITY: HIGH
|
||||||
Reference in New Issue
Block a user