JDK 1.8
打包命令:mvn package
可设置HTTP
代理和Socks
代理方便各种网络环境使用
默认使用UTF-8
编码,可根据目标站点自行设置
可通过信息探测插件名
、作者名
、描述
中的关键字进行插件筛选
漏洞插件部分可以通过插件名
、漏洞名称
、作者名
、漏洞描述
关键字进行筛选
直接使用HttpTool
的get或post进行发包返回Response
对象,通过Response
对象获取返回包的响应码、包内容、是否出错、head等信息
可以直接双击
插件名字所在表格行进行加载并自动跳转利用界面,可以根据插件是否设置参数
分别加载不同界面。
可通过列表当前行任意位置右键
选择POC或者EXP模块,如果当前插件没有POC或EXP,按钮为灰色
左侧区域每行填写一个检测地址,点击扫描可以根据插件定义的条件输出到表格中。
加载漏洞插件中所有实现EXP接口的对象,可同时加载多个EXP对象,可以获取插件中定义好的参数。
此类全限定名不可修改,只需要修改我们上面自自己写的信息探测插件
和漏洞信息插件
的对象名即可
其余的类和文件夹名称可以随便改不会影响插件加载。
所有关于漏洞利用的插件对象都必须实现Exploit
接口,并重写其中的方法
其中getExploitTabTitle()
方法返回的内容是在插件中这个Tab
标签显示
getExploitCustomArgs()
方法返回的是多个参数,最终在工具显示位置 (可写可不写)
需要使用一个List<ArgsInfo>
来存储我们自定义的参数名,通过信息探测插件对象来创建参数的对象
漏洞利用部分,可以通过targetInfo.getAddress()
方法获取主程序工具中输入的URL地址,通过args.get("TestArg")
可以获取主程序工具中输入参数的值,最后通过resultOutput
的各种打印方式将需要显示的结果打印到主程序工具的前端显示。
需要漏洞插件
的getHelpPluginInfo()
获取一个对象调用createScanResult()
返回一个扫描结果对象用来存储扫描结果,
最后通过扫描结果对象的三个方法,将插件定义好的条件插入表格中
scanResult.setTarget(targetInfo.getAddress());
scanResult.setMsg("输出信息");
scanResult.setVul(true); //是否存在漏洞
前面的逻辑和显示位置和漏洞利用的大同小异,需要新建一个LinkedHashMap
,用来最后返回自定义的探测信息,这个和resultOutput
的输出内容不冲突
通过调用InfoDetectorPluginInfo
的多个方法设置插件名字、插件作者、插件版本等信息,用于前端显示
最后将这个插件中所有的信息探测插件
对象添加到一个List
中,调用registerInfoDetector()
方法传入List
漏洞利用部分同理,具体代码看Demo
感谢 @V1rtu0l
感谢@c0ny1师傅的woodpecker项目https://github.com/woodpecker-framework
感谢师傅们多多提issues
作者Github:https://github.com/HHa1ey