城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

如何自己开发漏洞扫描工具

12月4日 顾昀汐投稿
  这是我去年2021年写的文章,如今这款开源安全测试工具已经更新了很多新功能,但漏洞扫描这块基本上还可以参考我这篇文章:
  漏洞扫描工具,核心就是扫描器,而扫描器的设计思想是:灵活,易扩展,易修改,灵活的意思就是可单独执行专项漏洞的扫描,也可以批量执行集成的所有漏洞探测模块;易扩展的意思就是,新的漏洞检测模块可清晰简单地集成进扫描器;易修改,对各个漏洞扫描模块可根据特殊情况修改探测逻辑。以下我们以网上一款开源的扫描工具来讲解,当然部署过程和使用中可能会处处是坑,只要一一解决就是:扫描器的源码
  开源工具源码地址:https:gitee。comsamllpigSafeTool51testing
  工具的详细安装教程:http:quan。51testing。compcQuanlecture117
  软件架构图安装部署安装python3。6以上环境(如果怕麻烦,就安装3。6,因为安装3。8等高版本还需要调整一点代码兼容性问题,但问题不多)安装redis安装wxPython4。0。7pipinstallwxPython4。0。7
  如果安装失败,多执行几编,主要是因为网络超时导致安装失败
  也可以直接去下载相关模块包,如下载wxPython4。0。7cp36cp36mwinamd64。whl,到官网下载,一定要下载和python版本匹配的包
  通过安装包来安装指定模块pipinstallwxPython4。0。7cp36cp36mwinamd64。whl
  安装过程如果提示缺什么包,就继续去下载什么包
  也可以安装更高版本的,比如wxPython4。1。1安装openssl
  一般安装会有问题,可以直接到官网下载Win32Win64OpenSSLInstallerforWindowsShiningLightProductions
  在本地安装后,还需要将库文件拷贝到python目录下,这样才能识别,如:
  1、将openssl安装目录下的:C:ProgramFilesOpenSSLWin64lib拷贝到D:Pythonlibs
  2、将openssl安装目录下的:C:ProgramFilesOpenSSLWin64include拷贝到d:Pythoninclude检查requirements。txt
  这个文件源代码根目录下,配置了需要安装的模块及版本,我们需要确认自己的python版本是否以其匹配,比如Python3。8就要求改lxml为lxml4。6。3pip安装模块包pipinstallrrequirements。txt如果安装失败,多执行几编,主要是因为网络超时导致安装失败,也可以到官网找模块包下载后来安装如果安装提示版本问题,就需要替换版本,一般Python3。8会遇到按以下顺序启动服务
  启动redis数据库
  启动服务端myproxy。bat
  启动客户端pythonconsoleMain。py异常修改
  安装部署完后,我们可能还会遇到一些问题,这和代码当初的开发环境不一致有关。
  1、关于Python3。8和3。6的兼容
  Python3。8已经移出了time。clock()方法,但这份源码里还是用到了,所以如果遇到相关报错,需要自己手动修改,比如获取系统时间,可以改为使用time。perfcounter()
  2、路径带空格的问题
  这份代码这方面没考虑周全,如果部署的路径带空格,就会报路径错误,比如D:ProgramFiles路径,我们要么就不要部署在带空格的路径下,要么直接改他的代码,比如:setUppythonpath可以将path路径用引号全圈起来setUppythonpath
  3、启动时报wt。exe找不到错误
  我也不知道wt。exe的由来,这个错识有时候不影响启动,因为启动文件consoleMain。py做了相关判断处理,但为了彻底不调用wt。exe,我们也可把consoleMain。py当中的相关代码直接改了:wtSetUpwt。exepythonpath把以上调用改为直接调PowerShell。exewtSetUpstartcmdkPowerShell。exepythonpath
  这么改后,还有个好处,就是遇到代码异常,不会立即关闭cmd窗口,这样就能看到以下具体的报错,对于调试和分析代码错误是有帮助的。
  4、中文报utf8编码错误
  比如在web扫描时执行execaudit,报错:
  通过报错,我们可以看到utf8编码错误,而且报错的是request。py的resp。read()。decode方法,我们把编码改为如下(具体改成什么编码,自己可以试试):self。contentresp。read()。decode(gbk)
  编码改成功后,再通过pythonconsoleMain。py入口调用就没有这个错误了。
  5、报listindexoutofrange错误
  这个低级错误,一般是使用不当引起,但也看出了代码的健壮性不足,比如执行execattacks。xss报错如下:
  我们可以看到报错的params。py文件具体那一行,就是self。url。split(?),问题出在这个问号,因为我开始设置扫描路径是:seturlhttp:172。16。1。63,这是错误的,应该如下设置:seturlhttp:172。16。1。63?uadmin
  一眼就看出来了,得加个?问号,表示带参数,这个问题可以直接改他的代码,加个判断,如果不带参数,就提示重新设置,而不是报错。另外这块也说明还需要进一步扩展开发,正常应该由扫描工具主动去扫描和捕获可以进行xss跨站脚本攻击的链接和地方,而不是手动设置url来模拟攻击。
  6、执行myproxy。bat找不到mitmdump
  明明我们都装了mitmdump,为什么还可能找不到,这是因为pip安装时,是局部还是全局安装,正常mitmdump是安装在python目录下的Scripts中,如D:ToolsPythonScripts,假如你没找到,那就需要在代码路径下搜索,是否装在代码目录下了,比如在:SafeTool51testingvenvScripts
  这是因为我们用PyCharmCommunityEdition开发工具来安装部署可能遇到的问题,我们要么挪一下mitmdump,要么直接改myproxy。bat,改一下调用路径:D:ProgramFilesProjectSafeTool51testingvenvScriptsmitmdumpqsmyproxy。pyp8000
  7、生成报告的问题
  开源的代码里关于这块也是有问题的,具体下面也会提到简单的修改方式。简单使用
  先打开我们的扫描器看下界面:
  扫描器界面:
  好了,上面就是我们的扫描器,全部使用命令操作,简单易记,大家跟着敲就可以了。help命令使用
  help:列出集成的插件命令和描述。
  我们开始扫描之前要做些基本的设置,输入helpset命令,查看我们需要设置那些参数,带号的是必选项。
  info命令
  info:显示详细的漏洞检测模块
  info命令的使用格式是:info〔插件名称〕,插件名称就是上图中输入help命令得到的。
  输入infoattacks:
  输入infoaudit命令:
  可以看到audit插件下的检测模块太少了,后期我们需要加入tomcat、nginx、weblogic等等的扫描模块。
  输入infobrute命令:
  输入infodisclosure:
  set命令:
  在进行扫描之前需要进行基本的设置工作,通过helpset命令查看可以设置的选项,在通过set命令设置,在helpset显示的选项中带号的是必选项,其他的根据需要进行设置。
  set命令格式:set〔选项〕〔参数〕
  举例:seturlhttp:192。168。16。132wordpress?s11
  check命令:
  输入checkargv显示set中设置的参数值
  其中agent参数,即版本信息默认会随机获取。exec命令
  执行检测命令,命令格式:exec插件名称〔。模块名称〕
  如果只输入插件名称〔attacks,audit,brute,disclosure〕,则会执行当前插件下所有漏洞检测模块,如果输入插件名称。模块名称,例如:attacks。xss,则仅会执行当前插件下指定的模块名称。
  输入execaudit:执行检测中间件插件下的所有模块
  输入execattacks。xss:使用注入插件中的检测xss漏洞模块:
  输入execattacks。blindsqli:检测sql盲注漏洞
  report命令:
  生成测试报告命令
  命令参数:report〔报告名称〕
  注:只有执行过起码一次完整的插件检测才能生成报告,而不是专项漏洞检测,即exec插件名称,而不是exec插件名称。模块名称
  输入命令:reportwebscan
  按照提示显示的目录,打开测试报告,报告格式是html的:
  好了,以上就是使用扫描器的所有命令和完整的执行流程(这个报告执行了audit和attacks两个模块(插件),但结果都归为第一个插件模块了,原因如下)。
  注意:关于生成报告,原来的代码应该是有问题的,如果只执行的是插件子模块,如execattacks。xss,再执行reportwebscan生成报告是会失败的,这是因为代码里只有在执行插件总模块execattacks才会调用报告赋值(调用子模块的函数是startupspecattacks,没有重新赋报告值,所以导致exec子模块,报告数据就会并到前面的插件总模块),参见代码如下:执行attacks子模块函数,没有对REPORT进行再赋值defstartupspecattacks(attack:str):ifattackinattacksinfo。keys():pluginsspecattacksplugins(attack)startupplugins(plugins)else:warn(模块不存在!)defstartupfullattacks():globalresultJsonifnotREPORT〔startTime〕:REPORT〔startTime〕strftime(YmdatH:M:S)execmod。append(attacks)pluginsattacksplugins()ifresultJson:resultJson{}startupplugins(plugins)REPORT〔attacks〕resultJson调用总的attacks模块,才对报告结果赋值
  这个问题需要引起关注,如果想简单的改,直接在startupspecattacks函数里加上REPORT赋值(需要有重复判断)就行:defstartupspecattacks(attack:str):globalresultJsonifnotREPORT〔startTime〕:REPORT〔startTime〕strftime(YmdatH:M:S)ifresultJsonandnotREPORT〔attacks〕:resultJson{}ifattackinattacksinfo。keys():execmod。append(attacks)pluginsspecattacksplugins(attack)startupplugins(plugins)REPORT〔attacks〕resultJsonelse:warn(模块不存在!)
  这么一改,再执行以上的扫描步骤,报告模板显得更准确,而且就算执行同一模块的attacks。xss和attacks。blindsqli,后面的也不会覆盖前面的,如下:
  当然这样也不能保证完全没有问题,具体以后我还会去细致考虑这方面的优化!插件的编写
  大家按章节一的下载地址,下载工具后,用PyCharm或vscode或你顺手的工具打开,插件扫描器就在scan目录下
  我们的插件编写,先从scanlibutilssettings。py全局配置文件开始
  第一步:先看基础路径配置,整个项目的目录结构就在这里
  第二步,配置字典路径,漏洞检测模块需要用到的字典,统一放在这个路径下
  第三步:配置插件路径,新增的插件统一按下面的格式配置
  第四步:配置插件描述信息,和第三步的插件路径是对应的
  第五步:配置漏洞模块描述信息,和第四步的插件描述是对应的
  第六步:配置漏洞模块路径信息,和第四步的插件描述是对应的
  第七步:编写插件的加载模块方法
  统一命名规则插件名成plugins()〔全部模块执行方法〕;spec插件名称plugins(key:str)
  第八步:编写检测漏洞模块,以attacks插件下的bshi(破壳漏洞检测)检测模块为例,
  导入必须的核心库:
  创建漏洞检测类,继承Request类,类名需与文件名一致
  编写的漏洞检测方法,统一命名为check:
  最后编写run方法,命名不建议修改,如果实在需要修改的话,还需要在第九步中修改对应的模块导入逻辑:
  第九步:在localapi。py文件下编写本地API调用,为什么有本地API调用,因为我打算再写个远程API调用方法,结合安全工具的web服务使用(这一步不是必须的,只有在扩展新的插件才用到,如果在原有插件的基础上新增漏洞检测模块,则可以跳过这一步)
  本地API函数的格式和基本路径,参考下图:
  总结下扩展逻辑就是,命名插件便于统一管理模块,模块编写按固定格式,本地API编写用于按指定插件运行检测模块,该扫描器的检测模块还可以继续更新扩展。
  本人对安全测试其实了解的很少(对于软件测试人员来说,多少要了解一点),主要是因为当时学了几天Python语法和应用部署,想检验一下自己的掌握情况,就拿这个开源项目来研究,对于会Java的人来说,学Python应该也快,当然学精也不容易。这款开源工具的扩展性还不错,Python好像天生就有漏扫的天赋,对安全测试感兴趣的人可以了解一下这款工具。
