WordPress 웹사이트에 대한 침투 테스트

게시 됨: 2020-03-20

WordPress는 인터넷의 많은 웹사이트를 지원합니다. 따라서 노련한 공격자와 "스크립트 키디"가 WordPress 웹 사이트를 목표로 삼는 것은 놀라운 일이 아닙니다. 웹마스터이든 보안 전문가이든 WordPress 웹사이트의 보안 상태를 평가하는 임무를 맡는다면 공격자가 일반적으로 이용하는 일반적인 보안 함정을 인식하는 데 도움이 되는 경향이 있습니다. 올바른 침투 테스트 도구를 사용하는 것도 중요합니다.

이 기사에서는 공격자가 많은 WordPress 설치에서 남용할 수 있는 여러 일반적인 보안 허점, 잘못된 관행 및 유용한 정보를 다룰 것입니다. 또한 WordPress 침투 테스트를 자동화하는 데 사용할 수 있는 여러 도구를 강조합니다.

주의 — 귀하에게 속하거나 권한이 부여된 시스템에서만 보안 침투 테스트를 수행하십시오. 귀하에게 부여된 액세스 제한을 이해하고 해당 제한 내에서 유지하십시오.

일반적인 WordPress 보안 문제 및 과실

오래된 버전의 WordPress 코드

보안 취약성을 포함하는 이전 버전의 WordPress 코어를 실행하는 것은 틀림없이 WordPress와 관련된 가장 일반적인 보안 허점 중 하나입니다. 최신 버전의 WordPress를 사용하면 최신 버전으로 쉽게 업그레이드할 수 있지만 이전 WordPress 사이트가 뒤처지는 것은 드문 일이 아닙니다.

인터넷에서 이전 버전의 WordPress를 실행하는 것은 시한 폭탄입니다. 많은 이전 버전의 WordPress에는 보안 취약점이 있습니다. 이러한 보안 문제 중 다수는 일반적으로 공격자 가 대규모 로 악용합니다.

보안 취약점에 대해 WordPress 웹 사이트를 감사할 때 일반적으로 가장 먼저 확인해야 하는 것 중 하나입니다. 공격자에게는 다행스럽게도 기본적으로 WordPress는 사용 중인 WordPress 버전이 포함된 HTML 메타 태그를 추가합니다.

<메타 이름=”제너레이터” 콘텐츠=”워드프레스 4.8.11″ />

WordPress 설치가 이전 버전을 실행하고 있다는 사실을 알게 되면 공격자는 알려진 취약점을 이용할 기회를 얻을 수 있습니다. CVE 보안 취약성 데이터베이스를 사용하여 WordPress 코어에서 알려진 보안 문제를 검색합니다.

오래된 버전의 WordPress 테마 및 플러그인

WordPress 코어는 매우 안전합니다. 수백만 명의 사용자와 악의적인 해커가 모두 코드를 테스트하고 철저히 검토합니다. 이는 대부분의 경우 보안 문제가 공격자에 의해 악용되기 전에 발견되고 수정된다는 것을 의미합니다. 그러나 보안 취약점에 영향을 받지 않습니다. 불행히도 이것은 수천 개의 WordPress 플러그인 및 테마에는 적용되지 않습니다.

누구나 테마 또는 플러그인을 제출하고 WordPress 관리자가 다운로드하여 사용할 수 있도록 할 수 있습니다. 물론 이것이 모든 WordPress 플러그인이 제대로 코딩되지 않고 취약점으로 가득 차 있다는 의미는 아닙니다. 그러나 알려진 취약점은 WordPress 침투 테스트를 수행할 때 알고 있어야 하는 WordPress에 대한 대규모 공격 표면을 노출합니다.

취약한 WordPress 플러그인 및 테마의 지문을 찾는 데 사용하는 가장 빠르고 틀림없이 가장 포괄적인 도구는 WPScan을 사용하는 것입니다. WPScan은 WordPress 웹사이트에서 코어, 플러그인 및 테마 내 알려진 취약점을 검색하는 데 자주 사용되는 오픈 소스 블랙박스 WordPress 보안 스캐너입니다.

침투 테스트 중에 WPScan을 사용할 때 WPScan 취약성 데이터베이스 API 키를 사용하도록 등록하고 구성해야 합니다. WPScan 취약성 데이터베이스는 최신 알려진 취약성과 해당 버전으로 WPScan 작성자가 유지 관리하는 데이터베이스입니다.

