![画像](https://habrastorage.org/getpro/habr/post_images/630/8c1/efe/6308c1efee59f13efd5af293d897a29b.png)
Hacksplainingは、主要なWeb脆弱性に関するカタログ化された直感的なオンラインチュートリアルを提供します。 各脆弱性について、発生頻度、悪用の難しさ、およびその重大度の詳細な説明が提供されます。 各脆弱性には、詳細な説明、悪用ベクトル、脆弱なコード、および排除と保護のための推奨事項が伴います。 一例として、この記事では、SQLインジェクションを使用して仮想オンラインバンキングをハッキングするタスクの1つを分析しています。
考慮される脆弱性:
![](https://habrastorage.org/files/db7/e39/558/db7e39558bcd473d8060da4daa46f2a3.png)
SQLインジェクション
SQLコードの埋め込みは、クエリに任意のSQLコードを導入することに基づいて、データベースを操作するサイトやプログラムをハッキングする最も一般的な方法の1つです。クロスサイトスクリプティング(XSS)
XSSはWebシステムに対する「クロスサイトスクリプティング」タイプの攻撃で、Webシステムによって発行されたページ(このページが開かれるとユーザーのコンピューターで実行されます)に悪意のあるコードを導入し、このコードと攻撃者のWebサーバーとのやり取りを行います。 サイトのコンテキストでは、保存、反映、DOMベースの3種類の攻撃が考慮されます。コマンド実行
脆弱なWebアプリケーションを介してホストオペレーティングシステムで任意のコマンドを実行することを目標とする攻撃。クリックジャッキング
クライアント側の攻撃ベクトル:ユーザーが攻撃者の特別に細工されたページをクリックすると、実際には完全に異なるサイトへのリンクをクリックします。クロスサイトリクエストフォージェリ
「クロスサイトリクエストフォージェリ」は、HTTPプロトコルの欠点を利用するWebサイト訪問者に対する攻撃の一種です。 被害者が攻撃者によって作成されたサイトにアクセスすると、攻撃者に代わって、何らかの悪意のある操作(攻撃者のアカウントへの送金など)を実行する別のサーバー(支払いシステムサーバーなど)にリクエストが密かに送信されます。ディレクトリトラバーサル
ディレクトリトラバーサル(またはパストラバーサル)は、ユーザーが指定したファイル名に対して不十分なセキュリティチェックを使用するため、親ディレクトリへの移行を表す文字がAPIを介して渡されます。ファイルアップロードの脆弱性
ファイルのダウンロードは注意して処理する必要があります。これは、攻撃者が悪意のあるコードをアプリケーションに挿入する簡単な方法です。壊れたアクセス制御
サイトのすべてのリソースには、通常のユーザー向けではない場合でも、アクセス制御が実装されている必要があります。 「あいまいさによるセキュリティ」に頼ることはできません。オープンリダイレクト
ほとんどのWebアプリケーションはリダイレクト機能を使用します。 サイトがクエリ文字列に示されているすべてのURLをリダイレクトする場合、これは攻撃者がフィッシング攻撃ベクトルを生成するのに役立ちます。暗号化されていない通信
暗号化が不適切な場合、「Man-in-the-Middle」などの攻撃に対して脆弱になります。 あらゆる種類の機密情報を送信するときは、必ずHTTPSを使用してください。ユーザー列挙
攻撃者が認証機能を悪用してサイトにユーザー名が存在するかどうかを確認できる場合、他の脆弱性の使用が大幅に簡素化されます。情報漏洩
サービス情報を識別することは、攻撃者がサイトのテクノロジー、パスなどについて知るのに役立ちます。 攻撃者を有効にする可能性がありますパスワードの誤管理
安全なパスワード処理は、安全な認証システムに不可欠です。特権エスカレーション
特権の昇格-攻撃者はこの脆弱性を使用して、別のユーザーに提示する(通常はより高い権限を持つ)か、追加のアクセス許可を取得します。セッション固定
セッション識別子の安全でない処理は、ユーザーセッションのハイジャックにつながる可能性があります。弱いセッションID
推定セッションIDにより、サイトはセッションハイジャックに対して脆弱になります。XML爆弾
XMLドキュメントには、埋め込みマクロが含まれる場合があります。 これらのマクロを安全に処理できないと、特別に細工されたXMLファイルからの攻撃に対してサーバーが脆弱になる可能性があります。XML外部エンティティ
XMLファイルには、他のドキュメントへの埋め込みリンクが含まれる場合があります。 外部リンクの安全でない処理により、攻撃者はファイルシステムにアクセスできます。脆弱性ケースのSQLインジェクションの解析
最初のステップでは、オンラインバンキング認証フォームと、考えられる脆弱性の存在に関する通知が表示されます。
![](https://habrastorage.org/files/4d2/7b5/e6a/4d27b5e6ac4546bd9001fa8707e95899.png)
便宜上、リクエストログはページの下部にあります。
![](https://habrastorage.org/files/842/da5/594/842da559470240d193245c49070ff26b.png)
次に、任意の正当なユーザー名とパスワードを入力するよう求められます。
![](https://habrastorage.org/files/6d7/70f/81a/6d770f81a19845a5ae20bec1e50b7631.png)
データが正しくありません。認証システムをバイパスしてください:
![](https://habrastorage.org/files/7f8/b5b/d0e/7f8b5bd0e7864b599dfecd941cb00aca.png)
エラーメッセージ(およびログの詳細情報)を取得します。
![](https://habrastorage.org/files/f20/224/f53/f20224f53bb54be480d9987869b76686.png)
表示される[コード]タブで、エラーの性質を明らかにします。
![](https://habrastorage.org/files/a81/99f/b23/a8199fb2347448539241ad386dfbb902.png)
リクエストの完了を確認しました。次に、この脆弱性を使用してオンラインバンキング認証をバイパスしてみましょう。
![](https://habrastorage.org/files/3e5/660/ac1/3e5660ac15a5460d8381eda69e7bda9f.png)
ご覧のとおり、条件「1 = 1」を追加したため、テスト条件は「ユーザー名が「ユーザー」または1 = 1の場合」になりますが、1は常に1です。より単純な言語で記述する場合、ユーザーユーザーとしてログインしようとします。条件1 = 1に等しいパスワードを使用します。
![](https://habrastorage.org/files/2a6/5e4/01b/2a65e401b62848fe9979695c9a899ea0.png)
条件が満たされます-1 = 1、パスワードフィールドは破棄されます!
![](https://habrastorage.org/files/a65/12c/d40/a6512cd40051499690af7871b6f77d80.png)
このようにして、オンラインバンキングに浸透しました。 次に、注入保護方法の説明を提供します:コード例、リスクの説明など。
オプショナル
ベクトルの操作への追加として、SQLインジェクションを読むことをお勧めします。次の資料を使用してください。
おわりに
このオンラインチュートリアルは十分に詳細に作成されており、まずは開発者による「コードの書き方」として視覚的補助として研究に推奨されています。情報セキュリティの専門家にとっては、これは優れたチートシートであり、Webの脆弱性を視覚化するためのツールであり、攻撃ベクトルの詳細な説明と段階的なデモンストレーションです。
www.hacksplaining.com