Y-R0 / tryhackme_writeup

0 stars 0 forks source link

Web Application Security #2

Open Y-R0 opened 1 year ago

Y-R0 commented 1 year ago

Task1 Introduction

私たち一人ひとりは、コンピューターでさまざまなプログラムを使用しています。一般的に、プログラムは私たちのコンピュータ上で動作し、コンピュータの処理能力やストレージを使用します。しかも、プログラムを使うには、まずインストールする必要があります。もし、どんなプログラムでもインストールせずに使えるとしたらどうでしょう?

Webアプリケーションは、Firefox、Safari、Chromeといった最新の標準的なWebブラウザさえあれば、インストールせずに利用できる「プログラム」のようなものです。そのため、必要なプログラムをすべてインストールするのではなく、関連するページを閲覧するだけでよいのです。以下は、Webアプリケーションの例です:

ウェブメール(Tutanota、Protonmail、Outlook、Gmailなど
Microsoft Office 365(Word、Excel、PowerPoint)、Google Drive(Docs、Sheets、Slides)、Zoho Office(Writer、Sheet、Show)などのオンラインオフィススイートがあります。
Amazon.com、AliExpress、Etsyなどのオンラインショッピング

さらに何千もの例が、無数のサービスを提供しています。他の例としては、オンラインバンキング、送金、天気予報、ソーシャルメディアなどがあります。

Webアプリケーションの考え方は、リモートサーバー上で動作するプログラムであるということです。サーバーとは、クライアントに「サービスを提供する」ために継続的に稼働しているコンピュータシステムのことを指します。この場合、サーバーはウェブブラウザからアクセスできる特定のタイプのプログラムを実行することになります。

オンラインショッピングのアプリケーションを考えてみましょう。このウェブアプリケーションは、データベースサーバーから商品とその詳細に関するデータを読み取ります。データベースは、情報を整理して保存するために使用されます。例えば、商品、顧客、請求書に関する情報などです。データベースサーバーは、データベースの読み込み、検索、書き込みなど、多くの機能を担っています。オンラインショッピングのウェブアプリケーションは、例えば、アクセスするために複数のデータベースが必要になるかもしれません:

商品データベース: 商品データベース:商品名、画像、仕様、価格など、商品に関する詳細が格納されたデータベースです。
顧客データベース: 顧客データベース:氏名、住所、電子メール、電話番号など、顧客に関連するすべての詳細が含まれています。
売上データベース: このデータベースでは、各顧客が何を購入し、どのように支払ったかを確認することが期待されます。

どのオンラインショッピングシステムにも、すでに大量の情報が保存されていることがわかります。仮に攻撃者がウェブアプリケーションを悪用(ハッキング)して、顧客のデータベースを盗むことに成功したとします。その場合、企業や顧客にとって大きな損失となります。

下の画像は、オンラインショッピングサイトで商品を検索しているところです。最もシンプルなバージョンでは、検索は4つのステップで行われます:

① ユーザーは、検索フィールドに商品名や関連キーワードを入力します。ウェブブラウザは、検索キーワードをオンラインショッピングのウェブアプリケーションに送信します。 ② ウェブブラウザは、検索キーワードをオンラインショッピングのウェブアプリケーションに送ります。ウェブアプリケーションは、送信されたキーワードを商品データベースに照会(検索)します。 ③ 商品データベースは、提供されたキーワードに一致する検索結果をウェブアプリケーションに返します。 ④ ウェブアプリケーションは、結果をフレンドリーなウェブページとしてフォーマットし、ユーザーに返します。

ユーザーからすると、技術的なインフラがすべて隠されているエレガントなオンラインショップにしかアクセスできない。

多くの企業がバグバウンティプログラムを提供しています。バグバウンティプログラムとは、企業が自社のシステムのセキュリティ上の脆弱性(弱点)を発見した人に対して、報奨金を提供するものです。発見された脆弱性がバグバウンティーの範囲やルールの範囲内であることが主な条件となります。中でも、Google、Microsoft、Facebookは、バグバウンティプログラムを実施しています。バグを発見すると、発見した脆弱性(弱点)の深刻さに応じて、数百米ドルから数万米ドルの報酬を得ることができます。

問題

Webアプリケーションにアクセスするためには何が必要になるか →browser(Web browserはだめっぽい)

Y-R0 commented 1 year ago

Task2 Web Application Security Risks

例えば、あるオンラインショップで商品を購入したいとします。このウェブアプリケーションでできることを期待する機能があります。最も単純な例では、オンライン注文は次のようになります:

1 ウェブサイトにログインする 2 製品を検索する 3 商品をショッピングカートに入れる 4 配送先を指定する 5 お支払いに関する情報を提供する

ウェブアプリケーションに対する一般的な攻撃には、いくつかの主要なカテゴリーがあります。以下の手順と関連する攻撃について考えてみましょう。

・Web サイトでログインする: 攻撃者は、多くの単語を試すことによって、パスワードを発見しようとします。攻撃者は、自動化されたツールで長いパスワードのリストを使い、ログインページに対してテストを行うでしょう。 ・製品を検索する: 攻撃者は、検索語に特定の文字やコードを追加することで、システムへの侵入を試みることができます。攻撃者の目的は、ターゲットシステムが本来返すべきでないデータを返したり、実行すべきでないプログラムを実行したりすることです。 ・ 支払いの詳細を提供する: 攻撃者は、支払いの詳細が平文で送信されているか、弱い暗号化を使用しているかどうかを確認します。暗号化とは、秘密の鍵やパスワードを知らなければデータを読めないようにすることです。

すべてを網羅することはできませんが、OWASP Top Tenからいくつかの正式なカテゴリを紹介します。TryHackMeは、各脆弱性を説明しながら、これらのテクニックを紹介します。

「本人確認と認証の不具合」

識別とは、ユーザーを一意に識別する能力のことである。これに対して、認証とは、ユーザーが本人であることを証明する能力を指します。オンラインショップでは、ユーザーがシステムを使用する前に、ユーザーの身元を確認し、認証する必要があります。しかし、このステップにはさまざまな種類の弱点がありがちです。弱点の例としては、以下のようなものがあります:

攻撃者がブルートフォース(総当り)を使用することを許可する、つまり、有効なログイン認証情報を見つけるために、通常は自動化されたツールを使用して多くのパスワードを試す。
ユーザーが弱いパスワードを選択できるようにする。弱いパスワードは、通常、容易に推測することができます。
ユーザーのパスワードを平文で保存する。攻撃者がパスワードを含むファイルを読むことに成功した場合、保存されているパスワードを知ることができないようにします。

「壊れたアクセスコントロール」

アクセスコントロールとは、各ユーザーが自分の役割や業務に関連したファイル(文書、画像など)にしかアクセスできないようにすることです。例えば、マーケティング部門の人が財務部門の文書にアクセス(読み取り)できないようにします。アクセスコントロールに関連する脆弱性の例としては、以下のようなものがあります:

・最小特権の原則を適用せず、ユーザーに必要以上のアクセス権限を与えてしまう。例えば、オンラインの顧客が商品の価格を閲覧することはできても、変更することはできないはずです。 ・固有の識別子を使用して、他人のアカウントを閲覧したり変更したりできること。
・認証(ログイン)が必要なページを、認証されていないユーザーとして閲覧できること。例えば、ログインする前のウェブメールを閲覧させることはできない。

「インジェクション」

インジェクション攻撃とは、ユーザーが入力の一部として悪意のあるコードを挿入できるWebアプリケーションの脆弱性を指します。この脆弱性の原因のひとつは、ユーザーの入力の適切な検証とサニタイズが行われていないことです。

「暗号の不具合」

このカテゴリーは、暗号技術に関連する障害を指します。暗号技術は、データの暗号化と復号化のプロセスに焦点を当てています。暗号化は、平文をスクランブルして暗号文にします。暗号文は、復号するための秘密鍵を持っていない人にはちんぷんかんぷんであるはずです。言い換えれば、暗号化は、秘密の鍵を知らない限り、誰もデータを読むことができないことを保証します。復号化は、秘密鍵を使って暗号文を元の平文に戻すものです。暗号化の失敗例としては、以下のようなものがあります:

・機密データを平文で送信する。例えば、HTTPSではなく、HTTPを使用する。HTTPはウェブアクセスに使用されるプロトコルであり、HTTPSはHTTPのセキュアバージョンである。HTTPで送信したものはすべて他人に読まれますが、HTTPSは読まれません。 ・脆弱な暗号アルゴリズムに依存する。古くからある暗号アルゴリズムのひとつに、文字を1つずつずらすというものがあります。例えば、「TRY HACK ME」は「USZ IBDL NF」となります。この暗号アルゴリズムは、破るのは簡単です。 (シーザー暗号) ・暗号機能にデフォルトキーや弱いキーを使用する。1234を秘密鍵として使用した暗号を破るのは困難ではないでしょう。

これらのテクニックが最初は難解で洗練されたものに見えても心配しないでください。TryHackMeでは、Webアプリケーションに対するさまざまな攻撃を理解し、実験できるように、専用の詳細な部屋を用意しています。

問題

あなたは、ログインページが、ユーザーの速度を落としたりアカウントをロックしようとせずに、無制限にログイン試行を許可していることを発見しました。このセキュリティリスクはどのようなカテゴリーに分類されますか? →Identification and Authentication Failure

ユーザー名とパスワードが暗号化されずに平文で送信されていることに気づきました。このセキュリティリスクはどのようなカテゴリーに分類されますか? →Cryptographic Failures

Y-R0 commented 1 year ago

Task3 Practical Example of Web Application Security

このタスクでは、Insecure Direct Object References(IDOR)を使用している脆弱なウェブサイトを調査します。IDORは、「アクセス制御の破綻」のカテゴリーに属します。アクセス制御の破綻とは、攻撃者が意図しない情報へのアクセスやアクションを実行できることを意味します。ウェブサーバーがユーザーからオブジェクト(ファイル、データ、文書)を取得するための入力を受け、それらが連番になっているケースを考えてみましょう。例えば、ユーザーがIMG_1003.JPGという名前の写真にアクセスする権限を持っているとします。IMG_1002.JPG と IMG_1004.JPG があることは推測できるかもしれません。しかし、たとえ名前がわかったとしても、ウェブアプリケーションはその画像を提供してはいけ ません。一般に、IDOR 脆弱性は、その入力データに過度の信頼が置かれた場合に発生する可能性があります。言い換えれば、ウェブアプリケーションは、ユーザが要求されたオブジェクトにアクセスする権限を持っているかどうかを検証していません。

ユーザや製品に対して正しい URL を提供するだけでは、ユーザがその URL にアクセスできるようになるとは限りません。例えば、商品ページ https://store.tryhackme.thm/products/product?id=52 を考えてみましょう。このURLは、製品番号52に関する詳細を提供するものだと予想できます。データベースでは、アイテムには連番が割り当てられているはずです。攻撃者は、52番ではなく51番や53番といった他の番号を試してみるでしょう。

もっと重大な例を考えてみましょう。URL https://store.tryhackme.thm/customers/user?id=16 、id=16のユーザーを返すとします。ここでも、ユーザーは連続したID番号を持っていることが予想されます。攻撃者は他の番号を試し、他のユーザーアカウントにアクセスする可能性があります。例えば、攻撃者が007.txtを見た場合、攻撃者は001.txt、006.txt、008.txtなどの他の番号を試すかもしれません。同様に、あなたがID番号16で、ID番号17が他のユーザーだった場合、IDを17に変更することで、他のユーザーのものである機密データを見ることができます。同様に、IDを16に変更することで、あなたの所有する機密データを見ることができるのです。(もちろん、ここではIDORに対して脆弱なシステムであることを前提としています)。

「サイトを見る」をクリックし、実際に見てみましょう。在庫管理システムを示すページが表示されます。「計画出荷」タブをクリックすると、攻撃者が営業妨害計画の一環として、様々なものを混ぜていることがわかります。例えば、スクーターのタイヤとバイクのタイヤをバイクの組み立てに割り当てるなど、各組み立てラインに間違ったタイヤを送り込んでいることに注目してください!例えば、スクーターのタイヤとバイクのタイヤをバイクの組み立てに割り当てているのです!このまま放置すれば、すべてのタイヤが間違った組み立てに回されることになります。

私たちはシステムをハックして、攻撃者の手順を元に戻すことにします。「あなたのアクティビティ」では、あるユーザーのアクティビティを見ることができます。このウェブサイトにはIDORの脆弱性があると信じるに足る根拠がある。

サイト内表示

intructions この在庫管理システムは、タイヤに関するすべての出荷を管理しています。競合他社が、当社の物流を妨害するために悪意のある行為者のグループを送り込んできました。攻撃者は従業員の1人のアカウントを使い、予定されていた出荷を混同させた。間違った出荷が送られると、生産が遅れてしまいます。

Planned Shipmentsページ 在庫管理システム ビルド ・バイクの組み立て SKU0253 冬のスクーター用タイヤ SKU0522 二輪車用スポーツタイヤ ・スクーター組立 SKU0013 スポーツ用ロードバイクタイヤ SKU0524 二輪車用スポーツタイヤ ・二輪車組立 SKU0015 マウンテンバイク用タイヤ SKU0257 レーシングスクーター用タイヤ

問題

他のユーザーを確認し、どのユーザーアカウントが悪意のある変更に使われたかを発見し、それを元に戻す。変更を戻した後、受け取ったフラグは何ですか? →THM{IDOR_EXPLORED}

行ったこと ・URLにあるuser_id=11をuser_id=9にする (最近のアクションがたくさん) ・すべてrevert(戻す) ・FLAGが出てくる