Wordpress
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-78abb7891633b1e8147b4e743e4f00af375d3cd6%252Fimage%2520%2848%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=44418454&sv=1)
Use Trickest to easily build and automate workflows powered by the world's most advanced community tools. Get Access Today:
基本情報
アップロードされたファイルは次の場所にあります: http://10.10.10.10/wp-content/uploads/2018/08/a.txt
テーマファイルは/wp-content/themes/にあります。 したがって、RCEを取得するためにテーマのphpを変更する場合は、そのパスを使用することになります。例えば: テーマtwentytwelveを使用すると、次の場所にある404.phpファイルにアクセスできます: /wp-content/themes/twentytwelve/404.php
別の便利なURLは次のとおりです: /wp-content/themes/default/404.php
wp-config.phpにはデータベースのルートパスワードが含まれています。
確認するためのデフォルトのログインパス: /wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/
主なWordPressファイル
index.php
license.txt
には、インストールされたWordPressのバージョンなどの有用な情報が含まれています。wp-activate.php
は、新しいWordPressサイトを設定する際のメールアクティベーションプロセスに使用されます。ログインフォルダ(隠すために名前が変更される場合があります):
/wp-admin/login.php
/wp-admin/wp-login.php
/login.php
/wp-login.php
xmlrpc.php
は、HTTPを輸送メカニズム、XMLをエンコーディングメカニズムとして使用してデータを送信できるWordPressの機能を表すファイルです。このタイプの通信は、WordPressのREST APIに置き換えられました。wp-content
フォルダは、プラグインとテーマが保存される主なディレクトリです。wp-content/uploads/
は、プラットフォームにアップロードされたファイルが保存されるディレクトリです。wp-includes/
は、証明書、フォント、JavaScriptファイル、ウィジェットなどのコアファイルが保存されるディレクトリです。wp-sitemap.xml
は、Wordpressバージョン5.5以降、Wordpressがすべての公開投稿と公開可能な投稿タイプおよび分類のXMLサイトマップファイルを生成します。
ポストエクスプロイト
wp-config.php
ファイルには、データベース名、データベースホスト、ユーザー名とパスワード、認証キーとソルト、データベーステーブルプレフィックスなど、WordPressがデータベースに接続するために必要な情報が含まれています。この設定ファイルは、トラブルシューティングに役立つDEBUGモードを有効にするためにも使用できます。
ユーザー権限
管理者
エディター: 自分と他の投稿を公開および管理
著者: 自分の投稿を公開および管理
寄稿者: 自分の投稿を書くことができるが、公開できない
購読者: 投稿をブラウズし、自分のプロフィールを編集
パッシブ列挙
WordPressバージョンを取得
/license.txt
または/readme.html
ファイルが見つかるか確認します。
ページのソースコード内(https://wordpress.org/support/article/pages/からの例):
grep
meta name
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-50bf07ade58e70bab23a0cca05204a1bd07b8b2d%252Fimage%2520%281111%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=38b0a908&sv=1)
CSSリンクファイル
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-82a942408ce69ff92471e41f0d334db258a87bb2%252Fimage%2520%28533%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=7d7323d9&sv=1)
JavaScriptファイル
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-cd734fb04458eb19f18f9a1df50c912d69743da1%252Fimage%2520%28524%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=8d0877b0&sv=1)
プラグインを取得する
テーマを取得する
一般的なバージョンの抽出
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-78abb7891633b1e8147b4e743e4f00af375d3cd6%252Fimage%2520%2848%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=44418454&sv=1)
Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築し、自動化します。 今すぐアクセスを取得:
アクティブな列挙
プラグインとテーマ
すべてのプラグインとテーマを見つけることはできないでしょう。すべてを発見するためには、プラグインとテーマのリストをアクティブにブルートフォースする必要があります(幸運なことに、このリストを含む自動化ツールがあります)。
ユーザー
IDブルート
ユーザーIDをブルートフォースすることで、WordPressサイトから有効なユーザーを取得します:
もしレスポンスが 200 または 30X であれば、それは id が 有効 であることを意味します。レスポンスが 400 の場合、id は 無効 です。
wp-json
ユーザーに関する情報を取得するために、次のようにクエリを試すこともできます:
別の /wp-json/
エンドポイントで、ユーザーに関する情報を明らかにすることができるのは次の通りです:
このエンドポイントは、投稿を行ったユーザーのみを公開することに注意してください。この機能が有効なユーザーに関する情報のみが提供されます。
また、/wp-json/wp/v2/pages はIPアドレスを漏洩する可能性があることに注意してください。
ログインユーザー名列挙
/wp-login.php
にログインすると、メッセージは指定されたユーザー名が存在するかどうかで異なります。
XML-RPC
xml-rpc.php
がアクティブな場合、資格情報のブルートフォース攻撃を実行するか、他のリソースに対してDoS攻撃を開始するために使用できます。(このプロセスを自動化するには、例えばこれを使用できます)。
アクティブかどうかを確認するには、/xmlrpc.php にアクセスして、このリクエストを送信してください:
チェック
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Fh3llwings.files.wordpress.com%2F2019%2F01%2Flist-of-functions.png%3Fw%3D656&width=768&dpr=4&quality=100&sign=788583b9&sv=1)
クレデンシャルブルートフォース
wp.getUserBlogs
、wp.getCategories
または metaWeblog.getUsersBlogs
は、クレデンシャルをブルートフォースするために使用できるいくつかのメソッドです。これらのいずれかを見つけることができれば、次のようなものを送信できます:
200コードのレスポンス内にあるメッセージ "不正なユーザー名またはパスワード" は、資格情報が無効な場合に表示されるべきです。
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-87fc7beeae571cb15445d9dcb13b6841933c0ce7%252Fimage%2520%28721%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=88612bdf&sv=1)
正しい資格情報を使用すると、ファイルをアップロードできます。レスポンスにはパスが表示されます (https://gist.github.com/georgestephanis/5681982)
また、system.multicall
を使用して、同じリクエストで複数の資格情報を試すことができるより速い方法があります:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-e0eebcc35136b55d285190584c890de34cb4ce31%252Fimage%2520%28628%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=1013fc1f&sv=1)
2FAのバイパス
この方法はプログラム向けであり、人間向けではなく、古いため、2FAをサポートしていません。したがって、有効な資格情報があるが、メインの入り口が2FAで保護されている場合、xmlrpc.phpを悪用してその資格情報で2FAをバイパスしてログインできる可能性があります。コンソールを通じてできるすべてのアクションを実行することはできませんが、Ippsecがhttps://www.youtube.com/watch?v=p8mIdm93mfw&t=1130sで説明しているように、RCEに到達できる可能性があります。
DDoSまたはポートスキャン
リスト内にメソッド_pingback.ping_が見つかれば、Wordpressに任意のホスト/ポートにリクエストを送信させることができます。 これを使用して、数千のWordpress サイトに1つの場所にアクセスさせることができ(その場所でDDoSが発生します)、またはWordpressに内部ネットワークをスキャンさせることができます(任意のポートを指定できます)。
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-aea4b23cdd94102884b2c4c8d3a1a3f95a65065f%252F1_JaUYIZF8ZjDGGB7ocsZC-g.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=59acf0ec&sv=1)
faultCodeの値が0(17)より大きい場合、ポートが開いていることを意味します。
このメソッドを悪用してDDoSを引き起こす方法を学ぶには、前のセクションでの**system.multicall
**の使用を見てください。
DDoS
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-f6954fe287e981515a934d460113bd273380fc47%252Fimage%2520%28110%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=a963706c&sv=1)
wp-cron.php DoS
このファイルは通常、Wordpressサイトのルートに存在します: /wp-cron.php
このファイルがアクセスされると、 "重い" MySQL クエリが実行されるため、攻撃者によってDoSを引き起こすために使用される可能性があります。
また、デフォルトでは、wp-cron.php
はすべてのページロード時に呼び出されます(クライアントが任意のWordpressページをリクエストするたびに)、高トラフィックのサイトでは問題を引き起こす可能性があります(DoS)。
Wp-Cronを無効にし、ホスト内で必要なアクションを定期的に実行する実際のcronjobを作成することをお勧めします(問題を引き起こさないように)。
/wp-json/oembed/1.0/proxy - SSRF
https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net にアクセスしてみてください。そうすると、Worpressサイトがあなたにリクエストを送信するかもしれません。
これが動作しないときのレスポンスです:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-4f397783c2051b0d7102974efba93862fb6e7bcf%252Fimage%2520%28365%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=83a76a4&sv=1)
SSRF
このツールは、methodName: pingback.pingと**/wp-json/oembed/1.0/proxy**のパスが存在するかどうかをチェックし、存在する場合はそれを悪用しようとします。
Automatic Tools
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-78abb7891633b1e8147b4e743e4f00af375d3cd6%252Fimage%2520%2848%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=44418454&sv=1)
Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築し、自動化します。 今すぐアクセスを取得:
ビットを上書きしてアクセスを取得
これは実際の攻撃以上に好奇心をそそるものです。CTF https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-manでは、任意のwordpressファイルの1ビットを反転させることができました。したがって、ファイル/var/www/html/wp-includes/user.php
の位置5389
を反転させてNOT(!
)操作をNOPにすることができました。
パネル RCE
使用しているテーマのphpを変更する(管理者の資格情報が必要)
外観 → テーマエディタ → 404テンプレート(右側)
phpシェルの内容に変更します:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-34081bf3a78aa2c1f724d60200556e1d57234101%252Fimage%2520%28384%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=9be43d2b&sv=1)
インターネットでその更新されたページにアクセスする方法を検索します。この場合、ここにアクセスする必要があります: http://10.11.1.234/wp-content/themes/twentytwelve/404.php
MSF
使用できます:
to get a session.
プラグイン RCE
PHP プラグイン
プラグインとして .php ファイルをアップロードすることが可能かもしれません。 例えば、次のようにして PHP バックドアを作成します:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-d16665578087eeeeabbc220c92bac5d7569bc787%252Fimage%2520%28183%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=b3cc4acb&sv=1)
次に、新しいプラグインを追加します:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-8668dea5b059b1fc486cb53cde1d8d65b849a027%252Fimage%2520%28722%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=e073d603&sv=1)
プラグインをアップロードし、「今すぐインストール」を押します:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-12c26ff94b8d74da8199129602062d6b390dfae5%252Fimage%2520%28249%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=506e1099&sv=1)
「続行」をクリックします:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-a18257e302f3bae245bef01690197799da17fdb7%252Fimage%2520%2870%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=8e83a4f1&sv=1)
おそらく、これでは何も起こらないように見えますが、メディアに移動すると、アップロードしたシェルが表示されます:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-5d706c741824ed569e0401c561099cb720ae1a49%252Fimage%2520%28462%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=9acfb845&sv=1)
アクセスすると、リバースシェルを実行するための URL が表示されます:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-56a77483c7b7c56d4c76d92502ca78fb0a77667d%252Fimage%2520%281006%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=5ab6192b&sv=1)
悪意のあるプラグインのアップロードと有効化
この方法は、脆弱性が知られている悪意のあるプラグインのインストールを含み、ウェブシェルを取得するために悪用される可能性があります。このプロセスは、WordPress ダッシュボードを通じて次のように実行されます:
プラグインの取得: プラグインは、こちらのような Exploit DB などのソースから取得されます。
プラグインのインストール:
WordPress ダッシュボードに移動し、
ダッシュボード > プラグイン > プラグインのアップロード
に進みます。ダウンロードしたプラグインの zip ファイルをアップロードします。
プラグインの有効化: プラグインが正常にインストールされたら、ダッシュボードを通じて有効化する必要があります。
悪用:
「reflex-gallery」プラグインがインストールされ、有効化されている場合、脆弱性が知られているため、悪用することができます。
Metasploit フレームワークは、この脆弱性に対するエクスプロイトを提供します。適切なモジュールを読み込み、特定のコマンドを実行することで、メーターpreter セッションを確立し、サイトへの不正アクセスを許可します。
これは、WordPress サイトを悪用するための多くの方法のうちの一つに過ぎないことに注意してください。
コンテンツには、プラグインのインストールと有効化の手順を示す視覚的な補助が含まれています。ただし、この方法で脆弱性を悪用することは、適切な承認なしに違法かつ非倫理的であることに注意が必要です。この情報は、責任を持って使用し、明示的な許可を得たペネトレーションテストなどの法的な文脈でのみ使用するべきです。
詳細な手順については、こちらを確認してください: https://www.hackingarticles.in/wordpress-reverse-shell/
XSS から RCE へ
権限昇格: WordPress にユーザーを作成します。
(RCE) カスタムプラグイン (バックドア) アップロード: カスタムプラグイン (バックドア) を WordPress にアップロードします。
(RCE) ビルトインプラグイン編集: WordPress のビルトインプラグインを編集します。
(RCE) ビルトインテーマ編集: WordPress のビルトインテーマを編集します。
(カスタム) カスタムエクスプロイト: サードパーティの WordPress プラグイン/テーマ用のカスタムエクスプロイト。
ポストエクスプロイト
ユーザー名とパスワードを抽出します:
管理者パスワードを変更する:
Wordpress Plugins Pentest
Attack Surface
Wordpressプラグインがどのように機能を公開するかを知ることは、その機能の脆弱性を見つけるための鍵です。プラグインがどのように機能を公開するかは、以下の箇条書きとこのブログ記事の脆弱なプラグインの例で確認できます。
wp_ajax
プラグインが機能をユーザーに公開する方法の一つは、AJAXハンドラーを介することです。これらには、ロジック、認可、または認証のバグが含まれている可能性があります。さらに、これらの関数は、Wordpressインスタンスに認証された任意のユーザーが持っている可能性のあるWordpress nonceの存在に基づいて、認証と認可の両方を行うことがよくあります(役割に関係なく)。
これらは、プラグイン内で機能を公開するために使用できる関数です:
nopriv
の使用により、エンドポイントはすべてのユーザー(認証されていないユーザーも含む)がアクセス可能になります。
さらに、関数がwp_verify_nonce
関数を使用してユーザーの認証を確認しているだけの場合、この関数は通常、ユーザーがログインしているかどうかを確認しているだけで、ユーザーの役割を確認しているわけではありません。したがって、権限の低いユーザーが権限の高いアクションにアクセスできる可能性があります。
REST API
register_rest_route
関数を使用して、WordPressから関数を公開することも可能です:
permission_callback
は、特定のユーザーがAPIメソッドを呼び出す権限があるかどうかを確認するためのコールバック関数です。
組み込みの__return_true
関数が使用されている場合、ユーザー権限のチェックは単にスキップされます。
phpファイルへの直接アクセス
もちろん、WordPressはPHPを使用しており、プラグイン内のファイルはウェブから直接アクセス可能です。したがって、プラグインがファイルにアクセスするだけでトリガーされる脆弱な機能を公開している場合、どのユーザーでも悪用可能です。
WordPressの保護
定期的な更新
WordPress、プラグイン、およびテーマが最新であることを確認してください。また、wp-config.phpで自動更新が有効になっていることを確認してください:
また、信頼できるWordPressプラグインとテーマのみをインストールしてください。
セキュリティプラグイン
その他の推奨事項
デフォルトのadminユーザーを削除する
強力なパスワードと2FAを使用する
定期的にユーザーの権限をレビューする
ブルートフォース攻撃を防ぐためにログイン試行回数を制限する
**
wp-admin.php
**ファイルの名前を変更し、内部または特定のIPアドレスからのみアクセスを許可する。
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-78abb7891633b1e8147b4e743e4f00af375d3cd6%252Fimage%2520%2848%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=44418454&sv=1)
Trickestを使用して、世界で最も高度なコミュニティツールによって駆動されるワークフローを簡単に構築し、自動化してください。 今すぐアクセスを取得:
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated