Eu encontrei uma resposta para isso. Basta visitar seu site da seguinte forma: example.com/etc/passwd
Isso trará um 403 instantâneo do mod_security e o registrará em seu log padrão.
Estou executando isso no meu servidor de teste pela primeira vez e acho que fiz tudo corretamente. Eu posso ver as entradas no modsec_audit.log quando eu executo o nikto2, mas para a vida de mim eu não posso fazer manualmente o mod_security bloquear nada. Coloquei o SQL em URLs, em formulários, etc, e acabei de obter nossa típica página HTML 404 amigável, não um bloco de mod_security, que deve ser um erro 403 ou um bloqueio total.
Estou preocupado que seja apenas detectar e não parar. Eu verifiquei minha configuração e ela está definida para parar os ataques e não apenas detectá-los. Qualquer ideia de como posso verificar isso está bloqueando ataques? Alguém tem uma URL de teste ou algo que eu possa fazer para provar que está funcionando?
Por padrão, o mecanismo só estará detectando modo:
SecRuleEngine DetectionOnly
Você precisa ajustar SecRuleEngine On
sed -ie 's/^\s*SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/modsecurity/modsecurity.conf
e reinicie o Apache.
Você pode usar o Google para algum 'XSS tester' ou 'XSS scanner' on-line e permitir que a ferramenta realize alguns ataques solicitados em seu site de teste. A ferramenta também pode fornecer um relatório detalhando o resultado do 'ataque'.
Você pode alterar seus registros para ver se as entradas correspondem ao relatório, especialmente a data, a hora e o endereço IP, se houver.
Eu tenho um cheque abaixo
$ curl -ks -o /dev/null -w '%{http_code}' "https://something.example.com/foo?username=1'%20or%20'1'%20=%20'"
Se você obtiver um 403
, o ModSecurity estará funcionando como esperado.
No seu navegador, tente acessar um site hospedado nesse servidor, como neste exemplo:
http://www.anywebsitefromthatserver.com/aphpfilethatdonotexist.php?something=../../etc
Em seguida, verifique o log do Modsecurity e você terá algo semelhante (Se você tiver WHM / cPanel - >, verifique no WHM - > Modsecurity Tools para ver o log):
2017-12-14 10:28:41 www.anywebsitefromthatserver.com YOUR IP: 68.XX.XX.XX CRITICAL 404 930100: Path Traversal Attack (/../)
O log detalhado será como:
Request: GET /aphpfilethatdonotexist.php?something=../../etc
Action Description: Warning.
Justification: Pattern match "(?i)(?:\x5c|(?:%(?:c(?:0%(?:[2aq]f|5c|9v)|1%(?:[19p]c|8s|af))|2(?:5(?:c(?:0%25af|1%259c)|2f|5c)|%46|f)|(?:(?:f(?:8%8)?0%8|e)0%80%a|bg%q)f|%3(?:2(?:%(?:%6|4)6|F)|5%%63)|u(?:221[56]|002f|EFC8|F025)|1u|5c)|0x(?:2f|5c)|\/))(?:%(?:(?:f(?:(?:c%80|8)%8)?0%8 ..." at REQUEST_URI_RAW.
Se você vir um log semelhante, pode ter certeza de que seu Modsecurity está ativado e funcionando.
Você pode dar uma olhada no Guia do Rapid7 para configuração básica.
Existem alguns pares de teste que devem produzir entradas de log. As entradas de log aparecem em / var / log / apache2 / access e /var/log/apache2/modsec_audit.log dependendo da sua configuração
Teste XSS
curl 'http://www.example.com/?q="><script>alert(1)</script>'
Injeção de SQL
curl "http://www.example.com/?q='1 OR 1=1"
Tags mod-security