声明
该系列共三篇,30个专题(截止2024.8.14),其中有26个专题的全部内容已于2023年8月在Freebuf发布,至此,这26个专题的安全客版本及相关专题的更新内容已全部重新编写并发布,旧版本文章可以不用看了,该专题为Freebuf首发。
本系列介绍
PortSwigger是信息安全从业者必备工具burpsuite的发行商,作为网络空间安全的领导者,他们为信息安全初学者提供了一个在线的网络安全学院(也称练兵场),在讲解相关漏洞的同时还配套了相关的在线靶场供初学者练习,本系列旨在以梨子这个初学者视角出发对学习该学院内容及靶场练习进行全程记录并为其他初学者提供学习参考,希望能对初学者们有所帮助。
梨子有话说
梨子也算是Web安全初学者,所以本系列文章中难免出现各种各样的低级错误,还请各位见谅,梨子创作本系列文章的初衷是觉得现在大部分的材料对漏洞原理的讲解都是模棱两可的,很多初学者看了很久依然是一知半解的,故希望本系列能够帮助初学者快速地掌握漏洞原理。
服务器端漏洞篇介绍
burp官方说他们建议初学者先看服务器漏洞篇,因为初学者只需要了解服务器端发生了什么就可以了
服务器端漏洞篇 - Web大语言模型攻击
自从ChatGPT推出以来,全世界都在努力将大语言模型LLM(全称Large Language Models)集成在现有的应用中,这就导致这些应用会面临到一些新的安全挑战,比如利用这些模型访问数据、API或攻击者无法直接访问数据。这类攻击可能导致:
检索LLM有权访问的数据。此类数据的常见来源包括LLM的提示、训练集以及提供给模型的API。
通过API触发有害操作。例如攻击者可以使用LLM对其有权访问的API执行SQL注入攻击。
触发对查询LLM的其他用户和系统的攻击。
从上面来看,Web大语言模型攻击有点类似于SSRF这类的攻击。接下来我们先了解一些关于Web大语言模型攻击的基础知识。
什么是大语言模型?
大型语言模型(LLM)是一种人工智能算法,可以处理用户输入并通过预测单词序列来创建合理的响应。他们接受了巨大的半公开数据集的训练,使用机器学习来分析语言的各个组成部分如何组合在一起。
通常会提供一个聊天界面来接受用户输入,称为提示词(prompt)。允许的输入部分由输入验证规则控制。
大语言模型有非常广泛的应用,例如:
客户服务,例如虚拟助理。
翻译。
搜索引擎优化改进。
分析用户生成的内容,例如跟踪页面评论的语气。
LLM攻击和提示词注入
我们与LLM交互都是依赖于提示词,提示词注入和其他类型注入攻击异曲同工,都是利用精心构造的输入诱导后端应用,这里的后端应用就是指LLM模型错误处理攻击者的输入并且给出符合攻击者预期的输出,例如对敏感API进行错误调用或返回不符合其准则的内容。
利用LLM API、函数和插件
LLM通常由专门的第三方提供商托管。网站可以通过描述供LLM使用的本地API来让第三方LLM访问其特定功能。例如,客户支持LLM可能有权访问管理用户、订单和库存的API。
LLM API是怎么运行的?
将LLM与API集成的工作流程取决于API本身的结构。当调用外部API时,某些LLM可能要求客户端调用单独的函数端点(实际上是私有API),以便生成可以发送到这些API的有效请求。其工作流程可能像这样:
这个工作流程可能会产生安全隐患,因为LLM代表用户调用外部API,但用户可能不知道这些API正在被调用。理想情况下,在LLM调用外部API之前,应向用户提供确认步骤。
映射LLM API攻击面
术语"过度代理"是指LLM有权访问可访问敏感信息的API,并可能被说服不安全地使用这些API。这使得攻击者能够将LLM诱导向其预期范围并通过其API发起攻击。
使用LLM攻击API和插件的第一阶段是确定LLM可以访问哪些API和插件。一种方法是简单地询问LLM可以访问哪些API。然后,我们可以询问有关任何感兴趣的API的更多详细信息。
如果LLM不按我们说的做,我们可以提供误导性背景并重新提出问题。例如,我们可以声称是LLM的开发人员,因此应该拥有更高级别的权限。
配套靶场:利用有过度自主性的LLM API
这道靶场的目标是利用LLM删除用户carlos,首先我们先问它有哪些API可以调用
嘻嘻嘻,大家别笑话梨子的英文啊,差不多它能理解梨子的意思就好,我们看到一共有三个API:
password_reset:向指定用户发送重置密码邮件
debug_sql:可以执行SQL语句
product_info:可以查询商品信息
因为我们的目标是删除用户,所以上面的API有可能做到这个的就只有debug_sql
这个API了,然后我们问它这个函数怎么调用
上面说我们只需要提供一个语句就行,我们先查一下用户
这里的效果仅是靶场效果,梨子不相信有LLM会这么傻把密码都读出来了,从上面来看说明它可以无限制地执行我们指定的命令,然后我们就可以执行删除carlos的语句了
删除成功!!!这个专题还是挺好玩的
LLM API中的组合拳漏洞
即使LLM只能访问一些看起来无害的API,但是我们仍然可以使用这些API来寻找其他漏洞。例如,我们可以使用LLM对以文件名作为输入的API发动目录遍历攻击。
一旦映射了LLM的API攻击面,下一步应该是使用它向所有已识别的API发动常规Web漏洞。