Computer >> 컴퓨터 >  >> 네트워킹 >> 네트워크 보안

OpenCart 관리자 패널 해킹 – 증상, 주요 취약점 및 복구·예방 가이드

무료 오픈소스 솔루션을 찾는 전자상거래 스타트업에게 OpenCart는 매력적인 선택지입니다. 높은 커스터마이징 자유도와 방대한 확장 프로그램·모듈 생태계 덕분에 전 세계적으로 폭넓게 사용되고 있기 때문입니다. 그러나 OpenCart에서는 지금까지 수많은 보안 취약점이 발견되었으며, 일부는 코어(core)에까지 영향을 미칩니다. 그 결과 전 세계의 OpenCart 스토어에서 관리자(Admin) 패널이 해킹당하는 사례가 끊이지 않고 있습니다. 원인은 매우 다양하며, 이 글에서 하나씩 자세히 살펴보겠습니다.

OpenCart 관리자 패널 해킹 사례

관리자 패널은 OpenCart 스토어의 모든 것을 통제할 수 있는 핵심 영역입니다. 상품, 주문, 고객 정보는 물론 결제 설정까지 대시보드 하나에서 관리할 수 있죠. 그렇기 때문에 관리자 패널이 해킹당하면 피해가 치명적일 수밖에 없고, 실제로 많은 사용자들이 커뮤니티 포럼에 도움을 요청하는 글을 올리고 있습니다. 아래는 실제 도움 요청 스레드의 몇 가지 예시입니다.

OpenCart 관리자 패널 해킹 – 증상, 주요 취약점 및 복구·예방 가이드OpenCart 관리자 패널 해킹 – 증상, 주요 취약점 및 복구·예방 가이드OpenCart 관리자 패널 해킹 – 증상, 주요 취약점 및 복구·예방 가이드

OpenCart 관리자 패널 해킹의 증상

다음과 같은 징후가 나타난다면 관리자 패널이 침해되었을 가능성을 의심해야 합니다.

  • 알 수 없는 IP 위치에서 관리자 패널 로그인 기록이 발견됨
  • 본인이 만들지 않은 관리자 계정이 대시보드에 여러 개 표시됨
  • 고객들이 스토어에서 사용한 신용카드 정보가 유출되었다고 불만을 제기함
  • 승인된 무료 주문이 비정상적으로 다수 발생함
  • 서버가 수백 통의 스팸 메일을 발송하고 있음
  • 스팸 리디렉션을 유발하는 의심스러운 파일이 서버에 나타남
  • 검색 엔진에 의해 스토어가 블랙리스트에 등재됨
  • pp_pro, authorize.net 등의 파일에 악성 코드가 삽입됨
  • 스토어의 인덱스(index) 파일이 임의의 메시지로 변조됨
  • FTP 로그에 해외의 알 수 없는 IP에서 접속한 기록이 남아 있음

OpenCart 관리자 패널 해킹의 원인

1. 악성코드 및 백도어(Backdoor)

공격자들은 종종 여러 서버를 감염시켜 DDoS 공격, 스팸 유포, 허위 조회수 증가 등에 악용하기 위한 악성코드를 작성합니다. Astra 연구팀은 OpenCart 사용자를 특정적으로 겨냥한 pub2srv 악성코드를 비롯해 다양한 감염 사례를 추적해 왔습니다. 또한 OpenCart 사용자의 신용카드 정보를 탈취하는 또 다른 변종도 발견했는데, 이 악성코드는 사이트의 무료 회원가입 기능을 이용해 백도어를 생성하기도 했습니다. 카드 정보를 탈취하는 이 악성코드는 로그인 자격 증명을 admin@wsxdn.com으로 빼돌리는 악성 코드를 삽입하여 관리자 패널 해킹을 실행했습니다.

2. 원격 코드 실행(RCE) 취약점

OpenCart 2.1.0.2 ~ 2.2.0.0 버전은 PHP 원격 코드 실행(RCE) 취약점에 노출된 것으로 밝혀졌습니다. JSON 디코딩 함수가 원인으로, PHP JSON이 설치되어 있지 않은 환경에서는 해당 공격의 영향을 받지 않았습니다. 공격자는 이를 악용하기 위해 관리자를 유인해 관리자 대시보드에 접속하게 한 뒤, 추가 전화번호 같은 사용자 정보 입력을 위한 커스텀 필드를 추가하도록 유도합니다. 해당 취약점의 익스플로잇은 이미 공개된 상태입니다.

