Computer >> 컴퓨터 >  >> 프로그램 작성 >> HTML

WordPress CSRF 공격:취약점 및 예방

Cross-Site Request Forgery(CSRF 또는 XSRF로 알려짐)는 WordPress 웹사이트가 직면한 가장 심각한 해킹 중 하나입니다. 이 해킹은 사이트에 설치된 WordPress 플러그인의 취약점으로 인해 발생합니다.

여기서 해커는 웹사이트 사용자를 속여 악의적인 작업을 수행하도록 합니다. 웹사이트 소유자와 사용자 모두에게 유해합니다. CSRF 공격은 양 당사자에게 치명적인 영향을 미칠 수 있으며 처음부터 방지해야 합니다!

CSRF를 사용하면 해커가 웹 사이트를 완전히 제어하고 원하는 모든 종류의 악의적인 활동을 실행하는 데 사용할 수 있습니다. 방문자를 다른 악성 사이트로 리디렉션하거나 멀웨어를 다운로드하도록 속일 수 있습니다. 그들은 또한 귀하와 귀하의 고객으로부터 자금을 훔치는 정도까지 갈 수 있습니다!

그뿐만이 아닙니다. 상황이 더욱 눈덩이처럼 불어날 수 있으며 Google은 결국 귀하의 사이트를 블랙리스트에 올릴 수 있으며 귀하의 호스팅 제공업체는 귀하의 사이트를 일시 중지할 수 있습니다.

이 해킹의 피해자이거나 이를 방지하고 싶다면 저희가 도와드리겠습니다. 이 기사에서는 CSRF 공격을 수정하고 방지하는 방법을 보여줍니다.

틀;DR: 웹사이트가 해킹된 경우 즉시 수정해야 합니다. CSRF 공격 제거 플러그인을 다운로드하여 설치하는 것이 좋습니다. 웹사이트에 대한 심층 스캔을 실행하고 즉시 청소합니다. 웹사이트가 깨끗해지면 플러그인이 향후 해킹 시도로부터 사이트를 보호합니다.

목차

→ CSRF 공격(Cross-Site Request Forgery)이란?

→ WordPress CSRF 취약점이 사이트에서 어떻게 발생했습니까?

→ WordPress 웹사이트에서 CSRF 공격을 방지하는 방법

→ 플러그인 개발자를 위한 CSRF 예방 조치

→ WordPress 사이트 소유자를 위한 CSRF 예방 조치

CSRF 공격이란( 교차 사이트 요청 위조 )?

CSRF WordPress 공격은 이해하기가 약간 복잡하지만 최대한 자세히 설명하겠습니다.

사용자 가입, 회원 또는 로그인이 있는 웹사이트에서 각 사용자는 사이트의 자신의 계정에 대한 액세스 권한이 있습니다. 예를 들어 Amazon 계정, Gmail 계정 또는 온라인 뱅킹 계정이 있습니다.

이러한 웹 사이트는 사용자에게 로그인 자격 증명(사용자 이름 및 암호)을 제공합니다. 이것은 사용자를 인증하기 위해 수행됩니다. 따라서 사용자가 로그인을 원할 때 사용자 이름과 비밀번호를 입력하여 자신을 확인합니다. 이렇게 하면 웹사이트가 사용자 및 브라우저와 신뢰를 구축할 수 있습니다.

WordPress CSRF 공격:취약점 및 예방

CSRF 공격에서 해커는 이 인증된 사용자를 속여 악의적인 작업을 수행합니다.

1. '교차 사이트' 이해

이것이 어떻게 일어나는지 설명하기 위해 예를 들어보겠습니다. 사용자가 사이트 A에 로그인하여 브라우저의 탭에 열어 두었다고 가정해 보겠습니다. (이 사이트 A는 로그인되어 있음을 기억하십시오. 중요합니다.)

