이전 목록 다음

그누보드5 최고관리자(admin) 로그인 불가 - 비밀번호 변경한 적 없음

안녕하세요. 홈페이지 관리 업무를 인수인계받은 담당자입니다.
 

[증상]

  • 최고관리자(admin) 계정으로 로그인하면
      "가입된 회원아이디가 아니거나 비밀번호가 틀립니다"라는 메시지가 나옵니다.
  • 아이디와 비밀번호를 변경한 적이 없고, 9월 30일까지는 자동로그인으로 정상 사용했습니다.
  • 시크릿 창에서 직접 입력해도 같은 증상입니다.
  • 정보찾기를 시도하면 관리자 계정은 이용할 수 없다고 나옵니다.

[환경]

- 호스팅: 카페24 단독웹호스팅 (용량 여유 있음, 서비스 정상)

- 그누보드 버전: 5

- PHP 5.2 / MySQL 5.x / EUC-KR

- 카페24 확인 결과 서버 환경 변경은 없는 것으로 보입니다.

- FTP, DB 접속 권한은 있습니다.

[질문]

1. 비밀번호를 바꾸지 않았고 서버 환경도 그대로인데

   이런 증상이 생기는 원인이 무엇일까요?

2. DB(g5_member)에서 admin 비밀번호를 안전하게 재설정하는 방법을 알려주세요.

   새 회원을 가입한 뒤 그 회원의 mb_password 값을 admin에 복사하는 방법을 써도 될까요?

3. 외부 침입으로 비밀번호가 변경되었을 가능성도 있을까요?

   그렇다면 어떤 부분을 확인하면 될까요? (예: 의심스러운 파일, 관리자 계정 등)


감사합니다.

|

답변 3개

저도 예전에 몇 번 겪었던 문제인데, 
카페24 호스팅에서만 생겼던 문제였어요.
카페24에서 해결해 줄 수 있는 상황은 아니구요.

일단, 크롬이면 설정, 개인정보 보호 항목에서
캐시 쿠키 등 삭제하면 해결됐어요.

그리고 AI에 위에 상황 말하면 어디어디 고치라고 알려줘서
그렇게 하니 이후로 최고관리자 로그인 안되는 거 해결됐어요.
오래돼서 어디를 어떻게 고쳤는 지는 기억이 안나네요.
간단하게 쉽게 해결됐던 거 같아요

인수인계 상황이라 답답하셨겠습니다. 질문 순서대로 적겠습니다.

  1. 원인

가장 흔한 경우는 자동로그인입니다. 자동로그인으로 쓰는 동안에는 아무도 비밀번호를 직접 치지 않습니다. 그러다 쿠키 만료나 브라우저 정리로 자동로그인이 풀리면 그때 처음으로 비밀번호를 입력하게 되는데, 인수인계 때 받은 비밀번호가 실제와 다른 경우가 꽤 많습니다. 9월 30일까지는 잘 되다가 갑자기 막혔다면 이 경우를 먼저 의심해 보세요.

두 번째는 서버의 MySQL 설정입니다. 오래된 그누보드는 비밀번호를 MySQL의 PASSWORD() 함수로 암호화해서 저장합니다. 서버의 MySQL 버전이나 old_passwords 설정이 바뀌면 같은 비밀번호를 넣어도 다른 값이 나와서 로그인이 안 됩니다. 이런 변경은 호스팅 쪽 작업이라 사용자 입장에서는 «변경 없음»으로 보일 수 있습니다.

먼저 DB에서 아래를 조회해 보세요.

SELECT mb_id, mb_password, mb_level, mb_today_login, mb_login_ip, mb_leave_date, mb_intercept_date FROM g5_member WHERE mb_id = 'admin';

  • 결과가 아예 없으면 admin 계정 자체가 지워진 것입니다. 이 경우는 3번 침입 점검을 먼저 하세요.
  • mb_today_login(마지막 로그인 시각)이 9월 30일 이후이고 mb_login_ip가 모르는 IP라면, 누군가 그 계정으로 로그인한 것입니다.
  • 다른 일반 회원들의 mb_password와 비교해서 admin만 길이나 형식이 다르다면, 누군가 값을 바꿨을 가능성이 있습니다.

