gitbucket1.8バージョンreadmeについてmdのXSSホール
最近,gitbucketをプロジェクト開発におけるコード管理ツールとして利用している.gitbucket:gitbucketはgithubインタフェースを模したコード管理ツールです.scala言語で開発され、jgitオープンソースツールを使用してgitコマンドを管理および操作し、軽量レベルのメモリデータベースh2データベース(jarパッケージ1つ)を内蔵しています.このプロジェクトの更新は比較的速く、現在の最近のバージョンは1.11に達しています.
1.8バージョンを使用すると、XSSの脆弱性に遭遇しました.プロジェクトを作成し(あまり正式にする必要はありません)、READMEを作成します.mdファイル.README.mdファイルにxss攻撃文:">alert(1) <"を追加し、アイテムをアップロードします.ユーザーがアップロードしたアイテムにアクセスすると、ブラウザはjavascriptコマンド:alert(1)を解析します.
XSSに攻撃されないようにgitbucketでREADMEをmdファイルの内容をユーザのブラウザに渡す前にREADME.mdの内容をhtmlの内容に変換し、例えば「」を「"」に変換する.など.
READMEを読み出す.mdのプログラムファイルファイルはapp/RepositoryViewerController.fileList.FileListメソッドにはREADMEを取得する方法がある.mdファイルの内容の方法:
アップエスケープメソッドを追加するには、次の手順に従います.
以前のプロジェクト、READMEに再アクセスします.mdは「>alert(1) <」を表示し、javascriptは実行されません.
安全を大切にし、XSSから離れる
1.8バージョンを使用すると、XSSの脆弱性に遭遇しました.プロジェクトを作成し(あまり正式にする必要はありません)、READMEを作成します.mdファイル.README.mdファイルにxss攻撃文:">
XSSに攻撃されないようにgitbucketでREADMEをmdファイルの内容をユーザのブラウザに渡す前にREADME.mdの内容をhtmlの内容に変換し、例えば「」を「"」に変換する.など.
READMEを読み出す.mdのプログラムファイルファイルはapp/RepositoryViewerController.fileList.FileListメソッドにはREADMEを取得する方法がある.mdファイルの内容の方法:
StringUtil.convertFromByteArray(JGitUtil.getContent(Git.open(getRepositoryDir(repository.owner, repository.name)), file.id, true).get)
アップエスケープメソッドを追加するには、次の手順に従います.
StringUtil.convertFromByteArray(JGitUtil.getContent(Git.open(getRepositoryDir(repository.owner, repository.name)), file.id, true).get)
.replace("&", "&").replace(">", ">").replace("<", "<").replace("\"", """)
以前のプロジェクト、READMEに再アクセスします.mdは「>
安全を大切にし、XSSから離れる