공식 CVE 취약점 보고서에 따르면 WordPress에 새로운 결합형 rce 취약점이 있음을 알게 되었습니다. 취약점 번호는 CVE-2019-8943 및 CVE-2019-8942입니다. 참고: 취약점이 재현됩니다. 지금 빌드하려면 인터넷 연결을 끊어야 합니다. WordPress는 인터넷에 연결되면 자동으로 코드 패키지를 업데이트합니다. 취약점이 발생한 post.php 파일을 찾으십시오. WordPress에는 여러 개의 post.php 파일이 있습니다. 다음은 각각의 기능에 대한 간략한 설명입니다. post의 소스 파일은 wp-admin/includes/입니다. post.php에는 백엔드가 있습니다. wp-admin/post.php는 백그라운드 게시물 요청 처리입니다.
wp-admin/post.php:require_once( dirname( __FILE__ ) . '/admin.php' ); wp-admin/admin.php:require_once(ABSPATH . 'wp-admin/includes/admin.php'); wp-admin/includes/admin.php:require_once(ABSPATH . 'wp-admin/includes/post.php'); wp-admin/admin.php::require_once(dirname(dirname(__FILE__)) . '/wp-load.php'); wp-load.php:require_once( dirname( ABSPATH ) . '/wp-config.php' ); wp-config.php:require_once(ABSPATH . 'wp-settings.php'); wp-settings.php:require( ABSPATH . WPINC . '/post.php' ); define( 'WPINC', 'wp-includes' );
위 호출 프로세스에 따르면 취약점 악용 프로세스는 다음과 같습니다. 이미지를 미디어 라이브러리에 저장한 다음 업데이트 작업을 수행하고 wp -admin/post.php 함수를 호출하고 아래 그림과 같이 case:editpost로 전환합니다.
여기서 edit_post는 취약점 함수입니다. 아래 그림과 같이 함수 선언을 입력합니다.
$post_data가 post입니다. 배열이 필터링 및 보호되지 않아 후속 취약점이 발생했습니다. 아래 그림과 같이 복구된 코드를 비교하세요.
여기서 몇 마디 더 말씀드리겠습니다. 처음에는 온라인에서 WordPress를 찾지 못했기 때문에 때가 되면 자동으로 업데이트되므로 아래 그림과 같이 또 다른 유사한 취약점 지점을 찾았습니다.
위 코드는 코드의 $key(데이터베이스의 Meta_id), $value['key'](데이터베이스의 Meta_key), $value['value'](meta_value)를 기반으로 들어오는 메타 배열을 기반으로 update_meta를 수행합니다. 데이터베이스에서), 메타[1][키]=_wp_attached_file&meta[1][값]=123을 구성하고 마지막으로 다음 UPDATE `wp_postmeta` SET `meta_key` = '_wp_attached_file', `meta_value` =와 유사한 데이터베이스 문을 실행합니다. '123' WHERE `meta_id` = 2. 구현 프로세스는 아래 그림과 같습니다.
관련 권장 사항: " WordPress Tutorial 》
meta_id를 기반으로 wp_postmeta 테이블의 콘텐츠를 업데이트하고 마지막으로 아래 그림과 같이 do_action 함수를 실행합니다.
그러나 세 번째와 네 번째 if의 한계로 인해 실행이 성공적이지 못하다는 점을 취약점 재발의 흥미로운 점으로 생각하여 계속 진행합니다. 이를 추적하려면 아래 그림과 같이
악용 가능한 지점을 찾아 코드와 같이 wp_updae_post 함수를 입력합니다.
이 함수는 몇 가지 과정을 거칩니다. 아래 그림과 같이 매개변수 획득, 배열의 변수 추출 및 값 할당, 취약점이 발생한 지점 추적 등의 연산을 수행합니다.
wp_insert_attachment 함수가 반환되는 것으로 확인되었으며, 이 함수는 아래 그림과 같이 추적됨 표시:
wp_insert_post 함수로 돌아가서 이 함수를 추적하고 아래 그림과 같이 이 함수의 취약점 지점을 찾습니다.
그래서 기반 위의 취약성 지점에 대해 Meta_input[_wp_attached_file] =. ./evil.jpg?shell.php를 전달하고 SQL 문을 실행할 수 있습니다. UPDATE `wp_postmeta` SET `meta_value` = '../evil.jpg?shell.php ' WHERE `post_id` = 8 AND `meta_key` = '_wp_attached_file', 테스트 조건의 전제 조건으로 post_id를 알아야 합니다. 그러나 일반적인 상황에서는 이미지 업데이트 시 이 매개변수가 포함된다는 것을 관찰할 수 있습니다. 관련 내용을 채울 데이터베이스. SQL문의 구체적인 중첩 실행 방법은 아래 그림과 같습니다.
파라미터를 전달하여 해당 테이블명과 컬럼명에 값을 할당하고 최종적으로 do_action 함수를 실행하는 방식은 다음과 같습니다. 아래 그림:
여기에서 WordPress 디렉터리 탐색 취약점을 완성한 다음 로컬 파일 포함 취약점을 사용하여 rce를 실행합니다. WordPress는 아래 그림과 같이 공식적으로 이미지 라이브러리 GD 및 Imagick을 사용합니다.
Imagick은 포함되지 않습니다. WordPress에서는 플러그인을 다운로드해야 하기 때문에 기본적으로 GD 라이브러리를 우회하여 임의의 코드를 실행할 수 있습니다.
위 내용은 워드프레스에 취약점이 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!