참고로 그누보드5는 UTF-8 전용입니다. EUC-KR에 PHP 5.2라면 그누보드4일 수도 있으니, 테이블 이름이 g5_member인지 g4_member인지 먼저 확인해 보세요. 아래 방법은 어느 쪽이든 같습니다.

  1. 비밀번호 재설정

말씀하신 방법(새 회원의 mb_password를 admin에 복사)이 가장 안전합니다. 그 서버의 그누보드 코드가 직접 만든 값이라 암호화 방식이 버전이나 서버 설정과 어긋날 일이 없습니다.

순서는 이렇습니다. (1) 작업 전에 admin 행을 백업합니다. 위 조회 결과를 복사해 두거나 phpMyAdmin에서 내보내기를 해 두세요. (2) 사이트에서 임시 회원을 하나 가입합니다. 비밀번호는 admin에 쓸 새 비밀번호로 정합니다. (3) 임시 회원의 값을 admin에 복사합니다. UPDATE g5_member SET mb_password = (SELECT p FROM (SELECT mb_password AS p FROM g5_member WHERE mb_id = '임시아이디') t) WHERE mb_id = 'admin'; (4) admin으로 로그인되는지 확인합니다. (5) 확인되면 관리자 화면에서 임시 회원을 삭제합니다. (6) 로그인한 상태에서 회원정보 수정으로 비밀번호를 한 번 더 바꿔 두면 깔끔합니다.

UPDATE ... SET mb_password = PASSWORD('새비밀번호') 방식도 오래된 버전에서는 됩니다. 다만 버전에 따라 암호화 방식이 달라서 맞지 않을 수 있으니, 복사하는 방법을 권합니다.

  1. 외부 침입 가능성

있습니다. PHP 5.2와 오래된 그누보드 조합은 알려진 취약점이 많습니다. 아래를 확인해 보세요.

  • 관리자급 계정: SELECT mb_id, mb_level, mb_datetime, mb_today_login, mb_login_ip FROM g5_member WHERE mb_level >= 10; 모르는 아이디가 있는지 봅니다.
  • 최고관리자 지정: g5_config 테이블의 cf_admin 값이 admin 그대로인지 봅니다.
  • 최근 바뀐 파일: FTP 프로그램에서 수정일 순으로 정렬해 9월 말 이후 바뀐 .php 파일을 찾습니다. SSH가 된다면 아래 명령을 씁니다. find . -name "*.php" -mtime -20
  • data 폴더 안의 .php 파일: 원래 dbconfig.php 정도만 있어야 합니다. data/file, data/editor 같은 업로드 폴더에 .php 파일이 있으면 거의 확실히 침입 흔적입니다.
  • 의심 코드: eval(base64_decode, eval(gzinflate, assert($_ 같은 문자열이 들어간 파일 SSH가 된다면 아래 명령으로 찾을 수 있습니다. grep -rlE "eval(base64_decode|eval(gzinflate|assert(\$_" .
  • .htaccess 파일이 바뀌었거나 새로 생겼는지
  • 카페24 관리 화면의 FTP 접속 기록과 웹 접속 로그(9월 30일 전후)

흔적이 나오면 비밀번호만 바꿔서는 부족합니다. 의심 파일을 지운 뒤 FTP, DB, 호스팅 관리 비밀번호를 모두 바꾸세요. 흔적이 없더라도 PHP 5.2는 보안 지원이 끝난 지 오래라, 이번 기회에 PHP와 그누보드를 함께 올리는 계획을 잡으시길 권합니다.

1.3 - 점검해봐야 알 수 있음. 일단, 업데이트 하시기 바람.
2 - https://sir.kr/questions/566453#answer_566454 참고 바람.

답변을 작성하려면 로그인이 필요합니다.