2026年11月12日
2026年11月12日
WordPress 플러그인 취약점 확인 방법|WP-CLI·WPScan·취약점 데이터베이스 사용법
이 글은 일본어 원문을 현지화한 버전입니다. 일본어 원문 보기
플러그인 취약점은 공개된 뒤 공격이 시작되기까지의 시간이 짧은 경우가 있습니다. 설치한 플러그인과 버전을 파악하고, 알려진 취약점과 대조하고, 수정 버전이 있으면 업데이트하는 흐름을 정기적으로 돌리는 것이 기본입니다. 이 글에서는 WP-CLI로 버전 확인, WPScan으로 대조, 취약점 데이터베이스 보는 법, 변조 확인, 발견했을 때의 대처를 차례로 설명합니다. 명령어와 요금 조건은 2026년 11월 시점에 각 공식 문서를 확인한 내용입니다.
1. 설치한 플러그인과 버전을 목록으로 만들기
먼저 무엇이 어떤 버전으로 설치되어 있는지 파악합니다. 관리자 화면의 "플러그인 → 설치된 플러그인(Installed Plugins)"에서도 확인할 수 있지만, WP-CLI를 사용하면 목록을 저장할 수 있습니다.
# 이름·버전·활성/비활성·업데이트 유무를 표시
wp plugin list --fields=name,version,status,update
# 업데이트가 있는 것만 표시
wp plugin list --update=available
# 기록용으로 JSON으로 저장
wp plugin list --fields=name,version,status --format=json > plugins.json
비활성화한 플러그인도 목록에 나타납니다. 비활성이라도 파일은 서버에 남아 있고 취약점이 있는 파일에 직접 접근당할 수 있으므로, 사용하지 않는 것은 삭제해 둡니다. WP-CLI의 기본은 "WP-CLI로 플러그인 관리하는 방법"에서 설명합니다.
2. WPScan으로 알려진 취약점과 대조하기
WPScan은 WordPress 사이트를 외부에서 조사하는 커맨드라인 도구입니다. 취약점 정보는 WPScan의 API에서 가져오므로, wpscan.com에서 계정을 만들고 API 토큰을 발급받아 사용합니다.
WPScan의 요금 페이지에 따르면 무료 플랜은 비상업적 이용에 한정되며 API 호출은 하루 25회까지입니다. 업무용 사이트에서 사용한다면 유료 라이선스가 필요합니다. API 토큰 없이도 동작하지만, 그 경우에는 취약점 정보가 표시되지 않습니다.
# 설치(Ruby의 gem으로 설치하는 경우)
gem install wpscan
# Docker로 사용하는 경우
docker pull wpscanteam/wpscan
# 취약점이 보고된 플러그인 조사
wpscan --url https://example.com --api-token YOUR_API_TOKEN -e vp
# 검출 방법을 passive와 aggressive 양쪽으로 한다
wpscan --url https://example.com --api-token YOUR_API_TOKEN -e vp --plugins-detection mixed
-e의 주요 값은 다음과 같습니다.
| 값 | 대상 |
|---|---|
vp |
취약점이 보고된 플러그인 |
ap |
모든 플러그인 |
p |
자주 사용되는 플러그인 |
vt |
취약점이 보고된 테마 |
플러그인 검출은 기본적으로 페이지의 HTML 등에서 읽어 내는 passive 방식입니다. HTML에 흔적이 나타나지 않는 플러그인은 발견되지 않을 수 있으므로, aggressive나 mixed를 지정하면 검출이 늘어나지만 요청 수도 늘어납니다.
WPScan으로 조사해도 되는 것은 내가 관리하는 사이트나 허가를 받은 사이트뿐입니다. 자세한 사용법은 "WPScan으로 사이트의 취약점 조사하기"도 참고하세요.
3. 취약점 데이터베이스에서 내용 확인하기
WPScan의 결과나 보안 관련 뉴스에서 이름이 오른 플러그인은 다음 데이터베이스에서 상세 내용을 확인합니다.
- WPScan Vulnerability Database(wpscan.com)
- Wordfence Intelligence(wordfence.com)
- Patchstack Database(patchstack.com)
- NVD(nvd.nist.gov, CVE 번호로 검색)
확인해야 할 항목은 다음과 같습니다.
| 항목 | 확인할 내용 |
|---|---|
| 영향을 받는 버전 | 내 버전이 범위에 들어가는지 |
| 수정된 버전 | 업데이트하면 해소되는지. 수정 버전이 아직 없는 경우도 있음 |
| 필요한 권한 | 로그인 없이 악용할 수 있는지, 기고자나 구독자 권한이 필요한지 |
| 심각도(CVSS) | 0~10의 수치. 높을수록 영향이 큼 |
| 유형 | XSS, SQL 인젝션, 권한 상승, 임의 파일 업로드 등 |
로그인 없이 악용할 수 있는 것, 심각도가 높은 것부터 먼저 대응합니다. 구독자 권한으로 악용할 수 있는 것은 사용자 등록을 받는 사이트(회원제 사이트·쇼핑몰 등)에서는 서둘러야 합니다.
4. 파일이 변조되지 않았는지 확인하기
취약점이 악용되었을 가능성이 있을 때는 파일이 배포 당시 그대로인지 확인합니다. WP-CLI의 verify-checksums는 WordPress.org가 공개하는 체크섬과 파일을 비교합니다.
# 모든 플러그인 검사
wp plugin verify-checksums --all
# 특정 플러그인만 검사
wp plugin verify-checksums contact-form-7
# WordPress 코어 파일 검사
wp core verify-checksums
문제가 없으면 Success: Verified 8 of 8 plugins.처럼 표시됩니다. 추가된 파일이나 내용이 다른 파일이 있으면 그 목록이 표시됩니다.
WordPress.org에서 배포되지 않는 유료 플러그인은 체크섬이 없으므로 이 방법으로는 검사할 수 없습니다. 그 경우에는 배포처에서 같은 버전을 다운로드하여 파일을 비교합니다.
5. 취약점을 발견했을 때의 대처
# 수정 버전이 있는 경우: 업데이트한다
wp plugin update contact-form-7
# 수정 버전이 없는 경우: 비활성화하고, 사용하지 않으면 삭제한다
wp plugin deactivate vulnerable-plugin
wp plugin delete vulnerable-plugin
# 한꺼번에 업데이트하기 전에 업데이트될 항목을 확인한다
wp plugin update --all --dry-run
vulnerable-plugin은 예시입니다. 실제 슬러그(wp plugin list의 name 열)로 바꾸세요.
- 업데이트하기 전에 백업을 만들고, 업데이트한 뒤에 주요 화면(문의 폼, 결제 등)이 동작하는지 확인합니다.
- 수정 버전이 나오지 않고 개발이 멈춘 플러그인은 같은 기능의 다른 플러그인으로 이전하는 것을 검토합니다. WordPress.org에서 배포가 중단된 플러그인은 플러그인 페이지에 중단 표시가 나타납니다.
- 변조 흔적이 있다면 업데이트만으로는 부족합니다. 관리자 사용자 추가, uploads에 놓인 PHP 파일, wp-config.php 변경 등도 확인하고, 필요하면 백업에서 복원합니다.
6. 확인을 습관으로 만들기
- 관리자 화면의 "플러그인"에서 플러그인별로 자동 업데이트를 활성화할 수 있습니다(WordPress 5.5 이상). 업데이트로 표시가 깨질 걱정이 적은 플러그인부터 활성화합니다. 자세한 내용은 "플러그인 자동 업데이트를 설정하는 방법"을 참조하세요.
- WPScan을 cron으로 정기 실행한다면 무료 한도인 하루 25회와 비상업적 조건에 주의합니다.
- 보안 플러그인인 Wordfence도 스캔으로 업데이트가 필요한 플러그인 등을 알려 줍니다. 사용법은 "Wordfence로 사이트 스캔하기"에서 설명합니다.
정리
플러그인 취약점 확인은 목록 만들기(wp plugin list), 알려진 취약점과 대조(WPScan이나 취약점 데이터베이스), 변조 확인(wp plugin verify-checksums), 업데이트 또는 삭제로 대처하는 순서로 진행합니다. 사용하지 않는 플러그인을 삭제해 두는 것이 가장 수고가 적게 드는 대책입니다.
WordPress에 대해 궁금한 점이 있으신가요? 이 사이트의 운영사는 일본에 있으며 일본어로 답변합니다. 문의하기(일본어)