WPScan을 사용한 지문 인식 플러그인

WPScan 및 다양한 스캔 실행 방법에 대한 자세한 내용은 WPScan 시작하기를 참조하세요.

PHP 및 웹 서버의 이전 버전

WordPress는 PHP 웹 애플리케이션이므로 모든 PHP 보안 모범 사례가 WordPress에도 적용됩니다. WordPress 침투 테스트 중에 이것은 가장 먼저 찾아야 할 것 중 하나입니다. 이전 버전의 PHP 또는 웹 서버 소프트웨어(예: Nginx, Apache HTTP Server, IIS…)를 실행하는 WordPress 설치는 웹사이트를 모든 종류의 다양한 공격에 노출시킬 수 있습니다.

WordPress 웹 사이트가 사용하는 웹 서버와 PHP 버전을 파악하는 것은 매우 쉽습니다. 많은 경우 공격자가 웹사이트에서 반환된 HTTP 응답 헤더에 주의를 기울이기만 하면 됩니다. curl을 사용하여 직접 요청을 보낼 수 있습니다.

$ curl -s -D – http://167.71.67.124/ -o /dev/null | grep -i "서버\|X 전원 공급"

응답에서 ServerX-Powered-By HTTP 헤더를 찾습니다.

서버: Apache/2.4.29(우분투)
X-Powered-By: PHP/5.5.9

