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진수로 변환해서 출력하라는 의미이다.504286 → 7B9BE (16진수)eval()은 실 서비스에선 솔직히 쓸 일이 없음(개발자들도 안씀)eval() 같은 함수를 넣는 경우는 거의 없다.eval(), exec(), Response.Write() 등은 공격자들이 코드 실행이 가능한 지 탐지하기 위해 자동화 도구에서 자주 사용되는 패턴이다.해당 공격은 서버가 외부 입력을 eval 함수로 실행할 수 있는지 테스트하려는 원격 코드 실행(RCE) 공격 페이로드로 보인다. 실행 결과로 7B9BE가 반환된다면 해당 서버는 취약한 상태라고 파악할 수 있는 것이다.
이러한 경우에 "이건 점검 목적이겠지" 라고 먼저 가정하는 건 보안 상 매우 위험한 판단이다.
실 서비스에 대한 무단 스캐닝은 그 자체로 공격 행위이며, 탐지 시 절차에 따라 대응해야한다.
eval은 정말 사용해본 적도 없는데, 정확히 뭔지도 몰랐다는건 반성하게 되네요! 또 배워갑니다!!