欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

POC漏洞批量验证程序Python脚本编写

程序员文章站 2022-10-11 13:59:13
编写目的批量验证poc,python代码练习。需求分析1、poc尽可能简单。2、多线程。3、联动fofa获取目标。4、随机请求头.实现过程脚本分为三个模块,获取poc及目标、多线程批量请求验证、输出结...

编写目的

批量验证poc,python代码练习。

需求分析

  • 1、poc尽可能简单。
  • 2、多线程。
  • 3、联动fofa获取目标。
  • 4、随机请求头.

实现过程

脚本分为三个模块,获取poc及目标、多线程批量请求验证、输出结果。其中批量请求验证包括构造多线程,修改请求参数,发送请求三个部分。

main函数

在main函数中,主要有三个部分获取poc及目标,多线程(将目标填充到队列,创建多线程并启动)、输出结果。
具体实现如下:

获取目标

关于目标来源,设计单个目标、从文件中读取多个目标以及根据fofa语法从fofa_api中获取目标三种方式。

定义函数gettarget,函数分为两个部分

第一部分为根据 -f fofa语法 获取目标,默认数目为30条,

第二部分为根据 -u url / -i file / -f num(数目,默认为10)获取要请求验证的目标,两部分以是否传参poc参数区别,最后返回一个targetlist列表。

具体实现如下:

批量请求验证

定义thread函数,封装多线程请求相关代码,需传入获取到的目标参数targetlist。
具体实现如下:

加载poc

请求验证必须使用 -p pocname参数指定要使用的poc,所有poc在poc.json文件中存储。

具体实现如下

多线程类

定义reqthread线程类,传入队列以及poc两个参数,封装req请求方法。
具体实现如下:

其中在req中的请求方法内,存在三个修改请求的方法。

urlparse

对获取到的目标进行文本处理。

getproxy

指定请求代理。

randomheaders

添加随机user-agent、referer、xff等请求头参数值。

输出结果

定义全局变量list,储存要输出的目标,定义输出方法puttarget。
具体实现如下:

其他

全局变量

命令行读取参数

poc详情显示

ctrl+c结束线程

poc.json文件

poc本质为一次http请求,本着简单的原则,仅设计名称、联动fofa的语法、请求头、请求内容、以及验证漏洞存在回显的内容5个字段。

运行结果

fofa获取目标

POC漏洞批量验证程序Python脚本编写

poc验证

POC漏洞批量验证程序Python脚本编写

POC漏洞批量验证程序Python脚本编写

总结

代码实现基本功能,已暂时符合自己使用需求,此次实践已完成编写目的,但一些容错机制以及细小功能点还需完善,如输入为空程序运行结果,以及代理模块功能待实现。

通过此次编程,在熟悉python编程的同时也深感代码功底的薄弱。

不过最后还是学习到不少知识,比如多线程、读写文件、数据类型操作、命令行参数读取、编程模块化思想等。
  

之后可以多尝试使用python编写小demo工具,避免对编程思维生疏。

完整代码

以上就是poc漏洞批量验证程序python脚本编写的详细内容,更多关于python脚本编写poc批量漏洞验证的资料请关注其它相关文章!