웹사이트의 버전 및 구성에 따라 공격자는 알려진 취약점(예: https://www.cvedetails.com/vendor/74/PHP.html)을 사용하여 대상에 대한 추가 정보를 얻을 수 있습니다. 이러한 정보는 공격을 확대 하거나 웹 서버에서 직접 명령을 실행하는 데 도움이 될 수 있습니다.

WordPress 사용자 이름 열거

시스템 관리자가 이를 방지하기 위한 조치를 취하지 않는 한 기본적으로 WordPress는 사용자 열거 공격에 취약합니다. WordPress 사용자 열거 공격, WordPress가 특정 요청에 응답하는 방식의 미묘한 차이를 찾습니다. 응답에 따라 공격자는 사용자가 있는지 여부를 결정할 수 있으므로 공격자가 이 정보를 더 큰 공격의 일부로 사용할 수 있습니다.

다음은 WordPress 사용자 이름 열거 공격을 수행하는 WPScan의 스크린샷입니다.

WPScan 사용자 열거 및 암호 크래킹

웹 서버 구성 오류

디렉토리 목록 및 기타 웹 서버 구성 오류

오래된 소프트웨어를 제외하고 항상 잠재적인 웹 서버 구성 오류를 평가해야 합니다. 잘못 구성된 웹 서버는 WordPress 웹 사이트를 악용에 취약하게 만들 수 있습니다. 이는 웹 서버에서 최신 소프트웨어를 실행하는 경우에도 발생할 수 있습니다. 다음은 몇 가지 일반적인 웹 서버 구성 오류입니다.

활성화된 디렉토리 목록

디렉토리 목록은 매우 흔한 잘못된 구성입니다. Apache 웹 서버에는 기본적으로 활성화되어 있으며 도움이 되지 않습니다. 디렉토리 목록은 색인 파일이 없을 때 웹 서버에 있는 파일과 디렉토리를 그래픽 인터페이스로 간단히 나열합니다.

Apache 웹 서버에서 활성화된 디렉토리 목록

이것 자체가 특별히 해롭지는 않지만 공격자가 웹 서버 디렉토리의 내용을 탐색할 수 있는 가능성을 제공합니다. 이렇게 하면 그가 귀하의 웹사이트에 있는 모든 파일을 볼 수 있습니다. 대부분은 공개적으로 액세스할 수 없어야 하지만 백업, 비밀번호 및 구성 파일과 같은 파일입니다.

백업 파일

백업 파일은 또 다른 너무 일반적인 웹 서버 구성 오류 입니다. 일반적으로 이러한 문제는 시스템 관리자가 프로덕션 시스템에서 수동으로 파일을 편집할 때 발생합니다.

잠재적으로 민감한 정보를 노출하는 백업 파일의 일반적인 예는 PHP 파일의 백업 복사본일 수 있습니다. 때때로 PHP 파일에는 WordPress의 wp-config.php 파일과 같은 중요한 구성 데이터가 포함되어 있습니다.

다음 시나리오를 가정해 보십시오. WordPress 관리자는 wp-config.php를 변경해야 합니다. 모범 사례를 따르고 웹 서버가 아닌 다른 위치에 파일 복사본을 보관하는 대신 라이브 wp-config.php의 복사본을 만들고 백업 이름을 wp-config.php.bak으로 지정합니다. 이제 sysadmin이 우리가 생각하는 것보다 더 자주 발생하는 이 파일을 제거하는 것을 잊었다고 가정해 보겠습니다.

공격자는 이제 단순히 http://www.example.com/wp-config.php.bak 을 요청하여 파일을 읽을 수 있습니다. 확장자가 더 이상 .php가 아니기 때문에 공격자는 파일을 읽을 수 있습니다. 따라서 PHP 엔진은 이를 무시하고 웹 서버는 이를 텍스트 파일로 제공합니다. 이제 공격자는 WordPress 데이터베이스 자격 증명, 비밀 토큰 및 해당 파일에 저장한 기타 민감한 구성 정보를 알고 있습니다.

임시 파일

백업 파일과 마찬가지로 잘못된 위치에 임시 파일이 있으면 잠재적으로 민감한 데이터가 노출될 수 있습니다. 다시 한 번 wp-config.php를 예로 들어보겠습니다. 시스템 관리자가 텍스트 편집기를 사용하여 이 파일을 편집해야 하고 어떤 이유로 프로그램이 제대로 종료되지 않으면 편집기가 임시 파일을 남길 가능성이 높습니다. 예를 들어 널리 사용되는 명령줄 편집기 Vim은 확장자가 *.ext~ 파일인 백업 파일을 *.ext.swp 파일과 함께 저장합니다. swp 파일은 잠금 파일로 사용됩니다. 여기에는 모든 실행 취소/다시 실행 기록과 Vim이 필요로 하는 기타 내부 정보도 포함됩니다.

따라서 충돌이 발생할 경우 Vim은 *.php 파일 확장자로 끝나지 않기 때문에 백업 파일과 같은 일반 텍스트로 액세스할 수 있는 wp-config.php.ext~ 파일을 남깁니다. 이러한 종류의 임시 파일은 Vim에만 있는 것이 아닙니다. Emacs(또 다른 인기 있는 명령줄 텍스트 편집기)도 유사한 임시 파일을 저장하고 수많은 다른 도구도 저장합니다.

주의 — 웹 사이트에 파일 무결성 모니터링 플러그인을 사용하여 임시 및 백업 파일을 포함한 모든 파일 변경 사항에 대해 경고를 받습니다. 이 기술에 익숙하지 않은 경우 WordPress에 대한 파일 무결성 모니터링에 대한 소개를 읽으십시오.

노출된 MySQL

지금까지 시스템 관리자가 저지를 수 있는 가장 심각한 잘못된 구성 중 하나는 WordPress MySQL 데이터베이스 서버를 인터넷에 열어 두는 것입니다. 이것이 미친 것처럼 들릴 수 있는 이유는 아마도 당신이 생각하는 것보다 더 많이 일어날 것입니다. 아래는 인터넷 연결 장치를 위한 검색 엔진인 Shodan의 스크린샷입니다.

MySQL 서버용 Shodan의 결과

물론 MySQL이 인터넷을 통해 노출된다고 해서 누군가가 MySQL에 연결하여 WordPress 데이터베이스에 액세스할 수 있다는 의미는 아닙니다. 그러나 특히 wp-config.php 백업을 통한 비밀번호 유출 또는 취약한 비밀번호 추측과 같은 다른 공격과 함께 사용하면 재난 시나리오로 이어질 수 있습니다.

WordPress 데이터베이스를 제어하면 WordPress 설치는 끝입니다. 공격자는 관리자 암호를 재설정하기만 하면 됩니다. 그런 다음 그들은 WordPress 웹 사이트와 잠재적으로 악성 플러그인을 의도적으로 설치하여 실행 중인 서버까지 완전히 제어할 수 있습니다.

불필요한 서비스 실행

또 다른 일반적인 웹 서버 구성 오류 문제는 기본 구성입니다. 많은 관리자가 기본 구성을 실행하고 필요하지 않은 서비스를 비활성화하지 않습니다. 대부분의 경우 기본 설치에는 불필요한 서비스가 많이 실행되고 있으며, 대부분이 보안되지 않으면 웹 서버가 공격에 노출됩니다.

WordPress 침투 테스터 및 보안 전문가를 위한 침투 도구

침투 테스터는 다양한 도구를 사용하여 작업과 기술을 자동화합니다. 자동화는 보안 평가/침투 테스트를 수행하는 데 걸리는 시간을 줄이는 데 도움이 됩니다.

칼리 리눅스

사용하는 도구는 매우 다양합니다. 개인 취향과 당면한 문제에 따라 다릅니다. 그러나 시작하기에 좋은 곳은 미리 설치된 다양한 도구를 마음대로 사용할 수 있도록 하는 것입니다.

칼리 리눅스

이전에 BackTrack으로 알려졌던 Kali Linux는 오픈 소스 침투 테스트 Linux 배포판입니다. Kali Linux는 사전 설치 및 사전 구성된 도구의 전체 호스트와 함께 번들로 제공됩니다. 빠르게 시작하려는 초보 사용자와 숙련된 침투 테스터 모두에게 유용합니다. Kali Linux는 무료로 제공되며 가상 머신에서 실행할 수 있습니다.

엔맵

이 무료 스캐너는 침투 테스터의 무기고에서 가장 기초적이고 다재다능한 스캐너 중 하나입니다. Nmap은 주로 포트 스캐너입니다. 그러나 NSE 스크립팅 언어를 통해 모든 종류의 스캔을 수행하도록 확장할 수 있습니다.

NMAP 스캐너

WP스캔

WPScan(이 기사의 앞부분에서 다뤘음)은 오픈 소스 WordPress 보안 스캐너입니다. WordPress 코어와 WordPress 플러그인 및 테마 내에서 알려진 WordPress 취약점을 검색합니다.

WPScan 스캐너

WPScan은 일련의 블랙박스 테스트를 수행할 수 있습니다. 즉, 소스 코드에 액세스할 수 없습니다. 결과적으로 WPScan은 매달린 WordPress 취약점을 빠르고 정확하게 찾는 데 적합합니다.

오와스프 잽

OWASP Zed Attack Proxy(ZAP)는 무료 오픈 소스 웹 애플리케이션 침투 테스트 도구입니다. OWASP(Open Web Application Security Project)는 이 도구를 유지 관리합니다. OWASP ZAP는 XSS(교차 사이트 스크립팅) 및 SQLi(SQL 주입)와 같은 다양한 취약점에 대해 웹 응용 프로그램을 테스트하기 위해 특별히 설계되었습니다. ZAP의 핵심은 프록시입니다. 침투 테스터의 브라우저와 웹 사이트 사이에 위치하여 둘 사이에 전송된 요청을 가로채서 검사합니다.

OWASP ZAP 스캐너

프록시 역할 외에도 ZAP는 다양한 취약점을 자동으로 테스트할 수 있으며 다양한 입력을 퍼지 할 수도 있습니다. 퍼징( Fuzzing )은 보안 취약점을 발견하기 위해 애플리케이션에 유효하지 않거나 예상치 못한 입력이 제공되는 보안 테스트 기술입니다.

WordPress에 대한 침투 테스트 – 웹사이트의 보안 상태 평가

WordPress 보안은 일회성 수정 사항이 아닙니다. 강화 > 모니터링 > 테스트 > 개선이라는 4가지 원칙을 기반으로 하는 지속적인 프로세스입니다. 침투 테스트를 통해 테스트 원칙을 다룹니다. 즉, 웹사이트의 보안 상태를 확인합니다. 그런 다음 조사 결과에 따라 설정을 개선하는 데 필요한 조치를 취할 수 있습니다.

따라서 빈번한 WordPress 웹사이트 침투 테스트는 보안 프로그램의 일부여야 합니다. 침투 테스트를 얼마나 자주 수행해야 하는지 판단합니다. 웹 사이트를 자주 변경하는 경우 테스트를 자주 수행해야 합니다. 그러나 웹 사이트가 거의 업데이트되지 않는 경우 분기별 침투 테스트가 트릭을 수행합니다.