3. 사이트 간 요청 위조(CSRF)

CSRF 공격은 OpenCart 관리자를 속여 원치 않는 작업을 수행하도록 만드는 공격입니다. 그 범위는 비밀번호 변경부터 데이터베이스 전체 삭제에 이르기까지 매우 광범위합니다. OpenCart에서 발견된 대표적인 CSRF 취약점으로 CVE-2018-13067이 있는데, 비밀번호 변경 과정에서 적절한 토큰 검증이 이루어지지 않았습니다. 취약한 파일은 /upload/catalog/controller/account/password.php입니다. 이 취약점을 악용하면 공격자가 관리자를 포함한 모든 계정의 비밀번호를 변경할 수 있어 관리자 패널 해킹으로 직결됩니다. 게다가 이 익스플로잇은 공개되어 누구나 이용할 수 있습니다.

4. SQL 인젝션(SQL Injection)

SQL 인젝션은 XSS와 마찬가지로 웹 서버에서 매우 흔하게 발생하는 공격입니다. 두 취약점 모두 OWASP Top 10에서 매년 큰 비중을 차지합니다. OpenCart 1.3.2는 CVE-2010-0956으로 명명된 SQLi 취약점에 노출되어 있었습니다. 취약한 구성 요소는 'page' 파라미터였으며, 취약한 URL 형태는 index.php?route=product%2Fspecial&path=20&page=과 같았습니다. 공격자는 page 파라미터를 통해 SQL 문을 실행할 수 있었고, 해당 익스플로잇 역시 공개되었습니다. 이 외에도 OpenCart 1.5.1.2에서는 블라인드 SQLi(Blind SQL Injection) 취약점이 발견된 바 있습니다.

5. 크로스 사이트 스크립팅(XSS)

OpenCart 2.1.0.2 미만 버전은 XSS 공격에 취약한 것으로 확인되었으며, 이 취약점은 CVE-2015-4671로 명명되었습니다. index.php 파일이 XSS에 노출되어 zone_id 파라미터를 통해 웹 스크립트나 HTML 코드를 주입할 수 있었습니다. 이를 성공적으로 악용하면 공격자가 관리자를 속여 비밀번호를 넘기도록 유도할 수 있으며, 결국 관리자 패널 해킹으로 이어질 수 있습니다.

6. 비밀번호 유출 및 취약한 인증

비밀번호가 약하면 무차별 대입(Brute Force) 공격에 노출되기 쉽습니다. 공격자들은 사전 공격(dictionary attack)이나 하이브리드 방식을 수행하는 전문 소프트웨어를 사용합니다. 실제로 많은 OpenCart 관리자 패널 해킹이 취약한 비밀번호 때문에 성공하고 있습니다.

OpenCart 관리자 패널 해킹 후 복구 방법

먼저 피해 확산을 막기 위해 관리자 패널 비밀번호를 강력한 것으로 즉시 변경하세요. 이후 OpenCart 데이터베이스 보안 작업으로 넘어갑니다. 이 단계를 거치면 관리자 패널 비밀번호를 알고 있는 모든 공격자의 접근을 차단할 수 있습니다. 데이터베이스 비밀번호는 아래 SQL 문으로 변경할 수 있습니다.

update users set pass = concat('ZZZ', sha(concat(pass, md5(rand()))));

단, 일부 감염 유형에서는 백도어 스크립트가 설치되어 있어 관리자 비밀번호를 인터넷을 통해 공격자에게 지속적으로 전송하는 경우가 있습니다. 이런 상황에서는 비밀번호를 변경해도 소용이 없습니다. 이를 확인하려면 Wireshark 같은 패킷 모니터링 도구로 외부로 나가는 데이터를 점검하세요. 스크립트가 비밀번호를 공격자에게 전송하고 있다면, 즉시 사이트를 오프라인으로 전환하고 악성 코드를 제거해야 합니다. 대부분의 경우 공격자는 악성 코드를 base64 형식으로 저장하는데, 아래 간단한 명령어로 이를 찾아낼 수 있습니다.

find . -name "*.php" -exec grep "base64" '{}' \; -print &> hiddencode.txt

이 명령은 base64로 인코딩된 코드의 모든 위치를 hiddencode.txt 파일에 저장합니다. 저장된 내용은 온라인 디코딩 도구를 활용해 수동으로 검사할 수 있습니다. 이후 phpMyAdmin 도구를 사용하면 해당 스크립트나 악성 코드가 숨어 있는 위치를 한 번에 검색할 수 있습니다. 자세한 방법은 아래 이미지를 참고하세요.