이제 해커가 사용자의 이메일 주소를 알고 있다고 가정해 보겠습니다. 그들은 앞으로 몇 시간 안에 만료될 놀라운 할인에 대해 사용자에게 이메일을 보냅니다. 사용자는 속아서 이메일에 있는 링크를 클릭합니다. 그러면 해커가 운영하는 사이트 B라는 웹사이트가 열립니다.

사이트 B에서 할인을 받으려면 양식을 작성하거나 이메일 주소를 입력해야 합니다. 사용자가 양식을 '제출'하기 위해 정상적인 것처럼 보이는 버튼을 클릭합니다.

WordPress CSRF 공격:취약점 및 예방

그러나 사이트 B의 이 '제출' 버튼 뒤에는 해커가 악성 스크립트를 삽입했습니다.

이제 다른 탭에서 열려 있는 사이트 A를 기억하십시오. 이 스크립트는 사이트 A에 요청을 보내고 이에 대해 악의적인 작업을 실행합니다. 이것이 '교차 사이트'로 알려진 이유입니다.

2. 요청 이해

해커 스크립트는 사용자를 대신하여 사이트 B에서 사이트 A로 요청을 보냅니다. 원치 않는 악의적인 행동은 관리자 비밀번호 변경부터 은행 계좌에서 자금 이체까지 그 무엇이든 될 수 있습니다!

3. '위조'에 대한 이해

마지막으로 해커가 사용자 인증을 이용해 A사이트를 속이기 때문에 '위조'다. 따라서 이름은 '교차 사이트 요청 위조'입니다.

간단히 말해서 해커는 사이트 A가 그들의 악의적인 지시가 인증된 사용자가 보낸 합법적인 요청이라고 생각하게 만듭니다. 그러나 사이트 B가 사이트 A에 요청을 보낼 수 있는 방법은 무엇입니까? 다음 섹션에서 이러한 일이 어떻게 발생하는지 자세히 알아볼 것입니다.

참고: 이 섹션은 기술적이고 노련한 WordPress 사용자 또는 개발자를 대상으로 합니다. 건너뛰고 사이트에 대한 CSRF 공격 방지로 바로 이동하려면 으로 이동하십시오. WordPress 사이트 소유자를 위한 CSRF 예방 조치.

[맨 위로 이동 ↑]

WordPress CSRF 취약점이 사이트에서 어떻게 발생했습니까?

취약점이 어떻게 발생하는지 설명하려면 사용자의 브라우저와 웹사이트가 통신하는 방식을 이해해야 합니다.

1. 브라우저 요청 이해

여기에서는 두 가지 종류의 HTTP 요청과 브라우저 쿠키에 대해 설명합니다.

나. HTTP GET 요청

웹 사이트를 방문하면 해당 웹 사이트의 서버에 HTTP GET 요청을 보냅니다. 이 요청은 사이트의 프런트 엔드를 표시하는 데 필요한 데이터를 요청합니다. 웹 서버가 응답하고 요청된 데이터를 보냅니다. 그러면 웹사이트의 콘텐츠가 브라우저에 로드됩니다.

사이트에 로그인하지 않은 사람은 인증되지 않은 사용자입니다. 따라서 GET 및 POST 요청이 전송될 때 쿠키가 사용되지 않습니다. 이 시나리오에는 보안 문제가 없습니다. 그러나 사용자가 로그인하면 이제 인증된 사용자입니다.

웹사이트는 쿠키를 사용하여 이 사용자를 인식하고 제공합니다. 이 쿠키를 사용하여 해당 고유 ID에만 관련된 데이터를 생성할 수 있습니다. 사용자의 로그인을 용이하게 하고, 사용자의 기호에 맞는 광고를 표시하거나, 사용자가 좋아하는 제품을 표시하는 등의 작업을 돕습니다.

ii. CSRF 프로세스

이제 CSRF 취약점이 어떻게 발생하는지 다시 살펴보겠습니다. 이 공격이 효과적이려면 해커가 쿠키를 사용하는 인증된 사용자를 사용해야 합니다.

