보안 연구진이 최근 수천 개의 OpenCart 사이트를 감염시키고 사용자의 민감한 정보를 탈취하려는 지속적인 해킹 캠페인을 발견했습니다. 이번 캠페인은 "OpenCart 데이터베이스가 해킹당했다"는 내용의 이메일을 발송하는 형태로 진행되며, OpenCart 모듈에 존재하는 SQL 인젝션(SQLi) 취약점과 사이트에 설치된 패치되지 않은 확장 기능을 악용해 고객 데이터베이스를 탈취합니다.
특히 위협 행위자들은 사이트 소유자에게 데이터베이스가 해킹당했다고 통보하고, 나아가 취약점 수정 서비스를 제공하겠다며 이메일을 발송하는 것으로 확인되었습니다.
Ananda가 이끄는 연구팀은 지난 8월 초부터 이 캠페인을 모니터링해 왔으며, 그동안 OpenCart 플랫폼으로 운영되는 다수의 전자상거래 사이트가 침해된 사실을 확인했습니다. 그런데 이번 주에는 캠페인 활동이 급증했고, 실제로 자신의 데이터베이스가 해킹당했다고 호소하는 OpenCart 사이트 소유자들의 신고도 잇따르고 있습니다.
해커는 어떻게 OpenCart 데이터베이스에 접근할까?
사용 도구
연구진은 이번 캠페인 분석 과정에서 공격자가 SQLmap이라는 도구를 사용해 전자상거래 플랫폼의 보안 취약점과 잘못된 설정을 찾아내는 모습을 포착했습니다.
SQLmap은 입력 매개변수를 식별하고 입력 필드에 쿼리를 삽입해 시험하는 자동화된 취약점 스캐닝 도구입니다. 본래 이 도구는 테스터와 보안 전문가가 시스템의 약점을 파악하고 패치하는 데 유용하게 쓰이지만, 공격자들은 이를 완전히 다른 목적으로 적극적으로 활용하고 있습니다.
악용된 취약점: iSenseLab의 PreOrder 모듈 SQL 인젝션
OpenCart 사이트에서 발생한 SQL 인젝션이라는 점에서, 연구진은 사이트의 테마 혹은 일부 모듈이 취약할 가능성을 의심했습니다. 추가 조사 결과, 널리 사용되던 OpenCart 확장 기능 iSenseLab의 PreOrder에서 취약점이 발견되었고, 해커가 이를 악용해 사이트 데이터베이스에 무단으로 접근한 것으로 밝혀졌습니다.
PreOrder 모듈은 '장바구니 담기' 버튼을 '선주문(Pre-Order)' 버튼으로 교체하여, 재고가 없는 상품도 주문할 수 있게 해주는 기능을 제공합니다. 이 모듈을 통해 고객은 OpenCart의 선주문 기능을 손쉽게 이용하면서도 해당 상품이 선주문 상품임을 명확히 인지할 수 있습니다.
해커들은 public 함수 GetPreorderedProduct($product_id)에 대한 입력값 검증 로직이 구현되어 있지 않은 구버전의 PreOrder 확장 기능을 악용하고 있으며, 이로 인해 해당 사이트들은 SQL 인젝션 위험에 그대로 노출되었습니다.
연구진은 PreOrder 모듈 2.9.3 버전에서 SQL 인젝션 취약점을 실제로 확인했습니다. 그 이전 버전 역시 동일한 취약점에 노출되어 있을 가능성이 높습니다(이전 버전은 검증하지 않았습니다). 따라서 취약점이 존재하지 않음을 검증 완료한 최신 버전 2.9.6(OpenCart 2.0.x~2.3.x 지원)으로 업데이트할 것을 강력히 권장합니다.
해커가 OpenCart 사이트 소유자에게 보낸 이메일
취약점을 성공적으로 악용한 해커들은 사이트의 데이터베이스를 확보한 뒤, 웹사이트를 해킹했다며 피해자에게 이메일을 발송하고 탈취한 데이터베이스의 스크린샷을 증거로 첨부합니다. 실제 발송된 이메일 내용은 다음과 같습니다.
안녕하세요.
귀하의 웹사이트에서 취약점을 발견했습니다. 이 취약점 덕분에 저는 귀하의 데이터베이스에 아주 쉽게 접근할 수 있습니다.
- 취약점을 방치할 경우:데이터베이스의 내용은 해커가 아주 쉽게 알아낼 수 있습니다.
. 해커가 웹사이트에 백도어 스크립트를 심어, 로그인 페이지를 거치지 않고도 언제든 침입할 수 있게 됩니다.
웹사이트의 고객 및 관리자 데이터는 해커에 의해 유출, 변경, 삭제될 수 있습니다.
고객은 보통 다른 계정이나 웹사이트에서도 동일한 비밀번호를 사용하기 때문에, 데이터가 악용될 우려가 매우 큽니다.
고객이 이 사실을 알게 되면 불안감을 느껴 폼 작성이나 거래를 꺼리게 되고, 결국 귀하의 사이트를 다시 방문하지 않을 가능성이 높습니다.
저는 이 문제를 해결하는 데 도움을 드릴 수 있습니다. 귀하의 웹사이트 취약점에 따라 15~17페이지 분량의 보고서를 보내드립니다.
- 보고서에 포함될 내용:
1. 취약점 위치
2. 수정 방법
3. 취약점 예방 방법
4. 웹사이트 보안 강화 방법
관심이 있으십니까?
제가 발견한 취약점 결과물, 즉 누구나 쉽게 열람할 수 있는 귀하의 데이터베이스 내용을 첨부합니다.
감사합니다."
탐지 및 대응 방안
이 해킹 캠페인은 인터넷에 노출된 OpenCart 사이트와 모듈을 표적으로 삼습니다. 자신의 사이트·스토어가 감염되었는지 확인하려면 Astra Security가 제공하는 웹 애플리케이션 방화벽(WAF)과 보안 감사 서비스를 활용해 침해 여부와 해킹 시도를 탐지할 수 있습니다. 아울러 자동화 공격 도구인 SQLmap의 접근 차단을 포함한 침해 해결 권고사항을 통해 사이트를 안전하게 유지할 수 있습니다.
또한 데이터베이스 서버를 인터넷에 직접 노출해서는 안 됩니다. 대신 네트워크 세분화(segmentation)와 화이트리스트 기반 접근 정책을 적용해 조직 내 특정 사용자만 접근할 수 있도록 구성해야 합니다. 의심스럽거나 반복적으로 시도되는 로그인을 모니터링하고 경고를 받을 수 있도록 로깅을 활성화하는 것도 권장됩니다(이 기능은 Astra Security 방화벽 서비스에 기본 포함되어 있습니다).
마지막으로, 사이트에 설치된 확장 기능·모듈·테마·플러그인을 항상 최신 버전으로 유지하는 것이 중요합니다. 이를 통해 해당 확장 기능의 취약점이 신속히 패치되고, 사이트 전반의 보안 수준이 한층 강화됩니다.