🇰🇷 한글 설명
DSGVO Google Web Fonts GDPR 플러그인의 DSGVOGWPdownloadGoogleFonts() 함수에서 파일 타입 검증이 없어 인증되지 않은 공격자가 임의의 파일을 업로드할 수 있습니다. 악의적인 CSS 파일의 URL을 통해 PHP 웹셸을 공개 디렉토리에 다운로드하여 원격 코드 실행이 가능합니다.
💡 쉬운 설명
WordPress 플러그인이 어떤 파일인지 제대로 확인하지 않고 받아들여 악의적인 파일(해킹 프로그램)을 업로드할 수 있습니다. 이를 통해 해커가 웹사이트 전체를 장악할 수 있습니다.
🇺🇸 원문 (English)
The DSGVO Google Web Fonts GDPR plugin for WordPress is vulnerable to arbitrary file upload due to missing file type validation in the `DSGVOGWPdownloadGoogleFonts()` function in all versions up to, and including, 1.1. The function is exposed via a `wp_ajax_nopriv_` hook, requiring no authentication. It fetches a user-supplied URL as a CSS file, extracts URLs from its content, and downloads those files to a publicly accessible directory without validating the file type. This makes it possible for unauthenticated attackers to upload arbitrary files including PHP webshells, leading to remote code execution. The exploit requires the site to use one of a handful of specific themes (twentyfifteen, twentyseventeen, twentysixteen, storefront, salient, or shapely).
📍 영향받는 시스템
DSGVO Google Web Fonts GDPR plugin for WordPress 버전 1.1 이하, twentyfifteen/twentyseventeen/twentysixteen/storefront/salient/shapely 테마 사용 사이트
⚔️ 공격 벡터
wp_ajax_nopriv 후크로 인증 없이 악의적인 CSS를 로드하도록 유도하여 PHP 웹셸을 공개 경로에 다운로드 및 실행
🛡️ 대응 방법
플러그인을 1.2 이상으로 업데이트하거나, 패치될 때까지 플러그인 비활성화 및 삭제
🔧 검증 코드
플러그인이 설치되어 있으면 dsgvo로 시작하는 디렉토리가 표시되고, 설치되지 않았으면 'Not installed' 메시지가 출력됩니다.
ls -la /var/www/html/wp-content/plugins/ 2>/dev/null | grep -i dsgvo || echo 'Not installed'