插件使用库
![4f0889b66c5e8038eab8dd318a4a78fe.png](https://i-blog.csdnimg.cn/blog_migrate/55a4318aad6c3d354e0ca5f377ae121b.png)
request库:requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。
POC代码框架
![4f0889b66c5e8038eab8dd318a4a78fe.png](https://i-blog.csdnimg.cn/blog_migrate/55a4318aad6c3d354e0ca5f377ae121b.png)
1、首先导入requests标准库(接触过爬虫基础的人都知道是何为,在此不再多赘述。)
2、(class类):用来描述相同属性和方法的对象的集合。定义集合中每个对象所共有的属性和方法。以下贴出的代码则为自定义一个ScriptInfo类
如果存在漏洞将这个类的info字典一并传回扫描器主函数。
3、def定义一个方法 这个方法是模拟浏览器去请求,简单来讲模拟浏览器发送一个漏洞数据包的整个过程。
使用def 开始定义check函数,括号内部为函数的参数,内部为需要传到check这个函数的参数值,check方法内部是具体实现逻辑的代码。
两个参数headers、Response.
headers
参数是因payload发送的需求而改变的。
Response
requests的session方法 相当于保存方法后的cookie变量 下一次调用request get的时候就会自动带入前一次访问的cookie。常用于模拟登录、后台漏洞。
timeout
对于批量验证poc的插件一定要填写时间超时参数,不然会直到请求失败,导致插件运行时间过长。
verify
移除ssl证书 对于https的访问。
4、审计函数 audit 主要验证漏洞和处理结果。
先将url和漏洞地址拼接调用check函数并返回内容,检查返回数据包中是否存在相应设定的字符串最终确定漏洞是否存在。
if "BOM Not Found" in response.content and "filename:" in response.content:
以上就是poc中最主要的逻辑判断BOM Not Found
和filename
是存在漏洞一定会出现在返回包的字符串。所以我们将这俩个变成判断漏洞是否存在的关键字。
arg
主函数传递处理后的url
payload
将url和漏洞地址拼接
response
发送数据包并且返回http 返回包内容
warning_info
漏洞详情
调试代码
![4f0889b66c5e8038eab8dd318a4a78fe.png](https://i-blog.csdnimg.cn/blog_migrate/55a4318aad6c3d354e0ca5f377ae121b.png)
运行结果
好啦本文就到此结束了,更多的插件编写的方式可以参考安全脉搏生态插件社区开发文档进行学习,我也只是简单的写一个框架。望各位大佬们手下留情,这也是个人的理解。
编写代码思路就是这么多。快来生态插件社区提交插件吧~
![46e700bba994b83240c5269f8ff6f09d.gif](https://i-blog.csdnimg.cn/blog_migrate/96554a630a9f059ff13dd0fb06f19fa3.gif)