GET 요청에서 백슬래시, 작은따옴표 및 큰따옴표를 포착하세요.

GET 요청에서 백슬래시, 작은따옴표 및 큰따옴표를 포착하세요.

이에 따르면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주의 사항: 일부(전부는 아님) 추적/분석 소프트웨어에서 설정한 쿠키와 같은 정보를 가지고 있는 것으로 나타났습니다 .

관련 정보