
CodePath 第7週・第8週の課題: CVE-2017-14719, CVE-2019-9787 & REST API経由の非認証のページ/投稿コンテンツ改ざん
CodePath 第7週および第8週の課題: CVE-2017-14719, CVE-2019-9787、およびREST APIによる認証なしのページ/投稿コンテンツ改ざん
所要時間: 合計 16 時間
目的: WordPress の旧バージョンに影響する脆弱性を発見、分析、再現、文書化すること
- [ ] 再現手順: 攻撃者が管理者アカウントへのアクセスを取得した場合、「プラグイン」ボタンをクリックしてインストール済みプラグインを表示できます。各プラグインの横には「削除」ボタンがあります。これを押すと、管理者が恒久的な変更を行う前に削除しようとしているディレクトリの内容を表示できるページに移動します。このページで、攻撃者はURL(checked[0]=の直後、'&'の前にある部分)からプラグイン名を削除し、削除したい特定のディレクトリに到達するまで1つ以上の「 ../ 」文字に置き換えます。
- [ ] 影響を受けるソースコード:
- https://core.trac.wordpress.org/browser/tags/3.8/src/wp-admin/plugins.php
#######################################################################################
########################################################################################
このURLからPythonのエクスプロイトコードを使用しました: https://www.exploit-db.com/exploits/41223
「REST APIによる認証なしのページ/投稿コンテンツ改ざん」に取り組んでいる際、lxmlパッケージがインストールされていなかったため、Pythonファイルでインポートエラーが発生しました。
lxmlをインストールした後、再度'python [exploit_file_name].py http://wpdistillery.vm'を実行しようとしました。ここで2つ目の問題に直面しました: UnicodeEncodeErrorが発生しました。この問題は、範囲外の序数を含む不要な投稿を削除することで解決しました。

プレーンテキストコンテンツで新しい投稿を作成し、スクリプトを再度実行しました。正常に実行され、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.