強力な暗号化アルゴリズムによる SQL インジェクション事例

強力な暗号化アルゴリズムによる SQL インジェクション事例

暗号化には、情報の機密性などさまざまな利点があります。ただし、アプリケーションのセキュリティを確保するために暗号化に過度に依存するのは得策ではありません。今日は、ケーススタディを使用して、暗号化されたペイロードを通じて SQL インジェクションの脆弱性を識別して悪用する方法を理解します。

SQL インジェクションについては、知っている人や使用したことがある人は多いでしょう。知らない人や聞いたことがない人でも問題ありません。次に SQL インジェクションについて紹介します。

SQL インジェクションは、Web フォーム送信、入力ドメイン名、またはページ要求のクエリ文字列に SQL コマンドを挿入し、最終的にサーバーを騙して悪意のある SQL コマンドを実行させるプロセスです。

具体的には、既存のアプリケーションの機能を利用して、悪意のある SQL コマンドをバックエンド データベース エンジンに挿入し、実行します。設計者の意図どおりに SQL 文を実行するのではなく、Web フォームに悪意のある SQL 文を入力することで、セキュリティ上の脆弱性がある Web サイト上のデータベースを取得できます。

では、SQL インジェクションはいつ発生するのでしょうか?

ブラウザに URL www.sample.com を入力するとします。これは単なるページ要求であり、データベースへの動的な要求を行う必要がないため、SQL インジェクションは発生しません。www.sample.com?testid=23 を入力すると、URL に変数 testid が渡され、値 23 が提供されます。これはデータベースへの動的なクエリの要求であるため (?testid=23 はデータベース クエリ変数を表します)、URL に悪意のある SQL ステートメントを埋め込むことができます。

明確にするために述べておくと、この記事では暗号化についてではなく、SQL インジェクションを識別して悪用するために使用される暗号化されたペイロードを生成するアプリケーションの欠陥についてのみ説明します。

私たちが最近取り組んだ電子商取引アプリケーションでは、Web サイトへのリクエスト パラメータ値のほとんどが暗号化されていることがわかりました。リクエスト パラメータが暗号化されている場合、暗号化を解除できない限りアプリケーションをファジングすることは困難です。そのためには、キーと暗号化アルゴリズムを知る必要があります。

次の図は、私たちが見つけたサンプル Web サイトの詳細情報ページです。このページでは、id (orderid) パラメータを暗号化された形式で送信しています。

注: パラメータ値 (BDKfx3xNKsc=) は単純に base64 でエンコードされるのではなく、暗号化されます。 ID パラメータの暗号化された値は、base64 エンコード形式で表されます。

また、アプリケーションからログアウトし、同じユーザーとしてログインしてまったく同じページに移動すると、暗号化パラメータ (nPBri1km2ic=) の値が以下に示すように異なることにも気付きました。

上の図からわかるように、ログインが成功するたびにランダム キーが暗号化に使用され、またはセッション ID (Cookie の一部) が何らかの方法でキーの一部として使用されます。安全に見えますが、SQL インジェクションを試してみましょう。

