웹호스팅이 해킹당했다. 그런데 이걸 제목용으로 줄이자니 약간 어색하다. 영어로 쓰자면 "Webhosting hacked"로 굉장히 쉽게 되지만 한국어로 적자니 조금 애매하다. 그런데 그렇다고 또 생각해보니 제목에 있는 모든 단어가 영어를 그냥 그대로 읽은 것이다. 아이러니하다.
어느 날 페이스북 KENNYSOFT 페이지#에 다음과 같은 메시지를 받았다.
사실 이걸 캡처하는 것도 상당히 귀찮았다. 페이스북 페이지 메신저 화면의 스크롤 가능한 범위가 화면의 가운데에 있어서 자동 스크롤 캡처로 잘 안 되었기 때문이다. 직접 조각조각 잘라서 붙일까 하다가 그냥 모바일 버전으로 들어가서 자동 스크롤 캡처를 했다.
다시 문제를 살펴보자면, 내가 모르던 파일이 생성되어 있었다. 파일 업로드가 지정된 위치가 아닌 다른 곳에 된 것이다. 원인은 바로 알 수 있었다. 업로드 관련되어 만든 것이 단 하나, SSS 업로드밖에 없었기에 그곳이 문제이다.
임의의 경로에 모르는 파일이 생성되고 있었다. 이는 즉 PHP가 실행 가능한 경로에 실제로 PHP 파일이 올라올 수 있다는 얘기고 이를 통해 원하는 코드를 실행시킬 수 있는, 매우 심각한 보안 문제이다. 다음은 실제로 올라온 파일을 실행한 화면이다.
웹셸로, 파일에 대한 모든 관리 기능이 수행될 수 있다. 이 셸은 단지 파일 관리만 할 수 있지만, 추후 추가로 올라온 셸에서는 많은 기능이 있었다. 정말 위험하다.
처음부터 PHP 파일 업로드를 완전히 신뢰하지는 않았기에, 최대한 보안 문제가 없도록 소스를 짜 보았으나 내가 상상하지 못한 공격이 너무나도 많이 들어와서 그냥 업로드 기능 자체를 없애기로 했다. 이제부터는 FTP로만 업로드하려 한다.
또한, 업로드된 파일을 받는 곳 등의 PHP 실행을 차단했다. 차단된 후 결과는 다음과 같다.
공격자가 생성한 두 개의 PHP 파일을 기록 보존을 위해 남겨 둔다. sad.php는 PHP 코드 없이 팀 정보 정도만 나타내고, pic4.php가 위에서 언급한 웹셸이다.
언제부터인지 모르겠는데 .htaccess의 RemoveHandler
가 작동하지 않고 있었다. 맙소사. 서버에서 관련 파일을 모두 지웠다.
지우기 전에 잠시 본 기억으로는 kennysoft와 다른 계정(아마도 apache?)으로 돌아가고 있었던 것 같은데 이왕 뚫린거 SSL Certificate Chain 관련 설정을 바꿔놓고 할 걸 그랬다. 도저히 재현할 수가 없다.
관련하여 다음 메일을 주고받았다.
거의 하루 정도 만에 이를 감지하고 나에게 메일을 보낸 것인데, 어느 곳에도 저 URL로 가는 링크가 없었음에도 어떻게 감지한 것인지 신기할 따름이다.