【AI大模型】关于一次dify的渗透,看到就是赚到!!_dify漏洞
前言
ai目前最近很火,刚好工作中碰到了,就记录一下吧。
数据库权限入口
dify的账号密码是初始化登录的时候设置的,暂时不考虑账号的弱口令。但是dify的启动过程中,会开启psql和redis。默认密码是difyai123456.截图如下。可以尝试连接。本次的重点就是从这里开始的。
丢一个默认的配置吧。没仔细研究但是看了应该是默认的。
psql权限可以执行系统命令不再老生长谈。但是只是一个docker的权限,还能利用的操作空间不大。
获取后台权限
拿到了数据库,我们的目前是dify web的数据或者权限。所以还是要回归web来。审计dify的代码发现,获取了数据库,可以通过数据库新增一个账号来进入后台。源代码如下,密码的规则如下
那么可以去生成一个账号。细节不分析了 我这里直接贴代码
import secretsimport base64import hashlibimport binasciiimport uuid# 生成16字节的盐值def generate_salt(): return secrets.token_bytes(16)# 对密码进行哈希处理,返回加密后的密文def hash_password(password_str, salt_byte): dk = hashlib.pbkdf2_hmac(\"sha256\", password_str.encode(\"utf-8\"), salt_byte, 10000) return binascii.hexlify(dk)# 对结果进行base64编码def encode_base64(data): return base64.b64encode(data).decode()# 密码加密和存储的主过程def encrypt_password(new_password): # 生成盐值 salt = generate_salt() # 密码哈希加密 password_hashed = hash_password(new_password, salt) # 编码密码和盐值为base64格式 base64_password_hashed = encode_base64(password_hashed) base64_salt = encode_base64(salt) return base64_password_hashed, base64_salt# 模拟账户类class Account: def __init__(self, password, salt): self.password = password self.password_salt = salt# 测试用例,设置密码new_password = \"Dasiwoba1\" # 这里替换为你的密码# 获取加密后的密码和盐值encrypted_password, encrypted_salt = encrypt_password(new_password)# 创建账户对象,并存储加密信息account = Account(encrypted_password, encrypted_salt)# 输出加密结果print(uuid.uuid4())print(\"Encrypted Password (Base64):\", account.password)print(\"Salt (Base64):\", account.password_salt)
接下来就可以去利用账号登录后台了。
accounts表 邮箱自己定义
这里有两个坑
(1)密码必须要符合下面的规律,不然直接不通过。
(2)注册的用户没有workplace 导致无法登录,代码如下,同样的方法,插入一条数据就好了。
但是这里有join 所以需要插入三个表
当完成了这一步,就可以进入后台了。
任意文件读取
dify的后台我没有仔细看代码 简单github搜了一下,也没啥特别严重的漏洞。看数据库数据的时候,upload_files引起了我的注意。这里的key是个绝对路径
看代码+看功能点费了点时间,主要是uuid看着不舒服 直接说结论吧。
上传的时候,保存到本地文件,然后去读取本地文件的内容再重新保存到库里。我们现在有数据库的权限,就可以通过数据库里修改文件地址,然后去读取,达到任意文件读取的目的。这里做个演示。
知识库-》新建知识库,这里会上传文件保存到数据库里
然后在数据库upload_file中去修改文件为需要读取的文件
点击上一步再继续,或者直接重放包都行。效果如下,达到了任意文件读取的效果。
关于shell的话,环境目前碰到基本都是docker,信息太少了,而且只有一个文件读取。没有其他比较好的思路了。代码也没时间看完,不知道有没有其他的点。抛砖引玉吧。
由于图片需要高度打码+本地环境贴了一些 所以有些id可能对不上,大家见谅。
最后的最后
感谢你们的阅读和喜欢,作为一位在一线互联网行业奋斗多年的老兵,我深知在这个瞬息万变的技术领域中,持续学习和进步的重要性。
为了帮助更多热爱技术、渴望成长的朋友,我特别整理了一份涵盖大模型领域的宝贵资料集。
这些资料不仅是我多年积累的心血结晶,也是我在行业一线实战经验的总结。
这些学习资料不仅深入浅出,而且非常实用,让大家系统而高效地掌握AI大模型的各个知识点。如果你愿意花时间沉下心来学习,相信它们一定能为你提供实质性的帮助。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
大模型知识脑图
为了成为更好的 AI大模型 开发者,这里为大家提供了总的路线图。它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
经典书籍阅读
阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。
实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
面试资料
我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下
640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】