
CodePath 7주차 및 8주차 과제: CVE-2017-14719, CVE-2019-9787 및 REST API를 통한 인증되지 않은 페이지/포스트 콘텐츠 수정
CodePath 7주차 및 8주차 과제: CVE-2017-14719, CVE-2019-9787 및 REST API를 통한 인증되지 않은 페이지/게시물 콘텐츠 수정
총 소요 시간: 16시간
목표: 오래된 버전의 WordPress에 영향을 미치는 취약점을 찾고, 분석하고, 재현하고, 문서화한다
- [ ] 재현 단계: 공격자가 관리자 계정에 접근 권한을 얻었다면, "Plugins"(플러그인) 버튼을 클릭하여 설치된 플러그인을 볼 수 있습니다. 나열된 각 플러그인 옆에는 "Delete"(삭제) 버튼이 있으며, 이 버튼을 누르면 공격자는 영구적인 변경을 하기 전에 삭제하려는 디렉터리의 내용을 볼 수 있는 페이지로 이동하게 됩니다. 이 페이지에서 공격자는 URL에서 플러그인 이름을 삭제할 수 있습니다(checked[0]= 바로 뒤이자 '&' 앞에 위치). 공격자는 삭제하려는 특정 디렉터리에 도달할 때까지 플러그인 이름을 하나 이상의 " ../ " 문자로 대체합니다.
- [ ] 영향을 받는 소스 코드:
- https://core.trac.wordpress.org/browser/tags/3.8/src/wp-admin/plugins.php
#######################################################################################
########################################################################################
이 URL에서 파이썬 익스플로잇 코드를 사용했습니다: https://www.exploit-db.com/exploits/41223
'REST API를 통한 인증되지 않은 페이지/게시물 콘텐츠 수정' 작업을 하는 동안 lxml 패키지가 설치되어 있지 않아 파이썬 파일에서 import 오류가 발생했습니다.
lxml을 설치한 후 'python [exploit_file_name].py http://wpdistillery.vm'을 다시 실행해 보았습니다. 여기서 두 번째 문제가 발생했습니다. UnicodeEncodeError가 발생한 것입니다. 범위를 벗어난 서수(ordinal)를 포함하는 불필요한 게시물을 삭제하여 이 문제를 해결했습니다.

일반 텍스트 콘텐츠로 새 게시물을 만들고 스크립트를 다시 실행했습니다. 스크립트는 성공적으로 실행되어 API 엔드포인트를 발견하고 사용 가능한 게시물 ID, 제목, 링크를 가져왔습니다.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.