poc框架
1、介绍
渗透测试存在几个特征:业务需求庞大,优化实现的需求动力充足,业务需求持续增长。
换句话说,渗透测试很难保持固定的代码,而是需要频繁迭代。
因此,提出poc框架进行开发:
- ui和业务逻辑分离。ui基本保持不变,相对固定的输入、操作和输出。业务优化和需求实现增加主要依靠业务逻辑代码实现
- 动态获取模块,调用其模块变量和函数。即框架代码一般保持不变,编写的是作为逻辑业务的功能模块
- 业务逻辑的规范化编写,模块变量、模块函数名称、模块函数的输入与输出
2、poc框架ui
3、框架代码
4、模块规范化编写
def poc(dict_value: dict = {}):
# 声明本poc的参数与默认值
kwargs = {'url': '', 'headers': '', 'https_flag': 'false', 'message': '', 'index': '',
'html_note_flag': 'false', 'js_note_flag': 'false'}
kwargs.update(dict_value)
# 测试级别,0表示不可行,4表示完全可行
status = 0
# 输出信息
info = ''
# 日志数据
req_list = list()
...
return status, info, req_list
4.1 创建模块
4.2 模块变量
title,str类型,即poc的功能名称
description,str类型,详细描述poc的功能与实现
help_info,str类型,阐述各poc参数的名称、类型、默认值和使用方式
4.3 核心函数poc
(1)函数名称
统一的名称,可以使框架在获取当前模块后,直接调用。
目前,只有poc函数是供予使用,作用是进行漏洞存在测试。可以是单一的指定调用,也可以是批量的自动调用其函数
(可以考虑,再定义exp等函数,但是这些无法被自动调用,而需要右键选择调用具体函数)
(2)参数
参数可以分为两类:一是url、headers、https_flag、message、index等基础参数,二是各poc业务所需的差异性参数
解决办法是,函数直接使用dict类型获取参数,在函数内定义一个dict变量,声明本poc函数所需的全部参数,再根据实参进行更新dict。
x需要注意,参数值全部统一为str类型,方便ui或者命令行设置参数。如果是其它类型,则函数内进行单独处理
(3)返回
status,int类型,0-4。0表示不可能,4表示完全可能,中间是过渡,即有可能,需要手工判断
info,str类型,测试过程与分析结果
req_list,list[Request]类型,本poc测试所产生的所有http日志数据
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战