Nosec资讯 2024年07月05日
ChatGPT写POC,拿下漏洞!
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文探讨了利用ChatGPT辅助编写漏洞POC的可行性,并通过实际案例演示了半自动编写和全自动编写两种方法,以及利用ChatGPT进行代码转换和模型训练的步骤。此外,文章还分析了ChatGPT的自我学习能力和ChatGPT3与4在POC编写方面的区别,并最后总结了ChatGPT在漏洞检测方面的应用潜力和未来发展方向。

🤔 利用ChatGPT辅助编写漏洞POC主要有两种方法:半自动编写和全自动编写。半自动编写利用ChatGPT进行语言格式转换,但需要人工排错完善。全自动编写通过提供代码模板和漏洞详细信息,让ChatGPT自动生成POC,但对于EXP来说还需要进一步训练。

🤖 文章以CVE-2010-2861漏洞为例,展示了利用ChatGPT将Python格式的EXP转换为Go语言格式的代码,并进一步将其转换为Goby格式的POC和EXP。过程中涉及代码转换、排错、参数定义等步骤,展现了ChatGPT在代码转换和漏洞检测方面的能力。

🧠 文章还探讨了ChatGPT的自我学习能力,通过不同会话和不同账户的训练实验,证明了ChatGPT不会进行跨会话和跨账号的自我学习,训练好的模型数据掌握在OpenAI手中,不会泄露给其他用户。

🚀 文章最后总结了ChatGPT在漏洞检测方面的应用潜力,认为它可以辅助提高工作效率,并展望了未来发展方向,例如利用ChatGPT编写更复杂的信息描述规范的POC和EXP,以及将其工程化批量完成内容,探索更多应用场景和潜力。

作者:LPuff@白帽汇安全研究院

前言

ChatGPT(Chat Generative Pre-trained Transformer)是当今备受瞩目的智能AI聊天机器人之一。它不仅能够实现基本的语言交流,还具备许多强大的功能,例如文章撰写、代码脚本编写、翻译等等。那么我们是否可以利用ChatGpt去辅助我们完成一些工作呢?比如当一个产品存在安全风险需要漏洞检测时,我们就需要编写对应的POC来实现。目前进行多次验证,我们初步证实了这个实验的可行性,可以训练ChatGPT去编写简单的POC,但是它对细节的把控并不够完善,例如对输出内容进行匹配的正则表达式的编写和一些复杂逻辑的处理等存在一定的误差,还需要人工干预修改处理。另外我们利用比对的方式验证了ChatGPT的一些安全猜想和训练模型的准确性。如下是将其与Goby实战化网络攻防工具所结合进行利用检测的实现效果:


训练过程

我们利用ChatGPT与Goby结合编写POC与EXP有两种方法:半自动编写和全自动编写(过程中使用ChatGPT-Plus账号)。

半自动编写利用ChatGPT进行语言格式转换,转换后生成的代码可能存在细节问题,需要进一步排错完善,最后修改对应的语句和函数内容完成POC与EXP的编写。

全自动编写通过将使用到的代码模板、漏洞详细信息给到ChatGPT,让它自动生成对应模板的POC,在给出详细信息时需要注意信息的完整与准确。目前可以实现自动编写简单的POC,对于EXP来说还需要进一步训练ChatGPT对Goby内置函数的使用等。

CVE-2010-2861

Adobe ColdFusion是一款高效的网络应用服务器开发环境。Adobe ColdFusion 9.0.1及之前版本的管理控制台中存在多个目录遍历漏洞。远程攻击者可借助向/CFIDE/administrator/enter.cfm和/CFIDE/administrator/archives/index.cfm等发送的locale参数读取任意文件。

半自动编写

首先尝试让ChatGPT将CVE-2010-2861目录遍历漏洞的Python格式EXP转换为Go语言格式的代码,这样可以利用ChatGPT代替人工完成代码解释及代码转换的过程。

我们在漏洞公开平台中选取该漏洞的EXP代码:


在使用ChatGPT将相应漏洞的EXP代码转换之前,先演示一下原始Python代码的执行效果,具体如下:


开始转化格式:


此外,他还提供了该程序的使用方法。然而,每次ChatGPT的回答都可能不完全相同。此前的回答中并没有详细说明函数的具体用法,但在另一个回答中给出了以下解释:(如果需要,可在问题中增加“并介绍函数的具体用法”)


最后进行代码调试后,发现无法立即使用,未能成功读取所需的文件内容:


那么就需要开始排错,以下是排错过程:

检查正则匹配后字符串是否为空:

检查返回包内容是否正常,有无所需内容,如下返回数据包显示正常:


判断正则表达式有问题,无法匹配到对应内容:

通过排查发现正则表达式中没有正确匹配,因此无法将文件的内容正确取出,做出以下修改,修改后内容具体如下:


修改前:


最终执行结果,完成Python—Go的转化:


前面我们已经成功将Python格式的EXP转换为了Go语言格式,现在尝试将其转换为Goby格式的POC和EXP。

