ホームページ  >  記事  >  運用・保守  >  Gogs の任意のユーザー ログインの脆弱性インスタンスの分析

Gogs の任意のユーザー ログインの脆弱性インスタンスの分析

王林
王林転載
2023-05-11 16:43:062396ブラウズ

1. 脆弱性の背景

Gogs は、GitHub に似た (Git ベースの) オープン ソース ファイル/コード管理システムです。Gogs の目標は、セルフビルドを行うための最もシンプル、最速、簡単な方法を作成することです。サービス Git サーブ。 Go 言語で開発された Gogs は、スタンドアロン バイナリとして配布でき、Linux、Mac OS X、Windows、ARM プラットフォームなど、Go 言語でサポートされるすべてのプラットフォームをサポートします。

2. 脆弱性の説明

gogs は、構築が簡単なセルフサービス Git サービス プラットフォームで、インストールが簡単、クロスプラットフォーム、軽量、ユーザーが多いという特徴があります。 0.11.66 以前のバージョンでは、(go-macaron/session ライブラリ) はセッション ID を検証しません。攻撃者は悪意のあるセッション ID を使用して任意のファイルを読み取り、ファイルのコンテンツを制御してセッションのコンテンツを制御し、次にログインすることができます。どのアカウントでも。

3. 影響を受けるバージョン

影響を受けるバージョンは次のとおりです:

Gogs 0.11.66 および以前のバージョン

4. 脆弱性の再発

(1) ubuntu 仮想マシン docker を使用して、vulhub

で gogs 環境のクローンを作成します(2) 次のコマンドを実行して gogs を起動します: docker-compose up -d

(3) その後環境が開始されたら、http://192.168.49.103:3000/install にアクセスすると、インストール ページが表示されます。インストール中に、sqlite データベースを選択し、登録機能を有効にします。

Gogs の任意のユーザー ログインの脆弱性インスタンスの分析

Gogs の任意のユーザー ログインの脆弱性インスタンスの分析

(4) Gob シリアル化を使用してセッション ファイル データを生成します。

(5) 次に、一般ユーザーアカウントを登録し、プロジェクトを作成し、新しく生成したセッションファイルを「バージョンリリース」ページにアップロードします。

Gogs の任意のユーザー ログインの脆弱性インスタンスの分析

(6) この添付ファイルの URL から、このファイルのファイル名 ./attachments/2eb7f1a2-b5ec-482e-a297-15b625d24a10 を確認します。次に、Cookie を作成します: i_like_gogits=../attachments/2/e/2eb7f1a2-b5ec-482e-a297-15b625d24a10 にアクセスすると、id=1 でログインに成功したユーザー (つまり、root) が表示されます。管理者)

Gogs の任意のユーザー ログインの脆弱性インスタンスの分析

5. 脆弱性の分析と悪用

まず、ユーザーごとにウェアハウスを作成し、制御可能なコンテンツを含むファイルをアップロードします。リリース機能により、セッションが確立されます。ファイルは条件を提供します。

探索機能を通じて、多くのユーザーのウェアハウスを見つけることができます。ユーザーのユーザー情報ページに入ると、すべてのユーザーのウェアハウスを取得できます。ユーザーのセッションを構築するために必要な情報 (uid、ユーザー名)。

Gogs の任意のユーザー ログインの脆弱性インスタンスの分析

上記の file.go コードを通じて、セッション ファイルの内容が Gob エンコーディングであることがわかりました。 P Niu によって書き込まれた、生成されたセッションのペイロード。

Gogs の任意のユーザー ログインの脆弱性インスタンスの分析

ここから、セッションを生成し、すべてのユーザーが利用できるリリース アップロード機能を使用して、偽造したセッションをサーバーにアップロードします。

デフォルトで設定された gogs およびリリース ファイルのディレクトリ構造は、attachments/fid[0]/fid[1]/fid です。セッションが保存されるディレクトリ構造は、sessions/sid[0]/sid[1]/sid です。さらに、セッション フォルダーと添付ファイル フォルダーは同じデータ フォルダーに保存されます。

Gogs の任意のユーザー ログインの脆弱性インスタンスの分析

gogs はセッションをセグメント化し、それを読み取る前に最終的なパスに構築するためです。添付ファイルとセッションは同じフォルダー内にあります。セッションを先ほどのものに変更します。ファイルのパス、すなわち ../attachments/1/7/17f4120b-1a0d-416a-b0b0-def4342ded5b、セッションを読み取る関数により、パスが session/././../attachments/1 に解決されます。 /7/17f4120b -1a0d-416a-b0b0-def4342ded5b はアップロードしたファイルで、最終的に任意のユーザーのログインを完了します。

6. 修復の提案

Gogs は、Github にアクセスして開発ブランチをダウンロードしてコンパイルすることができます。このブランチでは、この脆弱性は修正されているか、Gogs の最新バージョンにアップグレードできます。

以上がGogs の任意のユーザー ログインの脆弱性インスタンスの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。