最近想写一个插件式扫描器,顺便研究了一下PocScan
https://github.com/erevus-cn/pocscan/
这个扫描器刚开源的时候很火,记得之前众测的时候还有公司将它部署到生产环境上,开了Debug信息。
在项目的Issues多次提到不兼容问题,但是一直没有修复,所以就看一下问题出在哪里。
加载bugscan插件后扫了一下自己的VPS,查看日志之后发现payload是发过来了,说明是结果存储反馈的过程除了问题。
文件 /pocscan/blob/master/pocscan/plugins/bugscan/dummy/__init__.py
def _problem(*args, **kwargs):
# 从栈里取poc名字
import inspect
poc_name = inspect.stack()[1][1]
log = kwargs['log']
- 这里传入的参数用*args就可以了
- 作者的本意是获取log中的url,事实上在旧版的插件中并不返回log,log 是新插件中hackhttp函数返回的
简单粗暴直接将38行修改成
def _problem(*args):
# 从栈里取poc名字
import inspect
poc_name = inspect.stack()[1][1]
result = ['note', 'info', 'warning', 'hole'][args[0]]
save_result(args[1], poc_name, result + ': '+poc_name)
扫描一下看结果:
总结:这个扫描器从学习的角度来讲具有借鉴意义,但并不适合部署使用。
后续我会写一下我的插件式扫描器的开发过程,在此立个flag。