WordPress 플러그인 WooCommerce의 임의 파일 삭제 취약점을 해결하는 방법
기술적 세부사항
워드프레스의 권한 처리 메커니즘은 주로 역할별로 다른 기능을 제공하여 구현됩니다. 스토어 관리자 역할이 정의되면 이 역할에 edit_users 기능을 할당하여 고객 계정을 직접 관리할 수 있습니다. . 전체 권한 할당 프로세스는 플러그인 설치 프로세스 중에 발생합니다. woocommerce/includes/class-wc-install.php:
//Shop manager role.add_role( 'shop_manager', // Internal name of the new role 'Shop manager', // The label for displaying array( // Capabilities ⋮ 'read_private_posts' => true, 'edit_users' => true, 'edit_posts' => true, ⋮ ));
역할 권한 정보는 WordPress 핵심 설정과 함께 데이터베이스에 저장됩니다. 즉, 플러그인이 활성화되지 않은 경우에도 사용자 역할은 이제 플러그인과 독립적입니다. , 관련 역할 권한에는 영향을 미치지 않습니다.
인증된 사용자가 다른 사용자 정보를 수정하려고 하면 current_user_can() 함수가 호출되어 권한이 있는 사용자만 이 작업을 수행할 수 있도록 합니다. Current_user_can() 함수 호출 예:
$target_user_id= $_GET['target_user_id'];if(current_user_can('edit_user',$target_user_id)) { edit_user($target_user_id);}
호출의 확인 논리는 다음과 같습니다. 이 사용자는 $target_user_id ID를 사용하여 특정 사용자를 수정하려고 합니다.
기본 구성에서 edit_users 기능을 사용하면 권한이 있는 사용자(예: 매장 관리자)가 다른 사용자, 심지어 관리자 사용자를 편집한 다음 비밀번호 업데이트와 같은 작업을 수행할 수 있습니다. 보안상의 이유로 WooCommerce는 상점 관리자가 사용자를 편집할 수 있는지 여부를 지정해야 하므로 플러그인은 메타 권한을 추가해야 합니다. 메타 함수는 current_user_can()에 의해 호출될 수 있습니다. 기본 동작에서 함수가 반환하는 값은 true이지만, 메타 권한 함수가 반환하는 값은 현재 사용자가 그러한 작업을 수행할 수 있는지 여부를 결정할 수 있습니다. 다음은 WooCommerce 메타 권한 필터의 추상 함수 코드입니다.
function disallow_editing_of_admins( $capability, $target_user_id ) { // If the user is an admin return false anddisallow the action if($capability == "edit_user"&& user_is_admin($target_user_id)) { return false; } else { return true; }}add_filter('map_meta_cap', 'disallow_editing_of_admins');
예를 들어 current_user_can('edit_user', 1)이 호출되면 필터는 ID 1($target_user_id)을 가진 사용자가 다음인지 여부를 결정합니다. 관리자가 결정합니다. 사용자가 결과에 따라 작업을 수행하도록 허용할지 여부입니다.
스토어 관리자가 플러그인을 비활성화했습니다
기본적으로 관리자만 플러그인을 비활성화할 수 있습니다. 그러나 이 취약점으로 인해 상점 관리자는 서버에서 쓰기 가능한 모든 파일을 삭제할 수 있으므로 WooCommerce의 기본 파일인 woocommerce.php를 삭제하여 WordPress에서 플러그인을 로드하는 것을 방지할 수 있습니다.
이 파일 삭제 취약점은 WooCommerce의 로깅 기능에 존재합니다. 로그는 .log 파일 형식으로 wp-content 디렉터리에 저장됩니다. 매장 관리자가 로그 파일을 삭제하려면 파일 이름을 GET 매개변수로 제출해야 합니다. 아래 표시된 코드 조각은 취약한 부분입니다:
woocommerce/includes/admin/class-wc-admin-status.php
class WC_Admin_Status{ public static function remove_log() { ⋮ $log_handler = newWC_Log_Handler_File(); $log_handler->remove(wp_unslash($_REQUEST['handle']));}
woocommerce/includes/log-handlers/class-wc-log-handler-file.php
class WC_Log_Handler_File extends WC_Log_Handler{ public function remove($handle) { ⋮ $file = trailingslashit(WC_LOG_DIR) .$handle; ⋮unlink($file);
여기서 문제는 파일 이름($handle)이 로그 디렉터리(wp-content/wc-logs/)에 추가된 다음 unlink() 함수에 전달된다는 것입니다. "$handle../../plugins/woocommerce-3.4.5/woocommerce.php"를 설정할 때 wp-content/wc-logs/../../plugins/woocommerce-3.4.5/woocommerce.php 파일을 작성하세요. 제거되고 WooCommerce가 비활성화됩니다.
위 내용은 WordPress 플러그인 WooCommerce의 임의 파일 삭제 취약점을 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









PHP와 Flutter는 모바일 개발에 널리 사용되는 기술입니다. Flutter는 크로스 플랫폼 기능, 성능 및 사용자 인터페이스가 뛰어나며 고성능, 크로스 플랫폼 및 맞춤형 UI가 필요한 애플리케이션에 적합합니다. PHP는 성능이 낮고 크로스 플랫폼이 아닌 서버 측 애플리케이션에 적합합니다.

style.css 파일을 편집하여 WordPress 페이지 너비를 쉽게 수정할 수 있습니다. style.css 파일을 편집하고 .site-content { max-width: [원하는 너비] }를 추가하세요. [원하는 너비]를 편집하여 페이지 너비를 설정하세요. 변경 사항을 저장하고 캐시를 지웁니다(선택 사항).

WordPress 게시물은 /wp-content/uploads 폴더에 저장됩니다. 이 폴더는 하위 폴더를 사용하여 연도, 월, 기사 ID별로 정리된 기사를 포함하여 다양한 유형의 업로드를 분류합니다. 기사 파일은 일반 텍스트 형식(.txt)으로 저장되며 파일 이름에는 일반적으로 ID와 제목이 포함됩니다.

WordPress에서 제품 페이지 만들기: 1. 제품 만들기(이름, 설명, 사진) 2. 페이지 템플릿 사용자 정의(제목, 설명, 사진, 버튼 추가) 3. 제품 정보(재고, 크기, 무게)를 입력합니다. 4. 변형(다양한 색상, 크기)을 만듭니다. 5. 공개 또는 숨김을 설정합니다. 6. 댓글을 활성화/비활성화합니다. 7. 페이지를 미리 보고 게시합니다.

WordPress 템플릿 파일은 /wp-content/themes/[테마 이름]/ 디렉터리에 있습니다. 헤더(header.php), 바닥글(footer.php), 기본 템플릿(index.php), 단일 기사(single.php), 페이지(page.php)를 포함하여 웹사이트의 모양과 기능을 결정하는 데 사용됩니다. , 아카이브(archive.php), 카테고리(category.php), 태그(tag.php), 검색(search.php) 및 404 오류 페이지(404.php). 이러한 파일을 편집하고 수정하면 WordPress 웹사이트의 모양을 사용자 정의할 수 있습니다.

WordPress에서 작성자 검색: 1. 관리자 패널에 로그인한 후 게시물 또는 페이지로 이동하여 검색 표시줄을 사용하여 작성자 이름을 입력하고 필터에서 작성자를 선택합니다. 2. 기타 팁: 와일드카드를 사용하여 검색 범위를 넓히고, 연산자를 사용하여 기준을 결합하거나, 저자 ID를 입력하여 기사를 검색하세요.

가장 안정적인 WordPress 버전은 최신 보안 패치, 성능 향상, 새로운 기능 및 개선 사항이 포함된 최신 버전입니다. 최신 버전으로 업데이트하려면 WordPress 대시보드에 로그인하고 업데이트 페이지로 이동하여 지금 업데이트를 클릭하세요.

WordPress는 데이터베이스 상호 작용, 양식 처리, 동적 콘텐츠 생성 및 사용자 요청을 처리하기 위한 핵심 프로그래밍 언어로 PHP 언어를 사용하여 개발되었습니다. PHP는 크로스 플랫폼 호환성, 학습 용이성, 활발한 커뮤니티, 풍부한 라이브러리 및 프레임워크 등의 이유로 선택되었습니다. WordPress는 PHP 외에도 HTML, CSS, JavaScript, SQL 등과 같은 언어를 사용하여 기능을 향상시킵니다.
