De acordo com issoNoções básicas de injeção SQLartigo:
<…> as operações mais usadas para quebrar/difundir as consultas SQL são.
'
Citação única"
Citação dupla\
Barra invertida (caractere de escape do MySQL)
Às vezes também existem caracteres codificados em hexadecimal (por exemplo 0x3a3a
).
Quero registrar e descartar todas as solicitações que os contenham. Aqui é onde estou até agora:
set $susp 0;
if ($request_uri ~ "%27") {
set $susp 1;
}
location ~ \.php {
if ($susp = 1) {
access_log /var/log/nginx/for-review.log;
return 500;
}
# further fastcgi configuration
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
(Eu entendi aquilose é mau, mas éparecia necessário)
Isso não é acionado /foo/ba'r
, mas pelo menos funciona bem /?foo=b'ar
. Mas é isso: os outros personagens que tento também não são acionados.
Aqui está o que eu tentei:
$request_uri ~ "%27|%22"
: simples funciona, duplo não$request_uri ~ "%27|\""
: simples funciona, duplo não$request_uri ~ "%27|0x"
: ambos funcionam, mas0x
obtêm falsos positivos empolegar=230x240
E nem tenho certeza de como abordar a barra invertida.
Vocês sabem como fazer isso funcionar?
PS Pensei em usarAmazon ERA, mas requer outro serviço (Cloudflare ou balanceador de carga) para o qual ainda não estou pronto.
PS: Entendo que outras medidas precisam ser tomadas; isso supostamente elimina aquelas varreduras GET irritantes. Também duvido que os visitantes legítimos acabem tendo isso enquanto navegam. Minha lógica era esta: qualquer barreira que complicasse o hack ajuda
Responder1
O principal nginx.conf
, abaixo http {}
:
# set the variable
map "$request_uri" $susp {
default 0;
"~*(?<suspm>(\\x|%)(3c|3e|5c|22|27)+)" 1;
}
# match logging
log_format suspl '$remote_addr /$suspm/ - $remote_user $host [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$http_cookie"';
Configuração de host virtual individual:
location / {
if (\$susp = 1) {
access_log /var/log/suspl.log suspl;
return 403;
}
# etc…
}
Também,
Duvido que os visitantes legítimos acabem tendo isso enquanto navegam
Atenção: acontece que eles carregam algo parecido %7B%22
em seus cookies definidos por alguns (não todos) softwares de rastreamento/análise.