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

WooCommerce '버려진 장바구니' 플러그인 XSS 취약점 악용 – 관리자 패널 침해 위험, 지금 즉시 업데이트하세요

WooCommerce 버려진 장바구니 플러그인 악용 공격 – 즉시 업데이트 필요

WordPress 기반 사이트가 해커들의 공격 대상이 되고 있습니다. 해커들은 woocommerce-abandoned-cart(버려진 장바구니) 플러그인의 XSS(교차 사이트 스크립팅) 취약점을 악용해 백도어를 심고 취약한 사이트를 장악하고 있습니다.

woocommerce-abandoned-cart 플러그인은 WooCommerce 사이트 운영자가 결제를 포기한 고객의 장바구니를 추적하여 매출 손실을 복구할 수 있도록 돕는 도구입니다.

문제는 게스트(비회원) 사용자의 입력값과 출력값에 대한 검증(sanitization)이 부족하다는 점입니다. 이로 인해 공격자는 여러 데이터 필드에 악성 자바스크립트를 주입할 수 있으며, 관리자 권한으로 로그인한 사용자가 버려진 장바구니 목록을 조회하는 순간 해당 코드가 실행됩니다.

현재 woocommerce-abandoned-cart 또는 woocommerce-abandoned-cart-pro를 사용 중인 WordPress 사이트는 최신 버전으로 즉시 업데이트할 것을 강력히 권장합니다. 한편, Astra WAF를 적용한 사이트는 방화벽에 내장된 XSS 보호 기능 덕분에 이 공격으로부터 안전합니다.

Astra가 설치되어 있지 않은 사이트 운영자라면 사이트 보안 감사(Site Security Audit)를 통해 WordPress 사이트의 무결성을 점검해 보시기 바랍니다.

버려진 장바구니 플러그인의 XSS 취약점 상세 분석

인증되지 않은 사용자가 상품을 장바구니에 담고 결제 페이지로 이동하면, woocommerce-abandoned-cart 플러그인의 게스트 입력 처리 기능이 작동합니다.

save_data AJAX 액션은 게스트가 입력한 데이터를 플러그인으로 전송합니다. 결제 과정이 어떤 이유로든 중단될 경우, 사이트 운영자가 관리자 대시보드에서 알림을 받아 잠재 고객을 되찾을 수 있도록 하는 것이 이 기능의 목적입니다.

WooCommerce  버려진 장바구니  플러그인 XSS 취약점 악용 – 관리자 패널 침해 위험, 지금 즉시 업데이트하세요

그러나 이 AJAX 요청($_POST 필드)을 처리하는 함수에는 입력값 검증 로직이 없습니다. billing_first_name, billing_last_name, billing_company 등 일부 쇼핑객 데이터 필드는 사용자가 전송한 값이 그대로 저장됩니다. 이 데이터는 데이터베이스에 저장된 후, 관리자가 WordPress 대시보드에서 확인할 수 있게 됩니다. 고객 정보, 개별 장바구니 내역, 주문 총액 등의 정보가 관리자 화면에 그대로 노출되는 구조입니다.

WooCommerce  버려진 장바구니  플러그인 XSS 취약점 악용 – 관리자 패널 침해 위험, 지금 즉시 업데이트하세요

더 큰 문제는 이 데이터를 관리자의 브라우저에서 렌더링할 때 출력 검증(output sanitization)이 전혀 이루어지지 않는다는 점입니다. 특히 "Customer" 필드는 billing_first_namebilling_last_name을 하나의 문자열로 합쳐 출력하는 단일 필드이기 때문에, 해커들이 이 데이터 흐름을 악용할 때의 주요 표적이 됩니다.

WordPress 관리자 패널이 버려진 장바구니 플러그인 때문에 침해되었나요? 채팅 위젯으로 메시지를 남겨주시면 복구를 도와드리겠습니다. 지금 WordPress 사이트를 복구하세요.

해커들이 버려진 장바구니 플러그인 취약점을 악용하는 방식

해커들은 WordPress WooCommerce 기반 쇼핑몰을 공격하여 비정상적으로 조작된 이름을 가진 상품들로 가득 찬 장바구니를 생성합니다.

장바구니 필드 중 하나에 익스플로잇 코드를 삽입한 뒤 사이트를 떠나면, 삽입된 악성 코드가 그대로 스토어의 데이터베이스에 저장됩니다.

이후 관리자가 백엔드 페이지에 접속해 버려진 장바구니 목록을 조회하는 순간, 저장되어 있던 익스플로잇 코드가 실행됩니다.

Wordfence가 확인한 실제 공격에서는 bit.ly 링크를 통해 자바스크립트 파일을 로드하는 방식이 사용되었습니다. 취약한 플러그인이 활성화된 사이트에서는 이 코드가 두 가지 서로 다른 백도어 생성을 시도했습니다.

첫 번째 백도어는 해커가 생성한 새로운 관리자 계정으로, 사용자명은 "woouser"이며 Mailinator에서 호스팅되는 이메일 주소를 사용합니다. 두 번째 백도어는 더욱 교묘한 기법을 사용합니다. 웹사이트에 설치된 모든 플러그인 목록을 스캔하여 비활성화된 첫 번째 플러그인을 찾아낸 뒤, 이를 재활성화하는 대신 해당 플러그인의 메인 파일 내용을 해커가 추후에 추가 접근 권한을 얻을 수 있는 스크립트로 통째로 교체해 버립니다.

공격자는 "woouser" 계정이 삭제되더라도, 비활성화된 플러그인의 파일이 디스크에 남아 있고 웹 요청으로 접근 가능한 한 이 백도어에 악성 명령을 계속 전송할 수 있습니다.

피해 영향:

이 취약점으로 인한 피해 범위는 SEO 스팸에 사이트를 악용하는 것부터, 결제 정보를 탈취하는 카드 스키밍 코드(카드 스키머) 심기에 이르기까지 매우 다양합니다.

버려진 장바구니 플러그인 익스플로잇 대응 방법

2019년 2월 18일 출시된 Abandoned Cart Lite for WooCommerce 버전 5.2.0에는 해커들이 이번 공격에 활용한 XSS 공격 벡터를 차단하는 수정 사항이 포함되어 있습니다.

이 WordPress 플러그인을 사용하는 모든 쇼핑몰 운영자는 제어판의 관리자 계정 목록에서 의심스러운 항목이 있는지 반드시 확인하고, 사이트를 항상 최신 상태로 유지해야 합니다. 해커들이 "woouser"라는 계정명을 다른 이름으로 변경했을 가능성도 충분히 있습니다.

또한 이 패치만으로는 완전한 해결이 되지 않는다는 점에 유의해야 합니다. 패치는 두 번째 백도어나 이미 주입된 스크립트까지 처리해 주지 않습니다. 따라서 woocommerce-abandoned-cart 또는 woocommerce-abandoned-cart-pro를 사용하는 운영자는 데이터베이스 내 스크립트 주입 여부를 직접 점검해야 합니다. 확인해야 할 테이블 이름은 환경에 따라 다를 수 있지만, 게스트 쇼핑객 데이터는 ac_guest_abandoned_cart_history 테이블에서 찾을 수 있습니다. 아울러 정리 작업의 일환으로 승인되지 않은 모든 관리자 계정을 반드시 삭제해야 합니다.

WordPress 관리자 패널이 버려진 장바구니 플러그인 때문에 침해되었나요? 채팅 위젯으로 메시지를 남겨주시면 복구를 도와드리겠습니다. 지금 WordPress 사이트를 복구하세요.