☠️ 내 서버를 노리는 수상한 요청들: /index.php 로그 분석과 방어

무지성개발자·2025년 5월 29일
0

개요


픽블엽 프로젝트의 서버 로그를 확인하던 중, 익숙하지 않은 경로 요청을 발견했다.
하루에도 몇 번씩 /index.php 요청이 들어오고 있었고, 이건 우리 프로젝트에서는 단 한 번도 사용한 적이 없는 경로였다.

픽블엽은 Spring Boot + Thymeleaf 기반 웹 프로젝트이기 때문에 .php 파일은 존재하지 않는다.
처음엔 단순한 오타인가 싶었지만, 같은 패턴의 요청이 계속 반복되고 있었고… 찾아보니 이것은 명백한 봇 기반 공격 시도였다.

🤔정체를 파해쳐보자

/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=Hello

이 요청은 PHP 기반의 프레임워크(예: ThinkPHP)에서의 취약점을 노리는 것이다.
Spring Boot에서는 아무 의미 없는 요청이지만, 만약 해당 경로에 취약한 PHP 코드가 존재한다면 공격자는 다음을 시도할 수 있다.

  • 서버 명령 실행
  • 파일 업로드
  • DB초기화 or 탈취
  • 웹 쉘 삽입

🔍Nginx 로그에서도 확인


NginX로그를 확인해보니 /index.php, /wp-admin/setup-config.php 등 존재하지 않는 경로에 대한 요청이 주기적으로 발생하고 있었다. 명백한 공격 패턴이다.

봇이 여러 경로를 자동으로 스캔하며 ‘운 좋게 하나라도 걸려라’ 하는 방식의 무차별 경로 스캐닝 공격이다.

🎯공격의 목적

이런 요청은 단순한 트래픽이 아니라, 실제로 서버의 취약점을 찾기 위한 공격 시도다. 목적은 다음과 같다.

  • 취약한 PHP 코드 실행
  • 서버 권한 획득
  • 민감한 DB정보 탈취
  • 시스템 자원 사용(암호화폐 채굴 등)

🔐어떻게 방어할까?

AWS WAF

AWS WAF는 고객이 정의한 조건에 따라 웹 요청을 허용, 차단 또는 모니터링(계수)하는 규칙을 구성하여 공격으로부터 웹 애플리케이션을 보호하는 웹 애플리케이션 방화벽이다. 해당 서비스를 이용하면 다음과 같은 리소스 유형을 보호 할 수 있다.

  • Amazon CloudFront 배포
  • Amazon API Gateway REST API
  • Application Load Balancer
  • AWS AppSync GraphQL API
  • Amazon Cognito 사용자 풀
  • AWS App Runner 서비스
  • AWS Verified·Access 인스턴스
  • AWS Amplify

단점은 요금이 발생한다는 점 이다.

Nginx에서 직접 차단하기 (내가 선택한 방법)

WAF는 강력하지만 유료이기 때문에, 프리티어 요금제를 사용하는 입장에서는 부담스럽다고 느꼈다.
그래서 비용이 들지 않는 Nginx 필터링 방식을 적용했다.

적용하기

Ngnix 설정 파일(/etc/nginx/nginx.conf)에 아래의 내용을 추가해주면 끝이다.

결론

픽블엽의 경우 기본적으로 Spring boot 프로젝트라 사실 아무 대응을 하지 않아도 큰 문제는 없지만 그래도 찜찜한 로그가 계속 남기기 싫어 공격을 차단한 방법을 찾아보고 적용했다.

보안은 "별일 없겠지"보다 "미리 차단하자"가 훨씬 싸게 먹힌다. Spring 프로젝트라고 해서 PHP 공격을 방치하면 안 되고, 로그에서 수상한 흔적을 발견했다면 바로 대응하는 습관이 중요 한 것 같다.

픽블엽을 통해 서버를 처음 운용해보면서 이런 간단한 것도 이제야 배우는 것 같다.ㅠ

profile
no-intelli 개발자 입니다. 그래도 intellij는 씁니다.

0개의 댓글