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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2023-45503 — CVE-2023-45503 参照 | Kitploit
ツール/GitHubGitHub/ally-petitt/cve-2023-45503
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育データベースセキュリティ
GitHubally-petitt/cve-2023-45503

CVE-2023-45503

CVE-2023-45503 参照

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2023-45503 脆弱性の詳細

概要

Macrob7 Macs Framework Content Management System(CMS)バージョン1.1.4f以前では、ユーザー入力の安全でない処理により、16件のSQLインジェクション脆弱性が発生します。任意のSQLクエリを実行できることで、ユーザーのパスワードハッシュを含むプライベートデータが漏えいしたり、他のユーザーの認証情報や権限レベルを変更されたりする可能性があります。影響には、権限昇格や潜在的なリモートコード実行(RCE)が含まれます。

影響を受ける各エンドポイント、脆弱なパラメータ、脆弱な関数をまとめたスプレッドシートは、こちらのリンクにあります。

CWE分類: CWE-89: SQLコマンドで使用される特殊要素の不適切な無効化('SQLインジェクション')

報告者: Ally Petitt

影響を受ける製品: Macrob7 Macs CMS

影響を受けるバージョン: 1.1.4f以前

技術的詳細

私が発見した16件の事例では、ユーザー入力が適切なサニタイズやパラメータ化なしに受け取られていました。たとえば、このCMSの「パスワードを忘れた場合」機能では、メールアドレスが要求されます。

Application/plugins/CMS/controllers/CMS.php:224

root@kitploit:~
    public function forgotPasswordProcess()
    {
      $this->loadModels();
      $emailAddress = Post::getByKey('emailAddress');

      $user = $this->usersModel->getUserByEmailAddress($emailAddress);

メールアドレスはその後、getUserByEmailAddress() メソッドに渡され、そのメソッドはメールアドレスを selectSingle() に渡します。このメソッドは、注入されたSQLクエリに対して適切に保護されていません。

Application/plugins/CMS/models/Users_Model.php:41

root@kitploit:~
    public function getUserByEmailAddress($emailAddress)
    {
       return $this->selectSingle( $this->getCMSTableNameUsers(), array('EmailAddress'=>$emailAddress));
    }

次に、selectSingle() は渡されたユーザー入力を指定して select() を呼び出します。

Application/core/DB.php:200

root@kitploit:~
    public function selectSingle($tableName, array $where = array(), array $fields = array('*'))
    {
      $return = $this->select($tableName, $where, $fields);

      $single = NULL;

      if( count($return) > 0 )
        $single = $return[0];

      return $single;
    }

脆弱な select() 関数は、渡されたパラメータを連結してSQLクエリを生成し、それを実行します。

Application/core/DB.php:186

root@kitploit:~
    public function select($tableName, array $where = array(), array $fields = array('*'))
    {      
      $fieldsString = $this->generatePair($fields, ',');
      $whereString = $this->generateKeyValuePair($where, '=', 'AND');

      $sql = 'SELECT '.$fieldsString.' FROM '.$tableName;

      if($whereString !='')
        $whereString = ' WHERE '.$whereString;

      $sql = $sql.' '.$whereString.';';     
      return $this->execute($sql)->fetchAll($this->returnType, $this->className);
    }

入力のサニタイズ、検証、パラメータ化が行われていないため、この関数はSQLインジェクション攻撃に対して脆弱なままです。

緩和策

残念ながら、このCMSはメンテナンスが行われていないため、パッチ適用済みのアップデートは提供されていません。個々のユーザーは、ユーザー入力をデータベースに渡す際に連結に依存するのではなく、パラメータ化されたSQLクエリを含むようにコードを変更することができます。プリペアドステートメントは、これを実現できる緩和策の一例です。

ツールをダウンロード