예를 들어 설명하겠습니다. 여기에서는 해커가 사용자 계정을 제어한 다음 CSRF 취약점을 사용하여 웹사이트를 해킹하는 데 사용하는 방법을 보여줍니다.

→ 사용자 측에서는 어떻게 됩니까?

  1. 사용자가 targetwebsite.com에 로그인했습니다. 브라우저에서.
  2. 다음으로 해커는 이 사용자가 trickwebsite.com을 클릭하도록 유인합니다. 이 사이트를 방문하고 계정에 $50를 받도록 등록하라는 이메일을 보냅니다. (이 링크는 다른 취약점을 사용하여 targetwebsite.com 자체에 삽입될 수도 있습니다.)
  3. 피해자가 이 속임수 웹사이트가 합법적이고 사기에 속한다고 생각한다고 가정하겠습니다. . 여기에서 세부정보로 양식을 작성하고 '제출'을 클릭합니다.
  4. trickwebsite.com에서 , 해커는 이미 이 '제출' 버튼 뒤에 HTML 코드를 배치했습니다. 클릭하면 targetwebsite.com으로 POST 요청을 보냅니다. (사용자가 이미 로그인되어 있는 경우) 이 사용자를 대신합니다.
WordPress CSRF 공격:취약점 및 예방

→ 웹사이트 측에서는 어떻게 됩니까?

  1. 쿠키 사용, targetwebsite.com 사용자(및 브라우저)를 확인하고 요청을 허용합니다. . 이 요청은 인증된 사용자로부터 오는 것이기 때문에 합법적으로 보입니다.
  2. 하지만 전송된 POST 요청에는 웹사이트에 피해를 줄 수 있는 악성 스크립트가 포함되어 있습니다. 예를 들어 스크립트에는 현재 계정 비밀번호를 "newpassword123"으로 변경하는 명령이 포함될 수 있습니다. .
  3. targetwebsite.com에서 요청을 수락한 경우 , 코드가 실행되고 암호가 변경됩니다. 그러면 해커가 계정에 로그인할 수 있습니다 새 비밀번호를 사용하고 모든 권한을 갖습니다.
  4. 다음으로 해커는 이제 웹사이트에서 추가 공격을 실행할 수 있습니다. 이 사용자에게 부여된 권한에 따라 targetwebsite.com에 액세스할 수 있습니다. 데이터베이스 및 기능 제어 뿐만 아니라.

이것은 해커가 CSRF 공격을 사용하여 할 수 있는 일의 한 예일 뿐입니다. 발생할 수 있는 다른 시나리오가 많이 있습니다. 그러나 사용자와 웹사이트 모두 이 해킹의 영향을 받습니다.

[맨 위로 이동 ↑]

CSRF를 방지하는 방법 WordPress 웹사이트에 대한 공격

플러그인에는 CSRF 공격을 허용하는 취약점이 있기 때문에 WordPress 웹사이트는 CSRF 공격에 노출됩니다.

PluginVulnerabilities.com의 전체 공개 보고서에 따르면, 그들이 확인했던 많은 인기 플러그인에는 웹사이트를 CSRF 공격에 취약하게 만드는 보안 문제가 있었습니다. CSRF 해킹을 방지하기 위해 플러그인 개발자는 특정 보안 조치를 구현해야 합니다. 이러한 조치에 대해 간략하게 설명한 다음 WordPress 사이트 소유자로서 CSRF 공격을 중지하기 위해 무엇을 할 수 있는지 알려드리겠습니다.

  • 플러그인 개발자를 위한 CSRF 예방 조치
  • WordPress 사이트 소유자를 위한 CSRF 예방 조치

나. 플러그인 개발자를 위한 CSRF 예방 조치

플러그인 개발자인 경우 CSRF 공격을 방지하기 위해 취할 수 있는 몇 가지 조치는 다음과 같습니다.

1. 안티 CSRF 토큰

