그누보드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에 위에 상황 말하면 어디어디 고치라고 알려줘서
그렇게 하니 이후로 최고관리자 로그인 안되는 거 해결됐어요.
오래돼서 어디를 어떻게 고쳤는 지는 기억이 안나네요.
간단하게 쉽게 해결됐던 거 같아요
인수인계 상황이라 답답하셨겠습니다. 질문 순서대로 적겠습니다.
- 원인
가장 흔한 경우는 자동로그인입니다. 자동로그인으로 쓰는 동안에는 아무도 비밀번호를 직접 치지 않습니다. 그러다 쿠키 만료나 브라우저 정리로 자동로그인이 풀리면 그때 처음으로 비밀번호를 입력하게 되는데, 인수인계 때 받은 비밀번호가 실제와 다른 경우가 꽤 많습니다. 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인지 먼저 확인해 보세요. 아래 방법은 어느 쪽이든 같습니다.
- 비밀번호 재설정
말씀하신 방법(새 회원의 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('새비밀번호') 방식도 오래된 버전에서는 됩니다. 다만 버전에 따라 암호화 방식이 달라서 맞지 않을 수 있으니, 복사하는 방법을 권합니다.
- 외부 침입 가능성
있습니다. 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와 그누보드를 함께 올리는 계획을 잡으시길 권합니다.
2 - https://sir.kr/questions/566453#answer_566454 참고 바람.
답변을 작성하려면 로그인이 필요합니다.