Hatena
PHP 긴급 취약점 "php2shell"으로 공격받았는지? 서버에 남는 3가지 흔적과 확인 방법
보안처음 오른 때 점수 311
이 글은 "php2shell"이라는 심각한 PHP 취약점을 이용해 웹 서버가 이미 공격당했는지 확인하는 방법을 설명합니다. PHP를 업데이트한 뒤에도 서버에 남아 있을 수 있는 흔적을 어디서 찾아야 하는지 보여 줍니다.
무슨 일이 있었나
인프라 엔지니어인 글쓴이는 PHP를 업데이트해도 공격자가 이미 심어 둔 나쁜 파일이나 실행 중인 나쁜 프로그램은 사라지지 않는다고 말합니다. 공격 시도는 취약점이 공개되기 4일 전인 2026년 10월 17일에 이미 보였습니다. 그래서 10월 17일부터 업데이트를 마친 시각까지의 서버 기록(로그)을 확인해야 합니다.
주요 숫자와 사실
- 공격 시도는 2026년 10월 17일에 확인되었습니다.
- 취약점은 2026년 10월 21일에 공개되었습니다.
- 악성 양식 요청은 약 3.5MB에 이를 수 있고, 필드 이름이 매우 깁니다.
- "Unknown on line 0" 오류는 스크립트가 시작되기도 전에 메모리가 부족했을 수 있다는 뜻일 수 있습니다.
- 웹 서버 프로세스가 셸(명령을 실행하는 프로그램)을 실행했다면 공격이 성공했을 가능성이 가장 높은 직접적인 신호입니다.
먼저 확인할 것
흔적을 찾기 전에 확인할 기간을 정해야 합니다. 로그 순환(오래된 로그를 주기적으로 지우는 기능) 때문에 약 일주일 뒤에는 오래된 로그가 삭제될 수 있습니다. 그래서 오래된 로그가 남아 있는지 먼저 확인하고, 안전한 곳에 복사해 두어야 합니다. 그다음 세 곳을 봅니다. 웹 요청 기록, PHP 오류 로그, 웹 서버가 시작한 프로세스입니다.
확인해야 할 항목
왜 중요한가
오류 하나만으로는 공격이 있었다고 확정할 수 없습니다. 큰 파일을 정상적으로 올릴 때도 메모리 오류가 날 수 있고, 성공한 공격도 정상적인 200 응답을 돌려줄 수 있기 때문입니다. 그래서 요청, 오류, 프로세스의 시각을 함께 비교해야 합니다. 지금부터 요청 크기를 기록해 두면 앞으로의 점검이 훨씬 쉬워집니다.
용어 풀이
- PHP
- 웹사이트를 만들 때 많이 쓰는 프로그래밍 언어입니다.
- WAF
- 웹 공격을 막기 위해 요청을 검사하는 웹 방화벽입니다.
- Apache
- 많이 쓰이는 웹 서버 프로그램입니다.
- php2shell
- PHP에 있는 심각한 취약점의 이름입니다.