Anti-CSRF 토큰은 특정 사용자의 쿠키 및 요청과 함께 전송되는 숨겨진 값입니다. 작동 방식은 다음과 같습니다.

  1. 웹 서버가 이 토큰을 생성하고 숨겨진 필드로 배치됩니다. 양식에.
  2. 사용자가 양식을 작성하고 제출하면 POST 요청에 토큰이 포함됩니다 .
  3. 서버가 비교합니다. 생성된 토큰과 사용자가 보낸 토큰입니다.

일치하면 요청이 유효합니다. 일치하지 않으면 요청이 잘못된 것으로 간주됩니다. 이는 CSRF 공격이 발생하는 것을 방지합니다.

개발자는 플러그인을 생성하거나 업데이트하는 동안 이러한 토큰을 추가할 수 있습니다.

2. Nonce 사용

같은 의미로 사용되지만 Anti-CSRF 토큰과 Nonce는 다릅니다. nonce 값(한 번 사용된 숫자)은 요청에 대해 생성되는 일회용 비밀번호와 같습니다.

HTTP 요청이 제출되면 요청을 확인하기 위해 nonce가 생성됩니다. 그러나 한번 사용하면 nonce는 무효화되고 사용자는 같은 nonce 값을 사용하여 양식을 다시 제출할 수 없습니다.

3. 동일 사이트 쿠키

CSRF 공격은 동일한 쿠키를 사용하는 사이트 간 요청으로 인해 가능합니다. 동일 사이트 쿠키는 쿠키가 생성된 동일한 웹사이트에서 요청이 이루어진 경우에만 쿠키가 전송될 수 있음을 의미합니다.

WordPress CSRF 공격:취약점 및 예방

이 방법의 문제는 모든 브라우저가 동일한 사이트 쿠키를 지원하는 것은 아니지만 Chrome, Firefox 및 기타 몇 가지 브라우저가 필요하다는 것입니다.

이것은 추가 방어 레이어로 사용할 수 있지만 CSRF 공격을 방지하기 위해 단독으로 사용해서는 안 됩니다.

오늘날 거의 모든 조치가 해커에 의해 우회될 수 있기 때문에 이러한 예방 조치에 대한 자세한 내용은 다루지 않겠습니다. 해커들은 나날이 똑똑해지고 있으며 우리가 취하는 예방 조치를 극복하기 위한 새로운 기술을 개발하고 있습니다.

이러한 CSRF 공격으로부터 자신을 보호하기 위해 WordPress 사이트 소유자로서 취할 수 있는 사전 대응적 조치에 대해 알아보겠습니다.

[맨 위로 이동 ↑]

ii. WordPress 사이트 소유자를 위한 CSRF 예방 조치

위에서 언급했듯이 플러그인 작성자는 애플리케이션을 안전하게 만들기 위한 조치를 취해야 합니다. 하지만 그렇지 않다면 어떻게 될까요? 어떤 플러그인이 CSRF 방지 조치를 구현했는지 어떻게 알 수 있나요?

WordPress는 거의 자체적으로 서 있지 않습니다. 플러그인은 웹사이트의 기능과 디자인에서 중요한 역할을 합니다. 따라서 WordPress 사이트에는 플러그인이 필요하지만 이러한 플러그인이 적절한 보안 조치를 취했다고 맹목적으로 믿으십니까?

아니! 플러그인 개발자가 하지 않더라도 웹사이트 소유자는 경계하고 자체 보안 조치를 취해야 합니다.

CSRF 공격으로부터 자신을 보호하기 위해 할 수 있는 일은 다음과 같습니다.

1. 안티 CSRF 플러그인 사용

CSRF 공격 전용 플러그인이 WordPress 저장소에 많지 않습니다. 다음 두 가지를 찾았습니다.

(A) 의견 양식 CSRF 보호 이 WordPress 플러그인은 댓글 양식에 안티 CSRF 토큰을 추가합니다. 토큰에는 비밀로 유지되고 추측하기 어려운 고유한 값이 있습니다. 따라서 사용자가 양식을 제출하면 비밀 토큰도 함께 제출됩니다. 일치하는 경우에만 양식 제출 요청이 수락됩니다.

