워드프레스 취약점 스캔 도구, WPScan 완벽 가이드
오늘은 칼리 리눅스(Kali Linux)에 기본 탑재된 강력한 보안 스캐너, WPScan의 기능과 사용법을 알아보겠습니다. WPScan은 강력한 도구인 만큼 반드시 본인이 소유한 사이트나 허가받은 대상에 대해서만 사용해야 합니다. 승인되지 않은 대상에 대한 스캔은 불법 행위로 간주될 수 있음을 명심하세요!
- WPScan이란?
WPScan은 루비(Ruby)로 작성된 오픈소스 워드프레스 보안 스캐너입니다. 웹 서버의 외부에서 워드프레스 설치 상태를 분석하여, 보안 설정 오류나 업데이트되지 않은 플러그인, 테마의 취약점을 찾아내는 역할을 합니다. - 주요 기능
- 버전 탐지: 워드프레스 코어, 테마, 플러그인의 버전을 확인합니다.
- 취약점 대조: 설치된 구성 요소 중 알려진 취약점(CVE)이 있는지 DB와 대조합니다.
- 사용자 열거 (Enumeration): 시스템에 등록된 사용자 아이디를 찾아냅니다.
- 무차별 대입 공격(Brute Force) 테스트: 약한 비밀번호를 사용하는 계정이 있는지 점검합니다.
- 민감 파일 탐지: wp-config.php 백업이나 xmlrpc.php 같은 위험 요소를 찾아냅니다.
- WPScan 기본 사용법
- wpscan.com 사이트에 회원을 가입한 후 Profile 페이지에서 API Token을 발급받습니다.

- 칼리리눅스에 로그인하여 스캔 전 최신 취약점 정보를 반영하기 위해 데이터베이스를 업데이트합니다.
$ wpscan --update _______________________________________________________________ __ _______ _____ \ \ / / __ \ / ____| \ \ /\ / /| |__) | (___ ___ __ _ _ __ 짰 \ \/ \/ / | ___/ \___ \ / __|/ _` | '_ \ \ /\ / | | ____) | (__| (_| | | | | \/ \/ |_| |_____/ \___|\__,_|_| |_| WordPress Security Scanner by the WPScan Team Version 3.8.28 Sponsored by Automattic - https://automattic.com/ @_WPScan_, @ethicalhack3r, @erwan_lr, @firefart _______________________________________________________________ [i] Updating the Database ... [i] Update completed. - wpscan 명령어를 사용해서 자신의 워드프레스 사이트의 취약점을 스캔합니다.
--url 옵션: 워드프레스로 구축된 스캔 대상 사이트를 지정합니다. -e 옵션: 쉼표(,)를 사용해 여러 옵션을 한 번에 묶어서 실행합니다. vp - Vulnerable plugins ap - All plugins p - Plugins vt - Vulnerable themes at - All themes t - Themes tt - Timthumbs cb - Config backups dbe - Db exports u - User IDs range m - Media IDs range. -- api-token: API 토큰을 등록해야만 상세한 취약점 정보를 보여줍니다. -o 옵션: 스캔 결과를 파일로 출력합니다. --force: 오탐 가능성이 커도 무시하고 끝까지 스캔을 완수하라는 강력한 지시입니다. --exclude-content-based 옵션: 서버의 응답 내용(Content)을 분석하여, 유효하지 않은 결과(오탐)를 자동으로 걸러내는 기능 $ wpscan --url [YOUR_SITE] \ -e vp,tt,cb,dbe,u \ --api-token [YOUR_TOKEN] \ -o ~/wpscan_result.txt \ --force $ cat ~/wpscan_result.txt _______________________________________________________________ __ _______ _____ \ \ / / __ \ / ____| \ \ /\ / /| |__) | (___ ___ __ _ _ __ 짰 \ \/ \/ / | ___/ \___ \ / __|/ _` | '_ \ \ /\ / | | ____) | (__| (_| | | | | \/ \/ |_| |_____/ \___|\__,_|_| |_| WordPress Security Scanner by the WPScan Team Version 3.8.28 Sponsored by Automattic - https://automattic.com/ @_WPScan_, @ethicalhack3r, @erwan_lr, @firefart _______________________________________________________________ [+] URL: https://yesxyz.kr/ [134.185.107.196] [+] Started: Tue May 12 14:21:18 2026 Interesting Finding(s): .... [+] WPScan DB API OK | Plan: free | Requests Done (during the scan): 0 | Requests Remaining: 15 [+] Finished: Tue May 12 14:21:40 2026 [+] Requests Done: 3509 [+] Cached Requests: 625 [+] Data Sent: 783.576 KB [+] Data Received: 723.9 KB [+] Memory used: 317.938 MB [+] Elapsed time: 00:00:21
- wpscan.com 사이트에 회원을 가입한 후 Profile 페이지에서 API Token을 발급받습니다.
- 결과 분석 및 대응 전략: 보안 스캔에서 자주 발생하는 ‘오탐(False Positive)’에도 주의해야 하며, Gemini 등 AI에게 스캔 결과를 제공하고 조치방법을 확인합니다. 저도 Gemini에게 스캔 결과를 제공하고 가이드를 받았습니다.
- [!] (Warning): 즉시 조치가 필요한 보안 결함입니다. (예: 취약한 플러그인 버전)
- [+] (Info): 발견된 정보입니다. (예: 현재 사용 중인 테마 이름)
- [i] (Notice): 일반적인 참고 사항입니다.
- 제가 취약점 조치를 한 몇 가지 사항을 공유합니다.
-- 서버 정보의 공개를 최소화 $ vi /etc/nginx/nginx.conf http { server_tokens off; } -- 워드프레스 클론 비활성화 $ vi ./wp-config.php /** Inactivating wordpress cron */ define('DISABLE_WP_CRON', true); /* That's all, stop editing! Happy publishing. */^M $ sudo crontab -u www-data -e */15 * * * * php /var/www/yesxyz/wp-cron.php > /dev/null 2>&1 -- 최고의 방어는 존재를 숨기는 것이다. $ vi /etc/nginx/sites-available/default server { location = /readme.html { return 404; } location = /xmlrpc.php { return 404; } location = /wp-cron.php { allow 127.0.0.1; return 404; } }
