원격코드실행(RCE) 취약점 페이로드(eval(), Response.Write())

뭉치치·2025년 4월 17일

개요

eval(), Response.Write() 메소드가 포함된 HTTP Request를 로그에서 확인하였다.
일반적인 요청에선 해당 메소드를 이용하여 요청하지 않으며, 웹 취약점 점검의 목적으로 요청한 것이 아닌 URL이라면 의심해 볼 여지가 있다.

이번 포스팅에선 이 요청이 어떤 의도를 가진 공격인지 정리해보려고 한다.

페이로드 구조

GET /search.asp?searchword={if:eval(action)}99&action=Response.Write(Hex(504286))

- eval(action)

  • 해당 구문은 문자열을 코드로 가정하여 실행하는 동작을 하며, 보통 특정 코드 문자열을 받아 실행하게 되어 보안상 위험한 함수로 간주된다. action 파라미터에 특정 코드를 담아 실행시키기를 유도하고 있다.

- Response.Write(Hex(504286))

  • 해당 구문은 504286 라는 숫자를 16진수로 변환해서 출력하라는 의미이다.
  • 5042867B9BE (16진수)

공격 판단

  1. eval()은 실 서비스에선 솔직히 쓸 일이 없음(개발자들도 안씀)
    • 정상적인 웹 사용자가 URL 파라미터에 eval() 같은 함수를 넣는 경우는 거의 없다.
  2. 자동화된 공격도구의 전형적인 패턴
    • eval(), exec(), Response.Write() 등은 공격자들이 코드 실행이 가능한 지 탐지하기 위해 자동화 도구에서 자주 사용되는 패턴이다.
  3. 확인된 웹 취약점 점검 일정이 없기도 하고, 외부에서 요청한 IP에 대해서도 업무 연관성이 존재하지 않았다.

마치며

해당 공격은 서버가 외부 입력을 eval 함수로 실행할 수 있는지 테스트하려는 원격 코드 실행(RCE) 공격 페이로드로 보인다. 실행 결과로 7B9BE가 반환된다면 해당 서버는 취약한 상태라고 파악할 수 있는 것이다.

이러한 경우에 "이건 점검 목적이겠지" 라고 먼저 가정하는 건 보안 상 매우 위험한 판단이다.
실 서비스에 대한 무단 스캐닝은 그 자체로 공격 행위이며, 탐지 시 절차에 따라 대응해야한다.

profile
아직은 부족한 것이 많은 화이트햇 해커

1개의 댓글

comment-user-thumbnail
2025년 4월 17일

eval은 정말 사용해본 적도 없는데, 정확히 뭔지도 몰랐다는건 반성하게 되네요! 또 배워갑니다!!

답글 달기