홈으로 돌아가기

퍼징 공격: Nginx 로그 분석 2026

Nginx 서버에 대한 실제 퍼징 공격 분석: 20,000 요청, .env부터 POST flood까지 12개 벡터. Nuclei/ffuf 도구 및 보호 조치 분석 — 속도 제한, 메서드 라우팅, catch-all. 고부하 인프라를 위한 실용적 권장 사항.

20k Nginx 로그의 12개 퍼징 벡터 2026
Advertisement 728x90

퍼징 공격 2026: 20,000개 Nginx 로그 라인에서 분석한 12가지 공격 벡터

자동화된 퍼징 스캐너가 Nginx를 실행하는 서버를 5분 동안 20,000개 이상의 요청으로 공격했습니다. 동일한 서브넷의 두 IP(185.x.x.52, 185.x.x.38)가 User-Agent curl/8.7.1을 사용했습니다. 가능한 도구: Nuclei 사용자 정의 템플릿 또는 GitHub 워드리스트를 사용한 ffuf/gobuster입니다. 공격은 포물선 패턴을 따랐습니다: 초당 100개 요청으로 시작하여 한계를 밀어붙이고, 두 번째 IP로 확대되며, 쓰레기 경로로 점차 줄어들었습니다.

스캐너는 .env 파일로 시작하여 디버그 스크립트, LFI/RCE, CI/CD 설정, POST 플러드로 이동했습니다. 모든 요청은 기본 Nginx 설정(속도 제한, 메서드 라우팅, SPA용 캐치올)에 의해 차단되었습니다.

상위 12 스캐닝 벡터

로그 분석은 특징적인 패턴을 드러냈습니다. 실제 요청과 함께 주요 예시입니다:

Google AdInline article slot
  • .env 파일 탐색: /.env.staging, /.env.local, /api/.env. 목표 — 데이터베이스 키, AWS 토큰.
{"time_local":"16/Mar/2026:17:19:51 +0000","remote_addr":"185.x.x.52","request_method":"GET","request_uri":"/.env.staging","status":"404","body_bytes_sent":"53","http_user_agent":"curl/8.7.1"}
  • 서버 디버깅: /admin/admin_phpinfo.php4, phpinfo.php. LFI를 위한 버전 및 경로 정찰.
  • Yii2/Laravel 디버그: /debug/default/view?panel=config — 비밀번호가 포함된 설정 유출 시도.
  • GitHub 튜토리얼: /07-accessing-data/begin/vue-heroes/.env — 강좌에서 복사-붙여넣기된 코드 검색.
  • NPM 픽스처: /babel-plugin-dotenv/test/fixtures/dev-env/.env — 벤더 디렉토리 내 테스트.
  • Grafana LFI: /login?redirectTo=%2Fpms%3Fmodule%3Dlogging%26file_name%3D..%2F..%2F..%2F..%2F..%2F..%2F~%2F.aws%2Fcredentials (상태 429).
  • RCE 주입: /admin/config?cmd=cat%20/root/.aws/credentials.
  • SSH 키: /.ssh/id_rsa.
  • CI/CD: /.gitlab-ci.yml, sendgrid.env.
  • Next.js 아티팩트: /_next/static/chunks/app/error.js 소스 맵용.
  • POST 플러드: /api/files/upload (상태 405).
  • 쓰레기: /config.json.bak.1.

Nginx 수준 방어 메커니즘

엄격한 설정 덕분에 서버는 부하를 견뎌냈습니다. 효과적인 관행 분석:

  • 속도 제한: 로그인 폼 및 API에서 limit_req zone=grafana_login_ip burst=5 nodelay;. LFI 요청은 429를 반환하여 CPU를 절약했습니다.
  • 메서드 제한: 지원되지 않는 엔드포인트에서 POST 차단 — 405 Method Not Allowed. 요청은 앱 서버에 도달하지 않습니다.
  • 캐치올 라우팅: try_files $uri $uri/ /index.html;는 404 대신 200으로 SPA 페이지를 제공합니다. 봇은 설정 대신 40KB 이상의 HTML을 다운로드했습니다.
  • SNI 검증: 잘못된 Host로 HTTP/2에서 421 Misdirected Request — 멀티플렉싱 스캐너를 느리게 합니다.

공격 역학 분석

{"time_local":"16/Mar/2026:17:19:51 +0000","remote_addr":"185.x.x.52","request_method":"GET","request_uri":"/config.php","status":"200","body_bytes_sent":"40414","http_user_agent":"curl/8.7.1"}

봇은 200을 성공으로 해석했지만 쓰레기를 받았습니다. 이러한 트릭은 워드리스트 생성기 파서를 혼란스럽게 합니다.

퍼징은 진화 중입니다: 워드리스트는 GitHub, NPM, 튜토리얼에서 변이합니다. 스캐너는 제한에 적응하지만, 기본 위생(.git 없음, 테스트 없음) + Nginx 필터가 방어를 유지합니다.

Google AdInline article slot

핵심 요약:

  • 2026년 퍼징은 .env, LFI/RCE, CI/CD, GitHub 복사-붙여넣기에 초점을 맞춥니다.
  • 20k 요청/5분은 Nuclei/ffuf에 정상적입니다; 속도 제한 burst=5가 차단합니다.
  • 캐치올과 200 OK + 큰 페이로드는 봇을 혼란시킵니다.
  • 메서드 라우팅(405) 및 SNI(421)는 백엔드 부하를 최소화합니다.
  • 정기적인 로그 감사는 새로운 워드리스트 패턴을 발견합니다.

— Editorial Team

Advertisement 728x90

다음 읽기