programing

WordPress CSRF 공격 초안 상태

bestprogram 2023. 3. 23. 23:15

WordPress CSRF 공격 초안 상태

새로운 포스트 드래프트를 작성할 때 CSRF 부정 이용으로부터 WP를 가장 안전하게 보호하는 방법은 무엇입니까?

새로운 투고를 추가하여 초안으로 저장하면 Burp Suite를 사용하여 요청을 가로챌 수 있습니다.

Burp Suite의 인게이지먼트 툴을 사용하여 투고 타이틀의 값을 변경하고 URL을 브라우저에 다시 붙여넣을 수 있습니다.이것에 의해, 변경된 투고 타이틀의 새로운 초안이 작성됩니다.

어떻게 하면 이것을 막을 수 있을까요?

건배.

WordPress는 이미 난스를 사용하여 CSRF 보호 메커니즘을 제공합니다.새로운 투고를 작성하면, 새로운 일의의 난스가 작성됩니다.이 난스는 필수이며 투고를 초안으로 저장하거나 게시하기 위해 나머지 POST 데이터와 함께 제출해야 합니다.난스가 존재하지 않거나 유효하지 않은 경우 요청은 거부됩니다.(Wordpress v4.9.8로 테스트 완료)

테스트에서는 Burp를 사용하여 올바른 난스를 송신했기 때문에 드래프트를 변경할 수 있었지만 CSRF 공격에서는 이 값을 알 수 없습니다.Burp는 대행 수신 프록시이기 때문에 사실상 자신의 HTTP 트래픽에 대해 MITM 공격을 실행했습니다.MITM 공격이 우려되는 경우 HTTPS를 사용해야 합니다. 물론 공격자는 여전히 네트워크 트래픽을 가로챌 수 있지만 모든 데이터는 암호화됩니다.

이것은 CSRF의 악용이라고는 할 수 없지만, MITM의 악용이라고 말할 수 있습니다.WordPress 버전, 플러그인 및 해당 플러그인을 최신 상태로 유지하면 대부분의 공공 공격으로부터 WordPress 설치를 보호할 수 있으며 https://wordpress.org/plugins/tags/security/에서 보안 관련 플러그인을 많이 찾을 수 있습니다.

WordPress의 보안 테스트에 가장 적합한 도구는 WPScan이라고 생각합니다.방대한 취약성 데이터베이스를 보유하고 있으며 가능한 악용 가능성을 탐지하고 사용자, 버전 및 플러그인을 열거할 수 있습니다.WPScan은 대부분 재구성 도구이지만 보고된 취약성이 Metasploit 또는 Wpxf(WordPress 전용으로 알려져 있지 않지만 강력한 도구)를 통해 악용될 수 있는지 테스트할 수 있습니다.이러한 툴은, 퍼블릭한 부정 이용만을 검출해 이용할 수 있습니다.새 취약성을 검색하려면 Burp 또는 유사한 스캐너를 사용하여 WordPress 소스 코드를 조사할 수 있습니다.

질문을 잘못 이해한 경우, (플러그인을 쓰고 있다고 합시다) 난스가 없는 폼이 있는 경우 난스를 에 추가한 후 와 함께 폼을 수신하는 스크립트로 확인할 수 있습니다.그러나 양식과 함께 난스를 사용하지 않는 WordPress 설치가 있는 경우 난스를 수동으로 추가하지 말고 새 버전으로 업데이트해야 합니다.

Wordpress는 기존의 난스를 사용하지 않고 특정 폼액션과 사용자 세션의 조합에 바인드하여 2개의 틱(디폴트로는 각 12시간)에 걸쳐 여러 번 사용합니다.즉, 기본적으로는 하루까지 유효하며, 그 기간 동안 반복적으로 사용할 수 있습니다., 사용 후에 「재설정」되어 시간을 완전하게 리셋 할 수 있습니다.이는 수년간 보안 전문가들에 의해 오해의 소지가 있고 안전하지 않다는 비판을 받아 왔습니다.WordPress의 핵심 팀은 누군가가 사용자 세션과 실제 난스를 모두 가지고 있어야 한다는 요건이 이를 무시할 수 있는 위협이라고 주장하면서 자신들의 입장을 옹호해 왔습니다.손상된 호스트와 유효한 SSL 보호가 없는 사이트 모두 이 작업을 매우 쉽게 수행할 수 있습니다.

현재 발생하고 있는 근본적인 문제는 WordPress 난스가 전혀 난스가 아니라는 것을 나타냅니다.이는 기본적으로 단일 폼액션에서 단시간 동안 반복적으로 사용되는 액세스컨트롤 해시이며 단일 사용을 보증하는 메커니즘은 없습니다.그래서 난스를 성공적으로 가로채 재사용할 수 있었습니다.참고로 이 동작은 Zed Attack Proxy, Wireshark, Charles Proxy 및 기타 많은 유사한 유틸리티에서도 쉽게 재현될 수 있습니다.이 약점을 밝혀낼 수 있는 것은 트림뿐만이 아닙니다.

그러나 원한다면 이를 수정할 수 있는 방법이 있지만, 이는 다소 관여되어 있고 특별히 쉽게 달성할 수 있는 것은 아닙니다.

다음 함수는 플러그가 가능합니다.즉, 자체 함수로 덮어쓸 수 있으며 난스가 무엇인지에 대한 시스템 해석도 제어할 수 있습니다.다음과 같은 특정 방법을 사용하여 자체 난스 시스템을 제공하고 플러그인/코어 코드 기능을 손상시키지 않도록 원래 예상된 것과 동일한 값을 반환해야 합니다.

예를 들어 elhardoum/nonce-php 또는 wbswjc/nonce 등의 패키지의 지원을 사용하여 자체 난스 구현을 제공하고 위의 플러그형 함수를 덮어쓰고 사용자 정의 플러그인을 사용하여 구현할 수 있습니다.이것은 매우 간단하지 않고, 실장하기 위해서는 많은 커스텀 로직이 필요합니다.

위의 플러그 가능 기능을 덮어쓸 뿐만 아니라,apply_filters자신의 소스와 마찬가지로 플러그인이 이러한 필터에 바인드하려고 하는 변경은 모두 적절히 무효화해 주세요.또, 사용하고 있는 다른 플러그 인이나 플러그 인의 실장 방법에 영향을 주지 않게, 원래의 형식과 같은 형식으로 기대치를 반환합니다.

충분한 리스크가 있다고 생각되거나 사이트에서 보호하고 있는 데이터가 충분히 중요하다고 생각되는 경우에는 시도해 볼 가치가 있습니다.금융거래나 기밀데이터를 취급하지 않거나 ssl의 배후에 적절히 보호되어 있거나, 난스의 커스텀 실장 작성에 특별한 관심이 없는 경우, 그리고 그 결과 디폴트의 느슨한 실장이 존재할 것으로 예상되는 수많은 플러그인이 불가피하게 기능하도록 유지 보수할 필요가 있습니다.자주 업데이트하고 워드펜스나 수쿠리와 같은 강력한 보안 플러그인이 있으며 모든 플러그인/솔루션에서 정기적으로 업데이트를 실행한다면 핵심 개발 프로그램을 그대로 사용하고 기본값을 사용하는 것이 가장 좋습니다.

최소한 SSL을 사용하여 MITM 공격을 경감하고 CSRF를 경감하는 적절한 접근컨트롤 헤더를 사용해야 합니다.

언급URL : https://stackoverflow.com/questions/52500235/wordpress-csrf-exploit-draft-status