diff --git a/conf/modsecurity.conf b/conf/modsecurity.conf
index 980f1e4..b6067f7 100644
--- a/conf/modsecurity.conf
+++ b/conf/modsecurity.conf
@@ -1,6 +1,6 @@
SecRuleEngine On
SecRequestBodyAccess On
-SecResponseBodyAccess Off
+SecResponseBodyAccess On
SecDebugLog /var/log/modsecurity/debug.log
SecDebugLogLevel 0
SecAuditLogParts ABIJ
@@ -20,11 +20,11 @@ SecRule ARGS "(\"role\".*:.*\"admin\")|exec|cat|more|ls|dir|/etc/passwd" \
"id:950006,phase:2,deny,status:403,msg:'Command Injection Detected',log"
# path traversal
-SecRule ARGS "(\./|\.\./)|ftp|metrics|api-docs" \
+SecRule ARGS "\%00|\%2500|(\./|\.\./)|ftp|metrics|api-docs" \
"id:950007,phase:2,deny,status:403,msg:'Path Traversal Attempt',log"
# exposed stuff
-SecRule REQUEST_URI "ftp|metrics|api-docs" \
+SecRule REQUEST_URI "\%00|\%2500|ftp|metrics|api-docs" \
"id:950008,phase:2,deny,status:500,msg:'Attempt to access ftp, metrics, api-docs',log"
# rate limiting on login endpoint
diff --git a/relatorio/relatorio.tex b/relatorio/relatorio.tex
index ba4f127..b526519 100644
--- a/relatorio/relatorio.tex
+++ b/relatorio/relatorio.tex
@@ -409,11 +409,11 @@ SecRule ARGS "(\"role\".*:.*\"admin\")|exec|cat|more|ls|dir|/etc/passwd" \
"id:950006,phase:2,deny,status:403,msg:'Command Injection Detected',log"
# path traversal
-SecRule ARGS "(\./|\.\./)|ftp|metrics|api-docs" \
+SecRule ARGS "\%00|\%2500|(\./|\.\./)|ftp|metrics|api-docs" \
"id:950007,phase:2,deny,status:403,msg:'Path Traversal Attempt',log"
# exposed stuff
-SecRule REQUEST_URI "ftp|metrics|api-docs" \
+SecRule REQUEST_URI "\%00|\%2500|ftp|metrics|api-docs" \
"id:950008,phase:2,deny,status:500,msg:'Attempt to access ftp, metrics, api-docs',log"
# rate limiting on login endpoint (max 5 requests per 30s per IP)
@@ -450,8 +450,9 @@ A vulnerabilidade de escalonamento de permissões (injeção do campo
pela regra id:950006}, que deteta a sequência
\texttt{"role".*:.*"admin"} nos argumentos do pedido e devolve
\texttt{403 Forbidden}, impedindo a criação de contas com perfil de
-administrador. A enumeração de contas via mensagens de erro da aplicação
-permanece sem mitigação ao nível da WAF.
+administrador.
+
+A enumeração de contas via mensagens de erro da aplicação \textbf{permanece sem mitigação} ao nível da WAF.
\subsection{Authentication Testing}
@@ -459,26 +460,23 @@ As regras id:950009--950011 implementam um mecanismo de \textit{rate limiting} s
endpoint de autenticação (\texttt{/rest/user/login}). Para cada endereço IP, é mantido
um contador de pedidos com janela deslizante de 30 segundos: ao ultrapassar 5 tentativas
nessa janela, o servidor devolve \texttt{429 Too Many Requests}, bloqueando eficazmente
-ataques de \textit{brute force} por dicionário. O bloqueio de contas após múltiplas
-tentativas falhadas permanece fora do âmbito da WAF, exigindo lógica aplicacional.
+ataques de \textit{brute force} por dicionário.
+
+O bloqueio de contas após múltiplas tentativas falhadas permanece fora do âmbito da WAF,
+exigindo lógica aplicacional.
\subsection{Authorization Testing}
-O ataque de \textit{Null Byte} (\texttt{\%2500.pdf}) utilizado para
-contornar a validação de extensões de ficheiro no diretório
-\texttt{/ftp} não é diretamente mitigado pelas regras configuradas,
-pois o payload não contém nenhum dos padrões definidos (e.g.,
-\texttt{../}, \texttt{ftp} como argumento). A regra id:950007 teria de
-ser estendida para incluir sequências de \textit{null byte} codificadas
-(\texttt{\%00}, \texttt{\%2500}) para cobrir este vetor de ataque.
+A regra id:950007 e id:950008 bloqueiam o uso de \textit{null byte}
+codificadas para cobrir este vetor de ataque.
\subsection{Session Management Testing}
A configuração da WAF não tem capacidade de alterar os atributos dos
-cookies definidos pela aplicação. A flag \texttt{HttpOnly} do cookie
+cookies definidos pela aplicação. Logo, a flag \texttt{HttpOnly} do cookie
\texttt{token} continua ausente, uma vez que esta é uma propriedade
-definida pela camada aplicacional do \textit{JuiceShop}. Ainda assim,
-a mitigação do XSS (id:950003), descrita na subsecção seguinte, reduz
+definida pelo \textit{JuiceShop}. Ainda assim, a mitigação do XSS
+pela regra id:950003, descrita na subsecção seguinte, reduz
indiretamente o risco de roubo de sessão ao bloquear os vetores que
permitiriam a sua exploração.
@@ -487,36 +485,41 @@ permitiriam a sua exploração.
A regra de SQL Injection (id:950001) bloqueia com sucesso pedidos ao
endpoint de pesquisa de produtos que contenham caracteres como
\texttt{'}, \texttt{"}, \texttt{;} ou a sequência \texttt{--},
-devolvendo \texttt{403 Forbidden}. O payload utilizado pelo
-\textit{sqlmap} é interceptado nesta fase, impedindo a extração de dados
-da base de dados. A regra de XSS/injeção HTML (id:950003) bloqueia
-igualmente os payloads com tags
+devolvendo \texttt{403 Forbidden}.
+
+O payload utilizado pelo \textit{sqlmap} ou por outros fuzzers
+com \textit{SQL injections} são interceptado nesta fase.
+
+A regra de XSS/injeção HTML (id:950003) bloqueia igualmente os payloads com tags
\texttt{} e \texttt{