由于Goby使用的是基于Go语言开发的自研漏洞框架,为方便用户使用,其中已有很多内置函数可供用户使用,所以只需要利用上述部分代码即可完成POC和EXP,以下是EXP修改的大致说明与详细内容:



修改import内容:


由于生成的EXP在命令行使用时需要手动输入参数:


那么在POC转化时,需要重新定义常量,并利用Goby中的httpclient.FixUrl.IP与httpclient.FixUrl.Port获取测试的IP和端口号,确定测试的文件路径path:


接着在POC中添加条件判断语句,判断漏洞存在的特征,并返回true(有漏洞):

最后删除多余的输出打印代码即可完成POC转化,如:

EXP转化时,需重新定义变量,利用Goby中的expResult.HostInfo.IP与expResult.HostInfo.Port获取测试的IP和端口号,利用ss.Params["filePath"].(string)获取用户输入的EXP参数——测试文件路径filePath:


接着在EXP代码中添加条件判断语句,判断EXP是否执行成功,并输出EXP执行结果,完成EXP转化:


全自动编写

在使用ChatGPT与人工相结合编写后,我们进一步尝试使用它来撰写Goby格式的POC。

首先将Goby格式的模板给出:


接着将漏洞的编号、产品、类型、Url、漏洞文件、参数和判断成功条件给出,说明相关的字段格式,我们最终得到了下面的代码,它已经可以通过Goby前端的编译,并可以成功地生成简单的POC:


模型训练初步完成,继续使用第二个案例验证模型完善程度:

发现Name字段还是存在格式错误,再次训练修改(若验证中Name字段等输出正确,那么即可跳过此纠错步骤):


最后使用第三个案例进行验证最终的训练结果,训练成功:


将代码放入Goby中,并填入缺少的漏洞描述信息(后续还可继续深入训练),运行效果如下:


自我学习?

当我们在利用ChatGPT去帮助编写一个新鲜出炉的0day漏洞或者其他机密漏洞的检测POC这个过程当中,是否会导致程序注入或信息泄露等问题呢?也就是说当模型训练完成后,其他用户提问相关的内容,ChatGPT是否会直接将训练好的模型或数据直接输出呢?

为了验证ChatGPT自我学习的猜想是否存在,分别通过“不同会话”与“不同账户”来进行训练。经过以下实践,得到的结论是ChatGPT并不会进行跨会话与跨账号的自我学习,训练好的模型与数据是掌握在OpenAI手中的,其他用户并不会得到相关的模型,所以目前还不存在相关信息数据泄露的安全风险,但日后的情况还需要根据OpenAI采取的决策做判断。

不同会话比对

将使用的模板(此处省略示意图)和漏洞信息给出,可以看到POC中的Name和Desc ription字段并没有按照上一个会话中的训练模式来进行填充,因此在不同会话当中ChatGPT并不会自我学习,每个会话间的训练模型独立:


不同账号比对

同样将模板(此处省略示意图)和漏洞信息给出,也可以看到POC中的相关字段并没有按照之前的训练模型来进行填充,由此可得知ChatGPT并不会跨账号自我学习:


ChatGPT3与4

ChatGPT4已经更新上线,那么去使用ChatGPT4进行同样的全自动编写训练和ChatGPT3训练出来的模型有什么区别呢?答案是ChatGPT4要比3更“聪明灵动”一些,模型的生成更为准确。

我们将所需要的各种信息给出,经过一次训练后(此处省略部分示意图),达到了下图中正确的效果:


另外我们进行了10轮的训练,针对模型中的Name字段进行比对,来判断ChatGPT3与4的POC编写准确率,发现均会出现概率性的出错情况,其中3的模型输出准确率要比4低一些,在一定情况下仍需进行纠错训练,如下表格所示:


总结

总的来说,ChatGPT确实能够帮助完成一部分的工作,对于日常的工作例如编写漏洞POC,可以利用它的代码转换能力加速编写;也可以将漏洞的详细信息给出,利用ChatGPT训练合适的模型,直接输出一份简单的漏洞验证POC代码,更加便捷快速。但它所提供的回答内容并不一定能直接复制使用,还需要进行一些人工的修正来完善。另外目前我们也可以相对放心去使用ChatGPT,它并不会将单个用户的训练模型数据输出给其他用户来使用(不混淆会话可能是担心用户数据互相污染),但日后还需要针对OpenAI总部所作出的决策来进一步判断。因此ChatGPT的合理使用,可以辅助提高一定的工作效率,若日后可以再延续进一步的训练开发,比如是否可以利用其编写信息描述规范且较为复杂的POC甚至是EXP,或者将其工程化批量完成内容去探索更多的应用场景和潜力。

参考

[1] https://gobysec.net/exp

[2] https://www.exploit-db.com/exploits/14641

[3] https://zhuanlan.zhihu.com/p/608738482?utm_source=wechat_session&utm_medium=social&utm_oi=1024775085344735232

[4] https://mp.weixin.qq.com/s/I9IhkZZ3YrxblWIxWMXAWA

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

ChatGPT 漏洞检测 POC编写 代码转换 模型训练
相关文章