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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
wso2-rce-cve-2022-29464 — CVE-2022-29464のエクスプロイト。WSO2サーバーの未認証任意ファイルアップロード脆弱性で、悪意のあるJSPファイルアップロードを介したリモートコード実行を可能にします。 | Kitploit
ツール/GitHubGitHub/tufanturhan/wso2-rce-cve-2022-29464
ペイロード生成脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト
GitHubtufanturhan/wso2-rce-cve-2022-29464

wso2-rce-cve-2022-29464

CVE-2022-29464のエクスプロイト。WSO2サーバーの未認証任意ファイルアップロード脆弱性で、悪意のあるJSPファイルアップロードを介したリモートコード実行を可能にします。

リポジトリを見る

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
244年前未レビュー

CVE-2022-29464

WSO2 RCE(CVE-2022-29464)エクスプロイト。

詳細

CVE-2022-29464は、Orange Tsai氏によって発見されたWSO2の重大な脆弱性です。この脆弱性は、認証を必要としない無制限の任意ファイルアップロードであり、認証されていない攻撃者が悪意のあるJSPファイルをアップロードすることでWSO2サーバー上でRCEを獲得することを可能にします。

脆弱なアップロードルートは/fileuploadであり、これはFileUploadServletによって処理されます。indentity.xml設定ファイルで確認できるように、このルートは保護されていません。```xml

`FileUploadServlet` は、[`init`](https://github.com/wso2/carbon-kernel/blob/d47232dfb2b26c0ef18a74e2ef4aa503caa59697/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/transports/FileUploadServlet.java#L71) および一連のメソッド呼び出しを通じて、最終的に `carbon.xml` 設定ファイルから複数のアップロードファイル形式/アクションと、それぞれの形式を処理するオブジェクトを読み込みます。```java
    public void init(ServletConfig servletConfig) throws ServletException {
        this.servletConfig = servletConfig;
        try {
            fileUploadExecutorManager = new FileUploadExecutorManager(bundleContext, configContext, webContext);
            //Registering FileUploadExecutor Manager as an OSGi service
            bundleContext.registerService(FileUploadExecutorManager.class.getName(), fileUploadExecutorManager, null);
        } catch (CarbonException e) {
            log.error("Exception occurred while trying to initialize FileUploadServlet", e);
            throw new ServletException(e);
        }
    }

FileUploadExecutorManager クラスのコンストラクタは以下のとおりです。```java public FileUploadExecutorManager(BundleContext bundleContext, ConfigurationContext configCtx, String webContext) throws CarbonException { this.bundleContext = bundleContext; this.configContext = configCtx; this.webContext = webContext; this.loadExecutorMap(); }

コンストラクタは設定の読み込みが行われるプライベートメソッド [`loadExecutorMap()`](https://github.com/wso2/carbon-kernel/blob/d47232dfb2b26c0ef18a74e2ef4aa503caa59697/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/transports/fileupload/FileUploadExecutorManager.java#L131) を呼び出します:```java
    private void loadExecutorMap() throws CarbonException {
        [snipped]
                try {
            documentElement = XMLUtils.toOM(serverConfiguration.getDocumentElement());
        } catch (Exception e) {
            String msg = "Unable to read Server Configuration.";
            log.error(msg);
            throw new CarbonException(msg, e);
        }
        [snipped]
        OMElement fileUploadConfigElement =
                documentElement.getFirstChildWithName(
                        new QName(ServerConstants.CARBON_SERVER_XML_NAMESPACE, "FileUploadConfig"));
        for (Iterator iterator = fileUploadConfigElement.getChildElements(); iterator.hasNext();) {
            OMElement mapppingElement = (OMElement) iterator.next();
            if (mapppingElement.getLocalName().equalsIgnoreCase("Mapping")) {
                OMElement actionsElement =
                        mapppingElement.getFirstChildWithName(
                                new QName(ServerConstants.CARBON_SERVER_XML_NAMESPACE, "Actions"));
                String confPath = System.getProperty(CarbonBaseConstants.CARBON_CONFIG_DIR_PATH);
        [snipped]

ファイルアップロード形式の設定は、XML設定ファイル内のFileUploadConfig名前空間にあります。これはデフォルト設定です:```xml 100

    <Mapping>
        <Actions>
            <Action>keystore</Action>
            <Action>certificate</Action>
            <Action>*</Action>
        </Actions>
        <Class>org.wso2.carbon.ui.transports.fileupload.AnyFileUploadExecutor</Class>
    </Mapping>

    <Mapping>
        <Actions>
            <Action>jarZip</Action>
        </Actions>
        <Class>org.wso2.carbon.ui.transports.fileupload.JarZipUploadExecutor</Class>
    </Mapping>
    <Mapping>
        <Actions>
            <Action>dbs</Action>
        </Actions>
        <Class>org.wso2.carbon.ui.transports.fileupload.DBSFileUploadExecutor</Class>
    </Mapping>
    <Mapping>
        <Actions>
            <Action>tools</Action>
        </Actions>
        <Class>org.wso2.carbon.ui.transports.fileupload.ToolsFileUploadExecutor</Class>
    </Mapping>
    <Mapping>
        <Actions>
            <Action>toolsAny</Action>
        </Actions>
        <Class>org.wso2.carbon.ui.transports.fileupload.ToolsAnyFileUploadExecutor</Class>
    </Mapping>
</FileUploadConfig>
`loadExecutorMap()` メソッドは、設定ファイルから抽出された Action と Class を使用して、`<Action, Class>` の `HashMap` を作成して埋めます。これは、特定の形式/アクションを適切に処理するために使用するクラスを後で選択する際に使われます。

その後、`/fileupload` ルートが POST リクエストを受信すると、サーブレットの [`doPost()`](https://github.com/wso2/carbon-kernel/blob/d47232dfb2b26c0ef18a74e2ef4aa503caa59697/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/transports/FileUploadServlet.java#L53) メソッドが呼び出されます。このメソッドは、`init()` で初期化された `fileUploadExecutorManager` の `execute()` メソッドにリクエストオブジェクトとレスポンスオブジェクトを転送するだけです。```java
    protected void doPost(HttpServletRequest request,
                          HttpServletResponse response) throws ServletException, IOException {

        try {
            fileUploadExecutorManager.execute(request, response);
        } catch (Exception e) {
            String msg = "File upload failed ";
            log.error(msg, e);
            throw new ServletException(e);
        }
    }

execute() メソッドは、リクエストURLを fileupload/ 文字列の直後で分割します。つまり、リクエストURL内の /fileupload/ の後に続く部分を抽出し、それを actionString に割り当てます。```java public boolean execute(HttpServletRequest request, HttpServletResponse response) throws IOException {

    HttpSession session = request.getSession();
    String cookie = (String) session.getAttribute(ServerConstants.ADMIN_SERVICE_COOKIE);
    request.setAttribute(CarbonConstants.ADMIN_SERVICE_COOKIE, cookie);
    request.setAttribute(CarbonConstants.WEB_CONTEXT, webContext);
    request.setAttribute(CarbonConstants.SERVER_URL,
                         CarbonUIUtil.getServerURL(request.getSession().getServletContext(),
                                                   request.getSession()));


    String requestURI = request.getRequestURI();

    //TODO - fileupload is hardcoded
    int indexToSplit = requestURI.indexOf("fileupload/") + "fileupload/".length();
    String actionString = requestURI.substring(indexToSplit);
ツールをダウンロード