그누보드 보안 패치 가이드 — 알려진 취약점과 대응
오래된 그누보드·영카트 사이트가 가장 많이 뚫리는 세 가지 — 미패치 버전, 노출된 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을 교체하세요. 검색 노출·브라우저 경고까지 번진 상태라면 소상공인용 해킹 대응 가이드의 단계별 흐름을 따르는 것을 권합니다.