이에 따르면SQL 주입 기본 사항기사:
<…> SQL 쿼리를 중단/퍼징하는 데 주로 사용되는 작업은 다음과 같습니다.
'
작은따옴표"
큰따옴표\
백슬래시(MySQL 이스케이프 문자)
때로는 16진수로 인코딩된 문자(예: )도 있습니다 0x3a3a
.
해당 내용이 포함된 모든 요청을 기록하고 삭제하고 싶습니다. 지금까지의 위치는 다음과 같습니다.
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;
}
(나는 이해만약에 악하다, 하지만 그것은필요해 보였다)
에서는 트리거되지 않지만 /foo/ba'r
적어도 에서는 제대로 작동합니다 /?foo=b'ar
. 하지만 그게 전부입니다. 내가 시도하는 다른 캐릭터도 트리거되지 않습니다.
내가 시도한 것은 다음과 같습니다.
$request_uri ~ "%27|%22"
: 싱글은 작동하지만 더블은 작동하지 않습니다.$request_uri ~ "%27|\""
: 싱글은 작동하지만 더블은 작동하지 않습니다.$request_uri ~ "%27|0x"
: 둘 다 작동하지만0x
가양성 결과가 나타납니다.엄지=230x240
그리고 백슬래시에 접근하는 방법조차 잘 모르겠습니다.
여러분은 그것을 작동시키는 방법을 알고 있습니까?
PS 사용에 대한 생각아마존은 WAS, 하지만 아직 준비가 되지 않은 다른 서비스(Cloudflare 또는 로드 밸런서)가 필요합니다.
추신: 다른 조치를 취해야 한다는 것을 알고 있습니다. 이것은 성가신 GET 스캔을 삭제하도록 되어 있습니다. 또한 합법적인 방문자가 검색하는 동안 이러한 정보를 갖게 될지 의심스럽습니다. 내 논리는 다음과 같습니다. 해킹을 복잡하게 만드는 모든 장벽은 도움이 됩니다.
답변1
주요 내용은 nginx.conf
다음과 같습니다 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"';
개별 가상 호스트 구성:
location / {
if (\$susp = 1) {
access_log /var/log/suspl.log suspl;
return 403;
}
# etc…
}
또한,
합법적인 방문자가 검색하는 동안 이러한 정보를 갖게 될지 의심스럽습니다.
%7B%22
주의 사항: 일부(전부는 아님) 추적/분석 소프트웨어에서 설정한 쿠키와 같은 정보를 가지고 있는 것으로 나타났습니다 .