일단 테스트는 해보지 않았지만,

 

글삭제나 댓글삭제라든지 충분히 응용하여 공격할 수 있습니다.

 

물론, 권한이 없는 사용자의 경우 삭제가 되지 않겠지만,

 

권한이 있는 사용자라면?! 글을 읽는 순간 다른 글이 삭제될 수도 있는 거겠죠..! (테스트는 해보지 않음)

 

그 외에도 회원탈퇴의 경우 이전 페이지 확인(?)등의 절차가 있다면 문제가 없을 것이고...

 

아무튼, 권한 사용자가 게시글이나 댓글을 보는 순간 특정 act가 실행될 수 있는 것은 매우 심각한 이슈인 것 같습니다.

 

 

무섭네요 덜덜덜

 

 

 


  • ?
    저도 듣기만 해도 무섭네요 ㅜㅜ 덜덜덜
  • ? Lv16
    덜덜덜
  • Lv16
    다행히.. 추천은 안되나 보군욤
  • Lv15
    그건 안됩니다. img로는 get 전송만 되고, post 전송은 안되기에...

    로그아웃 act 는 get 전송이 허용되어있어서 가능하지요.
  • Lv15 Lv16

    그렇군요..-_-;;

     

    근데 문서추천을 보면

     

    if(!Context::get('is_logged')) return new Object(-1, 'msg_invalid_request');
    
    $document_srl = Context::get('target_srl');
    if(!$document_srl) return new Object(-1, 'msg_invalid_request');
    
    $oDocumentModel = getModel('document');
    $oDocument = $oDocumentModel->getDocument($document_srl, false, false);
    $module_srl = $oDocument->get('module_srl');
    if(!$module_srl) return new Object(-1, 'msg_invalid_request');
    
    $oModuleModel = getModel('module');
    $document_config = $oModuleModel->getModulePartConfig('document',$module_srl);
    if($document_config->use_vote_up=='N') return new Object(-1, 'msg_invalid_request');
    
    $point = 1;
    $output = $this->updateVotedCount($document_srl, $point);
    $this->add('voted_count', $output->get('voted_count'));
    return $output;

     

    이렇게 되어 있던데, Context::get()이 post로 받는 부분인가요 ?

  • Lv16 Lv15
    아니요. [proc] act는 [disp] act와는 달리 get 전송 허용하지않습니다. 오직 post 전송만 허용합니다.

    하지만 /conf/module.xml에서 개발자가 특별히 [proc] act에 대해 get 전송을 허용해준다면 가능하지요.
  • Lv15 Lv19
    아뇨. 해당 제한은 존재하지 않습니다. 다만 로그인 등 일부 act에서 get 요청일시 return하기는 합니다.
  • Lv19 Lv15

    ModuleHandler.class.php 382줄

     

    if($type == 'controller')
    {
    $allowedMethod = $xml_info->action->{$this->act}->method;
    
    if(!$allowedMethod)
    {
    $allowedMethodList[0] = 'POST';
    }
    else
    {
    $allowedMethodList = explode('|', strtoupper($allowedMethod));
    }
    
    if(!in_array(strtoupper($_SERVER['REQUEST_METHOD']), $allowedMethodList))
    {
    $this->error = "msg_invalid_request";
    $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
    $oMessageObject->setError(-1);
    $oMessageObject->setMessage($this->error);
    $oMessageObject->dispMessage();
    return $oMessageObject;
    }
    }

     

    controller 타입에 대해서 제한한다는 코드가 있는데요?

     

     

     

  • Lv15 Lv16
    오오 새로운 사실들을 알아갑니다.ㅎㅎ 아직 1.x 대도 마스터 못했는데 3.x가 나온다니 깜깜하네요 크크크
  • Lv15 Lv19

    그 윗쪽을 보시면 관리자 act들은 전부 종류가 admin이라 제외입니다. 제가 없다고 한 것은 관리자 act입니다.

    제가 잘못 봤습니다.

  • Lv19 Lv16
    으어어 역시 관리자가 킹왕짱이네요... 어... 관리자 act라 하심은 그 xe공홈에서 말씀하신 심각이라 하시는 부분인건가요?
  • Lv16 Lv19
    넵. 현재 관리자의 권한이 막강하기에 확인절차가 걸려 있는게 없습니다.
  • Lv19 Lv16
    하긴, 저도 예전에 에디터 컴포넌트 테스트하면서

    분명 문제가 없었는데 회원이 작성하면 문제가 되길래 봤더니.. 관리자는 removeHack? 을 적용안하고 넘어가서 되던 거였다죠..

    새삼스럽지만, 최고관리자는 확실히 별도로 분리해서 운영하는 게 좋겠네요..
  • Lv19 Lv15
    아닌데요.. type이 'controller'면 체크하게 되어있어요.

    $kind = 'admin';

    kind를 체크하는 게 아니구요. 결국 관리자 act도 모두 제한되어있습니다.

    제일 중요한게 관리자 act인데.. 이걸빼면 그야말로 공격 대상이죠..
  • Lv15 Lv19
    흠.. 모르겠네요.
    제 테스트에서는 proc임에도 잘 삭제되어서 원인을 찾는 중입니다.
  • Lv15 Lv19
    https://www.youtube.com/watch?v=DCdVtdpUmZI (악용 방지를 위해 일부분을 가렸습니다)
  • Lv19 Lv15
    진짜로 삭제되네요.. 무서움.. ㄷㄷ
  • Lv19 Lv16
    헉... 역시 엄청 심각한 문제네요...ㄷㄷㄷㄷㄷ
  • Lv19 Lv11
    오오, 신기..
  • Lv37

    콘노리님 댓글처럼 proc으로 시작하는 act는 POST 방식을 강제하고 있으므로 당장 게시글 삭제 등의 심각한 문제가 발생할 가능성은 낮다고 보이지만, 실제로 이 제한이 완벽하게 작동하고 있는지는 별개의 문제입니다. 자세히 살펴봐야겠네요. (음, 역시 admin 예외가 관건이군요 ㅠㅠ)

    그러나 만약 XE에 종종 발생하는 XSS 취약점을 기반으로 또다른 공격을 쌓아올린다면 POST 방식의 요청을 위조하는 것도 불가능하지는 않습니다. 각각은 큰 문제가 되지 않는 취약점도 2가지 이상이 겹치면 심각해질 수 있어요. 따라서 일단 XSS 취약점이 존재하는 버전의 XE는 모두 위험하다고 볼 수 있겠습니다. (최신버전을 제외한 거의 모든 버전 ㅠㅠ)

    또한 이렇게 같은 사이트내에서 공격을 한다면 현재 XE에서 사용하는 checkCSRF() 함수도 무용지물이 되어버립니다. XE는 리퍼러 헤더를 통해 CSRF를 막고 있는데, 같은 사이트내에서는 항상 리퍼러 체크를 통과하니까요.

     

    정정합니다. YJSoft님 말씀이 맞습니다. 코어의 버그 때문에... 굳이 다른 취약점과 조합하지 않더라도 지금 상태 그대로 치명적입니다.

  • Lv37 Lv16
    우선 긴글 감사합니다. 한자 한자 잘 읽었습니다.ㅎ

    제 사이트의 경우 약 7년전부터 회원가입을 차단했고,
    실질적으로 활동 중인 회원은 2명 정도 밖에 되지 않아서.. 또 10년을 함께한 회원들이라, 아무런 걱정이 없습니다..크크크

    다만, YJSoft님께서 언급하신 (꽤 심각) 이라는 글자 때문에 조금 걱정이 들었습니다.
  • Lv16 Lv37
    최근에 업데이트를 안 하셨다면 꽤 심각합니다.
  • Lv37 Lv16
    최근 업데이트 시점이 언제인가요? 1.8.11부터는 문제가 없는 건지,, 아니면 1.8.10부터?
  • Lv16 Lv37
    그냥 무조건 최신버전이요. (1.8.10은 오히려 버그가 생겨서 1.8.11에서 다시 패치되었어요.)
  • Lv37 Lv16
    아하..! 다행히 최신버전입니다..흐흐 -_ㅠ
  • Lv16 Lv37
    정정합니다. YJSoft님 말씀이 맞습니다. 실제 테스트 결과 치명적입니다 ㅠㅠ
  • Lv37 Lv16
    크헉;;
  • Lv16

    @misol님께서 추천만 주고 가셨당..?!

  • Lv16 Lv37

    미솔님은 XE 공홈을 해킹한 셈이니 네이버에서 보낸 자객을 피해 당분간 잠수타셔야 할 듯 ㅋㅋㅋ

  • Lv37 Lv16
    ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
  • Lv37
    ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
  • Lv37 Lv24
    ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
  • Lv37 Lv11
    ㅋㅋㅋㅋㅋㅋ 드립보소.
  • Lv16

    지금 이 글을 읽으신 분들 다 추천이 되는데,(초반에 코드가 잘못 입력되어서 변경했는데..)

    제가 작성한 추천 코드가 먹히는 건가요?! 덜덜 아니면 다 추천해주신건가..

  • ?

    이..이것은... 추천포인트 얻는 글..?.ㅋㅋ  (참고로 코드 먹힘)

  • ? Lv16
    오오 혹시 직접 추천하셨나요?
  • Lv16 ?
    아니요.....손보다 코드가 더 빨랐습니다.
  • ? Lv16

    헉.. 정말 되는군요 덜덜

     

    코드는 거들 뿐..

  • Lv16 ?
    버그 악용으로 포인트 회수 조치가 취해질지도 모릅니다....ㅋㅋㅋ
  • ? Lv37
    이분은 콘노리님이 보낸 자객을 피해 잠수타셔야겠네요 ㅋㅋ
  • Lv37 Lv16
    헐ㅋㅋㅋㅋㅋㅋㅋㅋ살려주세용
  • Lv16
    코노리님 여기에요!
  • Lv16
    저는 화이트해커란 말입니당!!!! 크앙!! (살려주세요)
  • Lv16 ?

    이미 늦으셨습니다ㅎㅎ (탕탕)

  • Lv16 Lv24
    잡앗따!
  • Lv24 Lv16
    히익
  • Lv16 Lv37
    콘오리님이 자객이 아닌 람보를 보내셨네요! 어메 무서운거 ㅎㄷㄷ
  • Lv37 Lv16
  • Lv16 Lv24

    아직 총겨누고만 있지 쏘진 않았어요( 난 착해요.. ) 날 믿어요..(아 물론 시키면 쏨)

  • Lv24 Lv16
    태연 닮은 람보라면 기꺼이..!!
  • ?
    빨리 패치가 되었으면 좋겠네요
  • Lv16
    그 글을 보는 순간 회원탈퇴도 가능하겠군요 ㄷㄷ
  • Lv16 Lv16
    네 이미 Y님께서 시연테스트 하셨습니다. ㄷㄷㄷ

    https://www.youtube.com/watch?v=DCdVtdpUmZI