(B) 동일 사이트 쿠키 이 플러그인은 Chrome, Firefox, IE 및 Edge를 포함하는 지원되는 브라우저에서 작동합니다. HTTP 요청이 제출될 때 전송된 쿠키가 동일한 사이트에서 왔는지 확인합니다. 이는 모든 교차 사이트 요청을 차단하므로 모든 CSRF 공격을 차단합니다.

2. 만능 WordPress 보안 플러그인 설치

보안 플러그인이 많이 있습니다. WordPress 웹사이트에서 사용할 수 있습니다. 이 플러그인은 CSRF 종류를 포함한 모든 종류의 해커로부터 사이트를 안전하게 보호할 수 있습니다. 그러나 모든 보안 플러그인이 동일한 수준의 보안을 제공하는 것은 아닙니다.

또한 CSRF 공격은 찾기가 까다롭습니다. 해커는 사이트 소유자와 사용자로부터 이를 잘 위장하므로 눈에 띄지 않습니다. 이러한 위장된 멀웨어를 탐지할 수 있는 플러그인이 필요합니다.

보안 플러그인을 선택할 때 CSRF 공격으로부터 보호하려면 다음을 수행해야 합니다.

  1. 정기적으로 검사 악성 스크립트가 있는지 웹사이트에서 확인하세요.
  2. 모든 파일 및 데이터베이스 검색 귀하의 웹사이트에서.
  3. 모든 종류의 악성코드를 탐지하는 기능이 있습니다. – 새로운 것, 숨겨진 것 또는 가장한 것 포함. (일부 플러그인은 이미 발견된 멀웨어만 검색합니다.)
  4. 알림 웹사이트에 의심스러운 활동이 있는 경우
  5. 독립적인 대시보드 제공 해커가 자신의 관리자 계정을 차단하더라도 웹사이트를 정리할 수 있습니다.

이러한 보호 및 기능을 제공하는 플러그인은 MalCare입니다. WordPress 웹 사이트에 플러그인을 설치하면 CSRF 공격을 제거할 수 있습니다. 또한 WordPress 악성코드를 제거합니다. 해킹 중에 해커가 사이트에 추가했을 수 있습니다.

웹사이트는 악성 IP 주소와 악성 봇이 웹사이트를 방문하는 것을 차단하는 사전 예방적 방화벽으로 보호됩니다.

해커가 악의적인 교차 사이트 요청을 사용하여 사이트를 해킹하는 경우 이 WordPress 보안 플러그인이 즉시 알려줍니다. 그런 다음 동일한 플러그인을 사용하여 즉시 조치를 취할 수 있습니다.

3. 웹사이트 강화

WordPress는 웹 사이트를 강화하기 위해 특정 조치를 취할 것을 권장합니다. 이렇게 하면 해커가 침입하기가 매우 어렵습니다. 몇 가지 조치를 간략하게 다루었지만 WordPress 강화에 대한 광범위한 가이드를 읽는 것이 좋습니다 .

이러한 요점 중 많은 부분이 약간 기술적인 것이므로 자세한 가이드를 통해 더 잘 이해할 수 있습니다. CSRF 공격으로 인한 피해를 방지하거나 줄이기 위한 몇 가지 강화 조치는 다음과 같습니다.

a. 이중 인증 사용

2단계 인증을 사용하면 사용자 검증의 추가 계층이 추가됩니다. 사용자는 로그인 자격 증명을 입력해야 하며, 그 후에 두 번째 암호가 필요합니다. 이것은 사용자의 등록된 이메일 또는 전화번호로 전송된 1회용 비밀번호일 수 있습니다. Google Authenticator와 같은 앱에서 생성한 인증 번호일 수도 있습니다.

b. 신뢰할 수 없는 폴더에서 PHP 실행 차단

