问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
红队视角下AI大模型MCP技术的实现和应用
渗透测试
本文我将为你介绍`AI全自动操作`的流程,以及相关的技术原理和具体操作,同时我还将为你演示在漏洞利用环节的具体利用,希望你看文本文会对相关知识有更深的理解并且有所收获。
红队视角下AI大模型MCP技术的实现和应用 ===================== AI技术在目前可谓是如火如荼,随着AI技术的发展各行各业都开始大力发展AI,而我也早就有个想法,有没有什么办法能让AI全自动化的帮我们工作呢?如果可以那么AI如何代替我们进行各种各样的“操作呢”,之前我还冒出各种想法来实现,不过最近偶然看到已经存在了这种技术,不过对于这些技术的应用并没有一个很好的例子,而我又早就想能否让AI帮我们全自动工作,所以就有了本文 本文我将为你介绍`AI全自动操作`的流程,以及相关的技术原理和具体操作,同时我还将为你演示在漏洞利用环节的具体利用,希望你看文本文会对相关知识有更深的理解并且有所收获。 初识MCP ----- 像我之前提到的如果让AI帮我们全自动完成任务,那么让AI代替我们进行`操作`就变得尤为重要,传统的AI使用需要我们将文件传给它、问题抛给它,然后它给我们答案或意见,这时候就需要有个AI和我们日常工具系统间的桥梁,能够让AI通过这些桥梁驱动我们本地的各种各样的程序或系统来完成任务,而这种技术其实目前已经存在。 Model Context Protocol(MCP)全称`模型上下文协议`,大模型可以使用MCP进行和外部工具之间的互动(浏览器、文件系统、数据库、终端等),MCP服务作为中间层,代替人类访问操作外部工具,目前已经有了大量的成熟MCP工具,它们通常只针对特定领域的工作,例如操作文件系统的MCP工具、操作浏览器的MCP工具、操作命令行的MCP工具等 **传统AI工作流程:** 由人对外部工具的使用中发现并提出问题,把问题抛给AI,通过AI得出的答案去操作对应外部工具完成对应任务,解决对应问题。  **AI驱动MCP工作流程:** MCP客户端通过`stdio`(标准输入通道)按照特定的格式,调用MCP Server,MCP Server接收到请求后通过代码功能调用外部工具。  MCP遵循`C/S`架构,有以下核心概念: - MCP Hosts:发起请求的LLM应用程序,例如我们上图中的`Cursor` - MCP Client:在程序内部与MCP Server保持1:1连接的客户端 - MCP Server:MCP 服务,通常是Nodejs或python编写并启动的一个MCP服务 **整体工作的流程图如下所示(例如我们调用文件系统相关MCP)** 当你整理一个问题或想用调用MCP完成一个任务的时候,为了达到目的可能会分布的多次执行下面的流程。  具体体现如下:  - - - - - - 安装cline并使用MCP ------------- 这里有必要说明一下:其实一开始用支持`MCP`的客户端,我用的是`cursor`,但是后来就收费了,而且很贵20美刀,其实我也有大模型的API但是`cursor`自定义API目前很受限而且有错误,所以我就转去用`Cline`,其实用过Cursor后用Cline一开始有点不习惯,不过最近用了两天发现其实也没差太多,要说我觉得差异比较大的就是`Cursor`它比较适合懒人,一些MCP即便你没有设置配置文件,它有些操作也是可以运行,而`Cline`则完全依赖配置文件,所以你新导入一个MCP最好还是根据你自己的需求配置好在使用 前置条件:安装VS code和Nodejs环境 在VS Code的扩展商店搜索`cline`,然后下载汉化版的Cline插件  安装好后你将在左边发现这个扩展,选择它,你需要准备一个大模型相关的API,你可以在`API提供者`这个选项中选择不同的提供商,如果你没有过任何大模型的Key,我也推荐你直接使用`OpenRoute`因为它有免费的`DeepSeek-R1`,我们选择`OpenRouter`后选择`获取秘钥`,就会跳转到一个网页,你可以注册或用其它如谷歌邮箱等关联账号直接登录  登录后在API Keys里面新建一个API key,然后复制粘贴到上图中的`API秘钥处`然后点击`开始使用`即可  点击开始使用后,你将进入到和大模型的聊天界面,不过别急这时候我们还需要去选一个免费的大模型,我这里选的是`deepseek-r1`  终于我们就能使用MCP了吗,结束了吗?不还没开始呢,点开`MCP扩展`,你能发现有大量的MCP工具可以貌似还可以一键安装,虽然但是,我并不推荐你这么做,因为每个MCP组件不仅有一些说明更有一些初始配置,所以我更希望你通过配置文件去配置MCP服务。  首先根据下方我给你的网站搜索并检索一个你想安装的MCP服务(或者直接去github上搜索也可以,github上更全),例如我这里选择文件系统相关的MCP服务,找了一个热度比较高的 MCP服务大全:<https://smithery.ai/>  点进去后,直接点进它的github对应地址,跳转过去后你将能看到该MCP Server的完整描述,以及是否需要配置文件等一些说明  继续,最重要的是你要找到NPX相关的代码,这里是重点  然后我们点开始`cline`的配置文件,然后将内容如下图一样粘贴进去,由于我们在`Windows`中使用,上述代码我们需要改动一下,将上面的npx替换成cmd,然后下面`args`里面加上`/c`、`npx`这两个值(可以对照下图),然后最下方的目录你在github的该MCP Server的描述中可以知道它代表你允许它操作的系统目录,如下图我的配置表示它可以操作我D盘的所有文件  配置完点击`ctrl+s`保存后,你会发现你得MCP服务会增加一个并且成功启动  OK,配置完后你就可以去实验了,例如下方的图片,我让它读取了一个文件(需要注意的是MCP Client通常为了安全起见并不会给AI很大权限,当它执行一些权限的时候会询问你,你点击按钮同意后才会继续执行),当然如果你嫌每次都得`审批`太麻烦,你可以通过下方的`自动批准`来赋予MCP Client自动权限,这样它就可以自动运行了 虽然最前面的那句`调用MCP服务`可以不加,但是如果你想通过MCP完成某个任务,我建议你还是加上这样会更精准  配置自动批准  相信如果你这个时候去尝试了,你会发现一个问题,就是你配置了`自动批准`,但是AI调用MCP的时候还是都询问你,这是因为每个MCP服务还有相关函数接口的`自动批准设置`(顺便吐槽一下,相比于`Cursor`来讲,cline就胆小很多,如果你想达到放开权限要配置全才可以) 如下图,当你设置MCP的自动批准后,对应配置文件的内容也会自动更改(换言之你也可以直接通过配置文件达到自动批准的效果)  - - - - - - MCP在网络安全中的利用 ------------ 要说AI技术的发展最离不开的就是创新,所以AI的使用也一样,我很久之前就再考虑如何将AI技术落到网络安全中(最好是我们每个安全从业者都能看得见摸的着的,而不是只停留在PPT中),所以在了解了MCP之后,我就冒出了一个想法,同时也证明确实可行,故事如下: 我的想法是,可以不可以利用AI进行漏洞的全自动利用并且达到一些目的呢?于是我利用K8s的漏洞环境进行了尝试 我准备了一个ubuntu虚拟机,然后在上面搭建了一个单节点的K8s,然后我通过设置配置文件开启了8080端口,创造了`8080`端口未授权的环境,同时我也准备了一个Centos服务器,提供给了AI,让其作为攻击服务器。  在我过去的笔记中,有一个k8s的利用笔记,里面提到了几种k8s未授权访问的利用方法,在这些方法中`通过创建特权容器进行逃逸拿到主机shell`这个方法相对容易一些 这里为了照顾一些没了解过K8s逃逸的师傅,我这里简单提一下利用流程,首先通过K8s未授权漏洞操作K8s的Server端,让它创建一个特权容器,将主机的根目录映射到容器里面的`/mnt`目录,然后直接通过未授权继续执行命令进入到这个容器中,在这容器中切换到挂载的/mnt目录,然后通过`chroot`直接把当前bash的根目录改成/mnt,而/mnt因为之前是从主机根目录映射过来的,所以这样就逃逸成功了  我想要AI全自动帮我利用,给予相应的自定义权限是肯定的,然后教会它如何利用这个漏洞,这个容易就是把我这篇笔记`喂给它`即可,其次就是需要一个`MCP`客户端进行对shell的连接和执行相关命令,因为我们的想法是全自动利用,这里利用的时候要避免AI执行交互式的命令,所以这时候我需要一个趁手的MCP,然后我找来找去,找到一个合适的,通过下面的配置可以知道,这里设置了一个配置文件,配置文件中存在一个SSH的选项要打开,否则MCP想要建立ssh连接的时候会报错,这里我用`Cursor`的时候什么权限都没赋予,而且也没指定配置文件可以正确执行,但是没办法现在用的cline必须要`入乡随俗`  之后我们就可以了吗?当然不是在这其中会存在很多问题,比如我们先组织词汇让AI去执行,看看能不能成功 这是我给出的命令(这里我一开始使用的模型确实是之前提到的`OpenRouter`的免费deepseek不过不知为什么总中断,于是我就用我自己的deepseek API了,如果没有条件的师傅也尝试通过一些服务商白嫖`DeepSeek APi`例如硅基流动,[https://cloud.siliconflow.cn/i/d1eQ99TU这个注册登录余额+14,如果通过通过我的邀请码注册会再+14](https://cloud.siliconflow.cn/i/d1eQ99TU%E8%BF%99%E4%B8%AA%E6%B3%A8%E5%86%8C%E7%99%BB%E5%BD%95%E4%BD%99%E9%A2%9D+14%EF%BC%8C%E5%A6%82%E6%9E%9C%E9%80%9A%E8%BF%87%E9%80%9A%E8%BF%87%E6%88%91%E7%9A%84%E9%82%80%E8%AF%B7%E7%A0%81%E6%B3%A8%E5%86%8C%E4%BC%9A%E5%86%8D+14)) ```php @/k8s漏洞.md http://192.168.52.130:8080/ 这个地址存在k8s未授权访问漏洞,根据我给你的参考文件里面的创建特权容器逃逸拿主机shell的方法,进行利用 现在我给你准备了一个centos7服务器供你使用,账号密码为root/root,并且已经安装了kubectl 你现在需要通过MCP利用这个漏洞通过漏洞逃逸拿到shell,然后查看/tmp/flag.txt的值 ``` 换了大模型  执行的结果如下:  接着它自动执行了第二步,直接一条命令尝试`chroot`逃逸并查看文件,不过这里报错了,这里我之前也发现了,这个`MCP`执行命令的时候出现连接符`&&`就会报错  虽然报错,但是因为它是机制的大模型,所以它自动分析了错误,并且尝试改变别的解决方案,直接简单粗暴读取容器内我们挂载的目录`/mnt`下面的`/tmp/flag.txt`,最终读取成功了  其实如果有师傅按照我的演示去尝试大概可能出现两个错误,一个就是上文提到的`&&`,这个符号在我们利用的`server-win-cli`这个MCP中初始是被禁用的,而且SSH默认也是被禁用的,所以因为我们之前配置的时候手动指定了一个配置文件(默认的配置信息可在该MCP的github上找到)  我们可以尝试修改配置文件 - 允许ssh  - 可以使用符号`&&`,把配置文件中形如这样禁止特殊符号的字段全删除,让这个数组为空  改完之后别忘了把MCP重启  重新执行后,可以看到虽然能成功执行了,但是继续报错  这是因为这个命令就是有问题的 ```shell #你可以理解成,将bash执行完chroot /mnt,然后再执行cat /tmp/flag.txt,但是因为执行了chroot /mnt,所以进入交互了,所以一直不返回结果,AI报错超时 kubectl --insecure-skip-tls-verify -s http://192.168.52.130:8080 exec -it nginx-hack-cline -- /bin/sh -c 'chroot /mnt && cat /tmp/flag.txt' #正确命令如下,也就是没有那两个&&,这样相当于chroot /mnt后自动在新bash执行了cat /tmp/flag.txt kubectl --insecure-skip-tls-verify -s http://192.168.52.130:8080 exec -it nginx-hack-cline -- /bin/sh -c 'chroot /mnt cat /tmp/flag.txt' ``` 所以你要将这点告诉AI像这样  - - - - - - MCP执行原理 ------- 其实MCP整体的调用非常简单,如果你想知道内部具体是如何完成MCP调用的,那么我将通过一次让大模型调用`MCP`完成一个整体的流程来为你展示 我这里先用`cline`发送了如下指令 ```php centos7,账号密码root/root,192.168.52.142,用MCP连上去看下/tmp目录 ``` 这个时候看看我们的`cline`做了什么,它调用了一个请求,去带着`内容`请求大模型接口,这个内容远比我们在`cline`输入的要长的多的多的多  不仅如此,而且这个内容里面多次提到了MCP相关的内容  还告诉了大模型,要使用什么`MCP`服务,以及MCP如何调用,但是这一步的客户端还没有思考出具体命令  然后我们接下来看看大模型如何回复的,相信稍微对AI有些了解的师傅知道AI它并不是像人一样响应的是整体的逻辑思维,说白了是几个字几个字往外蹦的(如下图),所以这里我将响应拿到本地整理了一下  整理后内容如下,这里可以看出`大模型`已经提到下一步需要如何做,也就是调用`windows-cli`这行什么命令 ```php 好的,我现在需要处理用户的任务:通过MCP连接到centos7服务器,查看/tmp目录。首先,我需要分析用户提供的信息,包括IP地址、账号密码以及目标目录。接下来,我需要确定如何利用现有的MCP工具来完成这个任务。\n\n首先,用户提到使用MCP连接到centos7服务器,账号是root,密码是root,IP是192.168.52.142。我需要检查现有的MCP服务器配置,特别是windows-cli服务器,因为它包含了SSH相关的工具。\n\n查看环境详情,发现有一个windows-cli的MCP服务器,支持SSH连接。用户提供的SSH连接参数是centos7,但需要确认该服务器是否已经配置在cline_mcp_settings.json中。根据windows-cli的描述,其中一个SSH连接的例子是centos7,但现有的配置可能没有包含这个具体的连接信息。\n\n因此,我需要使用windows-cli服务器的create_ssh_connection工具来创建新的SSH连接。参数包括connectionId设置为centos7,以及对应的host、port、username和password。创建完成后,使用ssh_execute工具执行查看/tmp目录的命令,即'ls -l /tmp'。\n\n但需要确保在调用ssh_execute之前,SSH连接已经正确配置。可能需要先检查现有的SSH连接,或者直接创建新的连接。由于用户提供的连接信息是新的,所以应该使用create_ssh_connection来添加这个配置。\n\n接下来,步骤应该是:首先创建SSH连接,然后执行命令查看/tmp目录。每一步都需要通过MCP工具调用,并且需要确保参数正确。可能需要检查cline_mcp_settings.json文件中的现有配置,但根据用户提供的信息,直接创建新的连接更直接。\n\n最后,执行ls命令后,用户将获得/tmp目录的列表,完成任务。需要确保每个工具调用都符合参数要求,并且正确处理可能的错误情况,比如连接失败或权限问题。 ``` 这里cline发出了第二个请求,这里非常详细的展示了具体的`请求`  从这里开始其实`cline`就调用了本地的MCP Server了,这不过这步是创建ssh连接 跟步骤2几乎一样当它创建ssh连接成功后就会执行`ls`的命令了  然后MCP Client根据上面相关配置配置信息去调用MCP Server,我们也可以手动调用一下,可以看到也是正确的执行成功、  - - - - - - 本文演示了利用AI大模型和MCP技术进行一键利用的场景并且详细分析了MCP相关原理,无论看法怎样,是否成熟,新技术总是一个更新迭代的过程,而AI又是一个从目前看有长远发展,汇具想象力和创造力的产物,相信随着AI技术的更新迭代,AI终会渗透网络安全的日常工作中。 还是那句话哈,有问题的老哥欢迎关注`小惜渗透`公众号后台回复,欢迎师傅们关注交流哈,另外这个文章等审核完后过些天也会同步,所以有想转发到公众号的师傅们等我投完再转发哈 > 参考:[https://www.bilibili.com/video/BV1AnQNYxEsy/?spm\_id\_from=333.1007.top\_right\_bar\_window\_history.content.click&vd\_source=5605aeaee4236b806d678dd3a4718c1c](https://www.bilibili.com/video/BV1AnQNYxEsy/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=5605aeaee4236b806d678dd3a4718c1c)
发表于 2025-03-31 09:00:01
阅读 ( 572 )
分类:
其他
0 推荐
收藏
0 条评论
请先
登录
后评论
小惜渗透
8 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!