OpenCart 관리자 패널 해킹 – 증상, 주요 취약점 및 복구·예방 가이드

base64 인코딩 외에도 공격자는 FOPO 등 다른 인코딩이나 난독화 기법을 사용할 수 있습니다. 일반 웹 관리자가 이 모든 코드를 해독하기란 쉽지 않습니다. 따라서 이해할 수 없는 코드라고 해서 함부로 삭제하지 말고, '#' 문자로 주석 처리만 해둔 뒤 전문가에게 OpenCart 관리자 패널 악성코드 제거를 의뢰하는 것이 안전합니다.

OpenCart 관리자 패널 해킹 예방 조치

업데이트 및 백업

코어 파일을 수정해야 하는 경우에는 vQmod 또는 OCMOD를 활용하세요. 이렇게 하면 업데이트 시 수정 사항이 삭제되는 것을 방지할 수 있습니다. 또한 모든 확장 프로그램과 모듈을 최신 상태로 유지해야 하는데, 업데이트에는 중요한 보안 패치가 포함되어 있기 때문입니다. 아울러 OpenCart 스토어를 정기적으로 백업해두면 공격 발생 시 사이트를 신속하게 복원할 수 있습니다.

설치(install) 폴더 삭제

설치 폴더에는 민감한 코어 파일이 포함되어 있습니다. 설치 폴더가 서버에 그대로 남아 있으면 전문 스캐너가 이를 탐지해 공격자에게 공격 경로를 열어줄 수 있습니다. Shodan 같은 검색 엔진은 웹 서버에서 이런 파일을 끊임없이 찾아내고 있습니다. 따라서 OpenCart 설치가 완료되면 install 폴더를 삭제하는 것이 안전합니다. 단, 다른 설치 폴더와 달리 vQmod의 install 폴더는 삭제하지 않도록 주의해야 합니다!

관리자 패널 보안 강화

관리자 URL 변경

관리자 URL의 이름을 바꾸는 것은 표준적인 보안 수칙입니다. 이를 통해 OpenCart 관리자 패널에 대한 상당수의 일반적인 공격을 피할 수 있습니다. 나중에 기억할 수 있는 임의의 키워드로 변경하세요. OpenCart 1.5 & vQmod에 대한 자세한 설정 방법은 공식 문서를 참고하시기 바랍니다.

접근 권한 제한

OpenCart 관리자 패널에는 보통 관리자 본인만 접속하므로, 다른 모든 IP의 접근을 차단하는 것이 현명합니다. 이는 폴더와 하위 폴더의 접근을 제한하는 .htaccess 파일로 구현할 수 있습니다. 관리자 폴더의 .htaccess 파일에 아래 코드를 추가하기만 하면 됩니다.

<Files *.*>
Order Deny,Allow
Deny from all
Allow from "본인의 IP 주소"
</Files>

관리자 패널 파일 권한 관리

admin/index.php, admin/config.php 같은 중요 파일은 반복적으로 수정할 필요가 없습니다. 따라서 파일 수정을 방지하려면 아래 파일들의 권한을 644 또는 444로 설정하세요. Users > User Groups 메뉴에서 관리할 수 있으며, 자세한 내용은 아래 이미지를 참고하시기 바랍니다.

OpenCart 관리자 패널 해킹 – 증상, 주요 취약점 및 복구·예방 가이드

보안 솔루션 도입

OpenCart 스토어는 매일 민감한 거래를 처리합니다. 따라서 스토어의 보안은 그 어떤 경우에도 견고해야 합니다. 공격자가 OpenCart 스토어를 침해하려 할 때 첫 번째 방어선은 바로 탄탄한 방화벽입니다. 방화벽을 사용하면 OpenCart 관리자 패널에 대한 사이버 공격 위험을 크게 줄일 수 있습니다. 다만 스토어에 맞는 올바른 방화벽을 선택하는 것이 중요합니다. 경제적이면서 서버 리소스 부담이 적고 유연해야 하죠. Astra 방화벽은 OpenCart 스토어를 위한 이 모든 기준을 충족하며, 실제로 OpenCart에서도 Astra를 권장하고 있습니다. Astra는 설치 번거로움 없이 바로 사용할 수 있는 올인원 보안 솔루션으로, 서버의 처리 능력을 소모하지 않는다는 장점도 있습니다.