POC漏洞批量验证程序Python脚本编写
编写目的
批量验证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编程的同时也深感代码功底的薄弱。
不过最后还是学习到不少知识,比如多线程、读写文件、数据类型操作、命令行参数读取、编程模块化思想等。
之后可以多尝试使用python编写小demo工具,避免对编程思维生疏。
完整代码
以上就是poc漏洞批量验证程序python脚本编写的详细内容,更多关于python脚本编写poc批量漏洞验证的资料请关注其它相关文章!