投诉 评论 转载

阿里又整了个跨境电商平台,30日正式推出eMarketer《2022年全球电商市场预测报告》显示,2022年全球电商销售额预计将首次突破5万亿美元,占整体零售总额的15,预计2025年这个数字将突破7万亿美元。……外星人入侵,地球人面临灭种危险,谁来拯救世界?外星人入侵,地球人面临灭种危险,谁来拯救世界?近年来,外星飞船时常通过传送门来地球侦察,搜集情报,骚扰人类。外星人发现,太空星球,唯有地球地大物博,矿产丰厚,而且风……长江后浪推前浪!休斯顿火箭用4年1625万签下1863悍将NBA常规赛,76人客场挑战火箭。76人近期遭遇2连败,目前东部第五。火箭战绩已不在联盟倒数后三位。本场哈登迎来复出,携塔克、豪斯对阵旧主。最终,76人双加时不敌火箭,遭遇3连……关于江西的冷知识大盘点江西这个地方对于我们国家来说是有着特殊意义的,但是这么多年江西的发展却很一般,并且一直都是不声不响的,江西方面也有很多有意思的冷知识,我们来简单的看一下吧。落星墩,一个神……CBA大结局!广东队签下顶级大外援,42分无人能敌,杜锋开心北京时间12月6日,CBA新赛季第二阶段的比赛就要开始了。在这之前,12月3日将会在诸暨补办上个赛季的全明星。而球迷最关注的广东宏远将会派出4名球员担任南区首发阵容。提到广东队……头铁大哥提前激活iPhone14Pro消费者爽了,经销商赔惨众所周知,iPhone14系列虽然已经发布,但是目前仍然是一个预售的状态,因此作为普通消费者,大部分人都是没有办法提前体验到的。但各级经销商却已经拿到了新机,只要不是提前激活使……李易峰只是冰山一角,盘点那些历年被朝阳群众带走的明星们2014年3月18日李代沫因吸毒和涉嫌容留他人吸毒罪被逮捕。2014年5月16日,演员黄海波疑似被仙人跳嫖X,被当场抓获。2014年6月13日著名编剧宁财神也因吸食……如何自己开发漏洞扫描工具这是我去年2021年写的文章,如今这款开源安全测试工具已经更新了很多新功能,但漏洞扫描这块基本上还可以参考我这篇文章:漏洞扫描工具,核心就是扫描器,而扫描器的设计思想是:……从仙剑到逆水寒,玩家总结十款国产武侠之光瞬间找到文化自信武侠是中国最具特色的一种文化形式之一,影响了一代又一代的国人。由于受众广泛,这一题材也颇受国内游戏厂商的宠爱,从国产游戏开始出现的那一刻,就是由武侠题材来打头阵的,二三十年间,……很有烟火味的句子灶台有汤,窗前有灯,阳台有花【很有烟火味的句子】(1)落市的菜场,鱼鳞在地,蕃茄十分疲倦。(2)灶台有汤,窗前有灯,阳台有花。(3)端一碗水,出门去捉一碗月亮。(……火药味十足!网红马斯克向苹果谷歌宣战,或将亲自做手机,这回不本文来源:时代周报作者:王贺特斯拉(TSLA。US)又要做手机了。近日,特斯拉CEO马斯克在推特上表示,如果苹果、谷歌将推特从各自的应用商店中下架,而且不剩其他选择……愿你心里充满期待,有个小院,好好生活人人都知道,在我们这个时代,拥有一个院子是奢侈的。但尽管如此,院子对我们的诱惑,我们对院子的向往,未曾减少一分。在疫情之下,小院又带给了人们不同的意义。向往小院,过没有波……
特殊时期,建议中老年人少吃牛奶鸡蛋,多吃4样,增强抵抗力(外代二线)足球意甲联赛尤文图斯胜萨勒尼塔纳亚马逊FTC能效标签怎么获取数字经济引领产业转型升级足迹追老胡,好玩又幸福!NASA好奇号火星车发现了远古火星存在水的证据去年江西新开通5G基站2。9万多个上云企业数新增超10万家锈湖Thepastwithin超级无敌旋风终极完整版解析微透黑纱裙的杨颖美到爆炸,高挑的身材优美的曲线一个2岁一个4岁!兄弟俩接连被查出恶性肿瘤,医生警惕这些症状央视文案才是YYDS买手机就选12256G大内存版本,这4款几乎零差评,关键价格

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找