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을 교체하세요. 검색 노출·브라우저 경고까지 번진 상태라면 소상공인용 해킹 대응 가이드의 단계별 흐름을 따르는 것을 권합니다.

참고 자료