Gogs は、GitHub に似た (Git ベースの) オープン ソース ファイル/コード管理システムです。Gogs の目標は、セルフビルドを行うための最もシンプル、最速、簡単な方法を作成することです。サービス Git サーブ。 Go 言語で開発された Gogs は、スタンドアロン バイナリとして配布でき、Linux、Mac OS X、Windows、ARM プラットフォームなど、Go 言語でサポートされるすべてのプラットフォームをサポートします。
gogs は、構築が簡単なセルフサービス Git サービス プラットフォームで、インストールが簡単、クロスプラットフォーム、軽量、ユーザーが多いという特徴があります。 0.11.66 以前のバージョンでは、(go-macaron/session ライブラリ) はセッション ID を検証しません。攻撃者は悪意のあるセッション ID を使用して任意のファイルを読み取り、ファイルのコンテンツを制御してセッションのコンテンツを制御し、次にログインすることができます。どのアカウントでも。
影響を受けるバージョンは次のとおりです:
Gogs 0.11.66 および以前のバージョン
(1) ubuntu 仮想マシン docker を使用して、vulhub
で gogs 環境のクローンを作成します(2) 次のコマンドを実行して gogs を起動します: docker-compose up -d
(3) その後環境が開始されたら、http://192.168.49.103:3000/install にアクセスすると、インストール ページが表示されます。インストール中に、sqlite データベースを選択し、登録機能を有効にします。
(4) Gob シリアル化を使用してセッション ファイル データを生成します。
(5) 次に、一般ユーザーアカウントを登録し、プロジェクトを作成し、新しく生成したセッションファイルを「バージョンリリース」ページにアップロードします。
(6) この添付ファイルの URL から、このファイルのファイル名 ./attachments/2eb7f1a2-b5ec-482e-a297-15b625d24a10 を確認します。次に、Cookie を作成します: i_like_gogits=../attachments/2/e/2eb7f1a2-b5ec-482e-a297-15b625d24a10 にアクセスすると、id=1 でログインに成功したユーザー (つまり、root) が表示されます。管理者)
まず、ユーザーごとにウェアハウスを作成し、制御可能なコンテンツを含むファイルをアップロードします。リリース機能により、セッションが確立されます。ファイルは条件を提供します。
探索機能を通じて、多くのユーザーのウェアハウスを見つけることができます。ユーザーのユーザー情報ページに入ると、すべてのユーザーのウェアハウスを取得できます。ユーザーのセッションを構築するために必要な情報 (uid、ユーザー名)。
上記の file.go コードを通じて、セッション ファイルの内容が Gob エンコーディングであることがわかりました。 P Niu によって書き込まれた、生成されたセッションのペイロード。
ここから、セッションを生成し、すべてのユーザーが利用できるリリース アップロード機能を使用して、偽造したセッションをサーバーにアップロードします。
デフォルトで設定された gogs およびリリース ファイルのディレクトリ構造は、attachments/fid[0]/fid[1]/fid です。セッションが保存されるディレクトリ構造は、sessions/sid[0]/sid[1]/sid です。さらに、セッション フォルダーと添付ファイル フォルダーは同じデータ フォルダーに保存されます。
gogs はセッションをセグメント化し、それを読み取る前に最終的なパスに構築するためです。添付ファイルとセッションは同じフォルダー内にあります。セッションを先ほどのものに変更します。ファイルのパス、すなわち ../attachments/1/7/17f4120b-1a0d-416a-b0b0-def4342ded5b、セッションを読み取る関数により、パスが session/././../attachments/1 に解決されます。 /7/17f4120b -1a0d-416a-b0b0-def4342ded5b はアップロードしたファイルで、最終的に任意のユーザーのログインを完了します。
Gogs は、Github にアクセスして開発ブランチをダウンロードしてコンパイルすることができます。このブランチでは、この脆弱性は修正されているか、Gogs の最新バージョンにアップグレードできます。
以上がGogs の任意のユーザー ログインの脆弱性インスタンスの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。