CSRF 공격을 통해 해커가 웹사이트의 파일에 액세스할 수 있게 되면 PHP 기능을 실행하여 악의적인 작업을 수행할 수 있습니다. (PHP 함수는 프로그램으로 작성된 코드 블록입니다). 필요하지 않은 곳에서 PHP 실행을 비활성화할 수도 있습니다.

다. 파일 편집기 비활성화

해커가 WordPress 관리자 계정에 액세스하면 웹 사이트를 완전히 제어할 수 있습니다. 대시보드에서 플러그인 또는 테마 아래의 "편집기"에 액세스할 수 있습니다. 여기에서 그들은 자신의 스크립트를 편집하거나 업로드하여 콘텐츠를 표시하고, 사이트를 훼손하고, SEO 스팸을 사용자에게 보내는 등의 작업을 수행할 수 있습니다.

d. 보안 키 변경

WordPress 계정에 액세스하려고 할 때마다 로그인 자격 증명을 입력할 필요가 없다는 것을 알았을 것입니다. 지정된 필드에 이미 채워져 있습니다. 이 정보가 해커로부터 안전한지 확인하기 위해 WordPress는 이 데이터를 암호화하고 저장하는 보안 키를 사용합니다. 해커가 CSRF 공격을 사용하여 사이트에 침입하면 이 정보에 액세스할 수 있습니다. . 그런 다음 다른 것으로 변경하고 원할 때 웹사이트의 관리자 계정에 계속 로그인하는 데 사용할 수 있습니다.

  •  권장 가이드에 설명된 대로 이러한 강화 조치를 수동으로 적용할 수 있습니다. 또는 MalCare를 사용하여 몇 번의 클릭만으로 구현할 수 있습니다.
WordPress CSRF 공격:취약점 및 예방

4. 사용하지 않는 모든 테마 및 플러그인 삭제

웹사이트에 설치한 플러그인과 테마가 많을수록 해커가 악용할 기회도 많아집니다. 사용하지 않는 플러그인과 테마는 모두 삭제하고 사용하는 것만 유지하는 것이 가장 좋습니다.

이 외에도 사이트를 HTTP에서 HTTPS로 이동, 보안 플러그인 설치, 로그인 페이지 보호와 같은 몇 가지 보안 조치를 더 취할 수 있습니다.

[맨 위로 이동 ↑]

최종 생각

CSRF 공격은 사용자와 웹사이트 모두에 심각한 영향을 미칩니다.

해커가 HTTP 요청을 통해 스크립트를 성공적으로 실행하면 웹사이트를 장악할 수 있습니다. 그 후에는 그들이 무엇을 할 수 있는지 알 수 없습니다. 그들은 자신의 선전을 표시하거나 불법 제품이나 마약을 판매하기 위해 웹사이트를 훼손할 수 있습니다. 웹사이트 방문자를 자신의 웹사이트로 리디렉션할 수도 있습니다.

이러한 사이트는 일반적으로 성인 사이트, 불법 제품을 판매하는 사이트 또는 방문자를 속여 멀웨어를 다운로드하도록 하는 사이트입니다.

  1. 웹사이트 소유자는 이러한 공격으로부터 안전하게 보호할 수 있는 조치를 취해야 합니다. 보안 플러그인을 유지하는 것이 좋습니다. 예를 들어 WordPress 사이트에서 활성화된 MalCare는 전면적인 보호를 제공합니다.
  2. 웹사이트 강화 조치를 시행하는 것이 좋습니다. 해커가 침입하기 어렵게 만듭니다.
  3. 마지막으로 플러그인 및 테마 사용 시 주의사항입니다. 신뢰할 수 있는 테마 및 플러그인 설치 WordPress 저장소 또는 ThemeForest 및 CodeCanyon과 같은 시장에서.

WordPress 웹사이트에서 이러한 조치를 구현하면 해커로부터 안전할 것이라고 확신합니다!

MalCare로 WordPress 사이트를 보호하세요!