E:LAB
← 가이드 목록
7분 분량

그누보드 보안 패치 가이드 — 알려진 취약점과 대응

작성: 양경찬

오래된 그누보드·영카트 사이트가 가장 많이 뚫리는 세 가지 — 미패치 버전, 노출된 data/ 경로, 파일 업로드 취약점. 직접 확인하고 막는 명령어·.htaccess·Nginx 설정까지 정리합니다.

  • 그누보드
  • 영카트
  • 웹쉘
  • 파일 업로드

그누보드(영카트 포함)는 한국 중소·커뮤니티 사이트를 가장 많이 떠받치는 엔진이지만, 오래된 버전을 그대로 둔 채 방치된 경우가 압도적으로 많습니다. 결론부터 말하면: 최신 버전 패치 + 노출된 데이터 경로 차단 + 파일 업로드 검증 세 가지만 잡아도 실제 침해의 90% 이상을 막을 수 있습니다. 이 가이드는 알려진 취약점 패턴과 직접 확인·대응하는 방법을 정리합니다.

1. 가장 먼저 — 버전과 패치 상태 확인

공격용 봇은 그누보드 버전 문자열을 보고 자동으로 알려진 익스플로잇을 시도합니다. 본인 사이트 버전부터 확인하세요.

  • 그누보드5: data/dbconfig.php 옆의 config.php, 또는 관리자 페이지 하단 버전 표기
  • 소스 직접 확인: grep -r "G5_VERSION" ./ / 영카트는 grep -r "S5_VERSION" ./
  • 5.4 미만, 영카트 5.3 미만은 공개된 취약점이 다수 누적되어 있어 즉시 업그레이드 대상입니다.

패치 적용 전 반드시 data/ 폴더와 DB를 백업하세요. 정식 배포본은 sir.kr 공식 채널에서만 받고, 출처 불명의 "수정본"은 웹쉘이 심어진 경우가 많습니다.

2. 노출되면 안 되는 경로 — data/ · 백업 · 관리자

그누보드 침해의 단골 원인은 코드 취약점이 아니라 경로 노출입니다. 다음이 외부에서 열리는지 직접 브라우저로 확인하세요.

  • /data/dbconfig.php, /data/session/, /data/cache/ — DB 비밀번호·세션이 들어 있습니다
  • /bbs/ 아래 임시 파일, *.sql 백업, install/ 디렉터리 (설치 후 반드시 삭제)
  • 기본 관리자 경로 /adm/ 가 인증 없이 노출되는지

Apache(.htaccess) 기준 차단 예시:

  • <FilesMatch "\.(sql|bak|log|inc)$">Require all denied</FilesMatch>
  • data/ 내 PHP 실행 차단: <Directory "/.../data"><FilesMatch "\.ph(p[3457]?|t|tml)$">Require all denied</FilesMatch></Directory>

Nginx라면 location ~ /data/.*\.php$ { deny all; } location ~ /\.(sql|bak|log)$ { deny all; } 를 추가합니다.

이 한 줄이 중요한 이유는, 공격자가 게시판에 악성 파일을 올리는 데 성공하더라도 그 파일이 들어가는 data/ 폴더에서 PHP가 실행되지 않으면 웹쉘로 동작할 수 없기 때문입니다. 즉 업로드 자체를 100% 막지 못하더라도, 실행만 차단하면 피해의 대부분을 끊을 수 있습니다. 설치 직후 방치되기 쉬운 install/ 디렉터리와 개발하다 남긴 .bak·.sql 백업 파일도 같은 이유로 반드시 지우거나 차단해야 합니다.

3. 파일 업로드 취약점 — 웹쉘의 단골 입구

게시판·영카트 상품 이미지 업로드는 그누보드에서 가장 자주 악용되는 지점입니다. 확장자 우회(shell.php.jpg, shell.phtml)로 PHP가 실행되면 웹쉘이 됩니다. 대응:

  • 업로드 저장 폴더(보통 data/file/, data/editor/)에서 PHP 실행을 서버 단에서 차단 (위 2번의 디렉터리 규칙 재사용)
  • 그누보드의 허용 확장자 설정을 화이트리스트로만 운영하고 php, phtml, html, svg 는 제외
  • 이미 침해됐는지 점검: grep -rEl "eval\(|base64_decode\(|system\(|assert\(" data/ 로 의심 파일 검색, 최근 수정 파일은 find . -name "*.php" -mtime -30

4. 직접 할 일 vs 전문가가 필요한 선

DIY로 충분한 범위: 최신 버전 패치, install/ 삭제, 위 .htaccess/Nginx 규칙 적용, 관리자 비밀번호 강화·2차 인증. 여기까지는 하루면 됩니다.

전문가가 필요한 신호: 이미 웹쉘이 발견됐거나, 스팸 페이지가 인덱싱됐거나, DB에 모르는 관리자 계정이 생겼다면 — 단순 파일 삭제로는 재침해를 못 막습니다. 침해 경로 전수 조사와 전체 credential 회전이 필요합니다. 정리 흐름은 해킹 대응 가이드를 참고하세요.

내 그누보드 사이트에 노출된 경로·취약 자산이 실제로 무엇인지 5초 안에 확인하려면 Security:Lab 무료 진단으로 도메인만 인증하면 됩니다. 어떤 항목을 어떤 기준으로 보는지는 검사 방식에 정리돼 있습니다.

자주 묻는 질문

Q. 사이트가 잘 돌아가는데 꼭 업그레이드해야 하나요?

"잘 돌아간다"와 "안전하다"는 다릅니다. 봇은 정상 동작 여부와 무관하게 버전 문자열만 보고 공격합니다. 오래된 버전일수록 공개된 익스플로잇이 쌓여 있어, 패치는 선택이 아니라 필수입니다.

Q. data/ 폴더를 통째로 막으면 사이트가 깨지지 않나요?

폴더 접근 자체를 막는 게 아니라 data/ 안에서 PHP 실행만 차단하는 것입니다. 이미지·첨부는 정상적으로 제공되고, 업로드된 악성 스크립트만 실행이 막힙니다.

Q. 출처 불명의 그누보드 수정본/스킨을 받아도 되나요?

권장하지 않습니다. 무료 배포 스킨·플러그인에 base64로 인코딩된 백도어가 포함된 사례가 흔합니다. 공식 채널과 신뢰 가능한 제작자에게서만 받고, 받은 코드는 위 3번의 패턴 검색으로 한 번 훑어보세요.

Q. 이미 해킹된 것 같은데 뭐부터 해야 하나요?

먼저 침해 시점 이후 추가·수정된 파일을 격리하고, 모든 비밀번호와 DB credential을 교체하세요. 검색 노출·브라우저 경고까지 번진 상태라면 소상공인용 해킹 대응 가이드의 단계별 흐름을 따르는 것을 권합니다.