まず、入力検証をテストするために、複数の場所に一重引用符 (') を挿入しようとしましたが、要求パラメータは暗号化された形式 (つまり、有効な暗号文) である必要があったため拒否されました。

ただし、ここではショッピング カートの共有機能を使用できます。これにより、ユーザーはショッピング カートのアイテムを他のユーザーと共有できます。ユーザーが共有用にショッピング カートを保存すると、ランダムなクエリ トークンを含むリンクが生成されます。このリンク(URL)にアクセスすることで、ユーザーはお互いのショッピングカートにアクセスできます。カートを保存する前に、ユーザーはカートに名前を付けるように求められます。

これはプレーンテキスト入力を受け入れる珍しい入力フィールドの 1 つなので、SQLi、XSS 用にエンコードします。さらに詳しく調べてみると、shared-cart 用に生成された URL 内のトークンは、実際にはショッピング カートに選択したカート名のパスワードであることがわかりました。

ただし、共有カート機能はいかなる攻撃に対しても脆弱ではありませんが、特定の入力 (プレーンテキスト) に対して暗号化されたペイロード (暗号テキスト) を生成するために使用できることに注意してください。ショッピング カート機能へのリンクを共有して暗号化された攻撃ペイロードを生成し、SQL インジェクションや認証バイパスなどの脆弱性がないかアプリケーションをチェックできるようになりました。 SQL インジェクションをテストするために、一重引用符 (') で囲まれた暗号化された値が生成されます。

暗号化されたペイロードは、暗号テキスト値のみを入力として受け入れるさまざまなアプリケーション パラメータを難読化するために使用されます。正しい場所にたどり着くまでにしばらく時間がかかりましたが、最終的に、orderitem ページの ID パラメータが SQL エラー メッセージを返し、脆弱性が確認されました。

このエラー メッセージは、アプリケーションが動的クエリを生成し、SQL インジェクション攻撃に対して脆弱である可能性があることを示しています。次に、データベースから情報を抽出します。UNION ベースの SQL クエリを使用して、データベースからデータを抽出します。union 演算子は、2 つ以上の SELECT ステートメントの結果を結合するために使用されます。

最初のタスクは、SQL クエリの一部として返す列の数を決定することでした。試行錯誤を繰り返し、クエリでいくつかの列 (30) を返しました。次に、データベースから情報を抽出します。以下に示すように、データベースのバージョン情報を抽出するための暗号化されたペイロードを作成します。

上記のペイロードの出力によって生成された暗号文は、ページ上の脆弱な ID パラメータとして入力されます。

その後、この脆弱性を利用してデータベース システムを構築し、最終的にシェルを取得しました。

要約する

上記の分析から、暗号化パラメータを使用してアプリケーションのセキュリティを実現することは、想像するほど安全ではないことがわかります。たとえば、強力な暗号化アルゴリズムで暗号化されたデータの場合、悪意のある攻撃者は暗号化されたペイロードを使用して攻撃することができます。 現在、暗号化は依然としてデータの改ざんや偽造から保護する強力なメカニズムであると考えられていますが、暗号化の実装が不十分で、暗号化の使用に対する明確なプライバシー保護が欠如しているため、依然として非常に危険なセキュリティ上の脆弱性を引き起こす可能性があります。

<<:  人工知能は人間の知能ではない。まずは人工的なもの、そして知的なもの

>>:  WOT2018 アルゴリズム モデル フォーラム: データが氾濫する中、アルゴリズムを使用してボトルネックを打破する方法

ブログ    
ブログ    
ブログ    

推薦する

All Research: AIガバナンス市場規模は2027年に13億4,520万米ドルに達する

9月28日、市場調査会社オールリサーチが発表したレポートでは、2027年までに人工知能ガバナンス市場...

...

ニューラル ネットワーク アルゴリズムを使用した C# での手書き数字認識

デモをダウンロード - 2.77 MB (元のアドレス)手書き文字認識.zipソースコードをダウンロ...

...

Google 検索は年間 890 回以上改善され、そのコア アルゴリズムは毎日変更されます。

8月21日、Googleの検索事業責任者アミット・シンガル氏はGoogle+に記事を掲載し、過去1...

自動運転はどこへ行ってしまったのか?

マスク氏が2021年末までに完全自動運転車を実現すると予言してから数ヶ月が経過したが、状況は2019...

人工知能はサイバー犯罪をより容易かつ頻繁にしている、と研究が指摘

8月10日、サイバーセキュリティ企業SlashNextが発見した一連の証拠から、違法目的で開発された...

ニューラルネットワークのトレーニングを4倍高速化! Google Brainチームが「データエコー」アルゴリズムを提案

[[271402]]ムーアの法則の終焉にあたり、GPU やその他のハードウェア アクセラレータによっ...

この日本のAIは話題になっています: スケッチを2Dの妻にリアルタイムで変換でき、512の調整可能なパラメータがあります

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

インターネット技術起業家は、2 つのセッションで提案を行う際にどのような点に重点を置いていますか?

[[258735]] 3月3日、毎年恒例の全国「両会」が正式に始まりました。「両会」シーズンが始ま...

51CTO副社長ヤン・ウェンフェイ氏:ChatGPTは非常に人気があり、将来的にはさらに強力なアプリケーションが登場するでしょう。

51CTO は 2005 年に設立され、テクノロジー学習とメディアを統合したプラットフォームです。...

ヘルスケアにおける人工知能の機会とリスク

人工知能 (AI) が医療分野において大きなチャンスと潜在的なリスクを抱えていることはよく知られてい...

「星から来た」ロボットは自閉症の子供たちを治せるのか?

[[236328]]私の友人のチャンさんは、8歳の自閉症の男の子の母親です。彼女の息子は2歳のとき...

文字列マッチングのためのボイヤー・ムーアアルゴリズム

前回の記事では、KMPアルゴリズムを紹介しました。ただし、これは最も効率的なアルゴリズムではなく、実...

...