范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

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

  这是我去年2021年写的文章,如今这款开源安全测试工具已经更新了很多新功能,但漏洞扫描这块基本上还可以参考我这篇文章:
  漏洞扫描工具,核心就是扫描器,而扫描器的设计思想是:灵活,易扩展,易修改,灵活的意思就是可单独执行专项漏洞的扫描,也可以批量执行集成的所有漏洞探测模块;易扩展的意思就是,新的漏洞检测模块可清晰简单地集成进扫描器;易修改,对各个漏洞扫描模块可根据特殊情况修改探测逻辑。以下我们以网上一款开源的扫描工具来讲解,当然部署过程和使用中可能会处处是坑,只要一一解决就是:扫描器的源码
  开源工具源码地址: https://gitee.com/samllpig/SafeTool-51testing
  工具的详细安装教程: http://quan.51testing.com/pcQuan/lecture/117
  软件架构图安装部署安装 python 3.6 以上环境(如果怕麻烦,就安装3.6,因为安装3.8等高版本还需要调整一点代码兼容性问题,但问题不多)安装 redis安装 wxPython==4.0.7pip install wxPython==4.0.7
  #如果安装失败,多执行几编,主要是因为网络超时导致安装失败
  #也可以直接去下载相关模块包,如下载 wxPython-4.0.7-cp36-cp36m-win_amd64.whl,到官网下载,一定要下载和python版本匹配的包
  #通过安装包来安装指定模块pip install wxPython-4.0.7-cp36-cp36m-win_amd64.whl
  #安装过程如果提示缺什么包,就继续去下载什么包
  也可以安装更高版本的,比如wxPython==4.1.1安装openssl
  一般安装会有问题,可以直接到官网下载 Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions
  在本地安装后,还需要将库文件拷贝到python目录下,这样才能识别,如:
  1、将openssl安装目录下的:C:Program FilesOpenSSL-Win64lib 拷贝到 D:Pythonlibs
  2、将openssl安装目录下的:C:Program FilesOpenSSL-Win64include 拷贝到 d:Pythoninclude检查requirements.txt
  这个文件源代码根目录下,配置了需要安装的模块及版本,我们需要确认自己的python版本是否以其匹配,比如Python3.8就要求改lxml为 lxml==4.6.3pip安装模块包pip install -r requirements.txt  # 如果安装失败,多执行几编,主要是因为网络超时导致安装失败,也可以到官网找模块包下载后来安装 # 如果安装提示版本问题,就需要替换版本,一般Python3.8会遇到按以下顺序启动服务
  启动redis数据库
  启动服务端 myproxy.bat
  启动客户端 python consoleMain.py异常修改
  安装部署完后,我们可能还会遇到一些问题,这和代码当初的开发环境不一致有关。
  1、关于Python3.8和3.6的兼容
  Python3.8已经移出了time.clock()方法,但这份源码里还是用到了,所以如果遇到相关报错,需要自己手动修改,比如获取系统时间,可以改为使用time.perf_counter()
  2、路径带空格的问题
  这份代码这方面没考虑周全,如果部署的路径带空格,就会报路径错误,比如"D:Program Files"路径,我们要么就不要部署在带空格的路径下,要么直接改他的代码,比如:setUp = "python " + path #可以将path路径用引号全圈起来 setUp = "python "" + path + """
  3、启动时报wt.exe找不到错误
  我也不知道wt.exe的由来,这个错识有时候不影响启动,因为启动文件consoleMain.py做了相关判断处理,但为了彻底不调用wt.exe,我们也可把consoleMain.py当中的相关代码直接改了:# wtSetUp = "wt.exe python " + path # 把以上调用改为直接调PowerShell.exe wtSetUp = "start cmd /k PowerShell.exe python "" + path + """
  这么改后,还有个好处,就是遇到代码异常,不会立即关闭cmd窗口,这样就能看到以下具体的报错,对于调试和分析代码错误是有帮助的。
  4、中文报utf-8编码错误
  比如在web扫描时执行exec audit,报错:
  通过报错,我们可以看到utf-8编码错误,而且报错的是request.py的resp.read().decode方法,我们把编码改为如下(具体改成什么编码,自己可以试试):self.content = resp.read().decode("gbk")
  编码改成功后,再通过 python consoleMain.py 入口调用就没有这个错误了。
  5、报list index out of range错误
  这个低级错误,一般是使用不当引起,但也看出了代码的健壮性不足,比如执行exec attacks.xss报错如下:
  我们可以看到报错的params.py文件具体那一行,就是self.url.split("?"),问题出在这个问号,因为我开始设置扫描路径是:set url http://172.16.1.63,这是错误的,应该如下设置:set url http://172.16.1.63/?u=admin
  一眼就看出来了,得加个?问号,表示带参数,这个问题可以直接改他的代码,加个判断,如果不带参数,就提示重新设置,而不是报错。另外这块也说明还需要进一步扩展开发,正常应该由扫描工具主动去扫描和捕获可以进行xss跨站脚本攻击的链接和地方,而不是手动设置url来模拟攻击。
  6、执行myproxy.bat找不到mitmdump
  明明我们都装了mitmdump,为什么还可能找不到,这是因为pip安装时,是局部还是全局安装,正常mitmdump是安装在python目录下的Scripts中,如D:ToolsPythonScripts,假如你没找到,那就需要在代码路径下搜索,是否装在代码目录下了,比如在:SafeTool-51testingvenvScripts
  这是因为我们用PyCharm Community Edition开发工具来安装部署可能遇到的问题,我们要么挪一下mitmdump,要么直接改myproxy.bat,改一下调用路径:"D:Program FilesProjectSafeTool-51testingvenvScriptsmitmdump" -q -s myproxy.py -p 8000
  7、生成报告的问题
  开源的代码里关于这块也是有问题的,具体下面也会提到简单的修改方式 。简单使用
  先打开我们的扫描器看下界面:
  扫描器界面:
  好了,上面就是我们的扫描器,全部使用命令操作,简单易记,大家跟着敲就可以了。help命令使用
  help: 列出集成的插件命令和描述。
  我们开始扫描之前要做些基本的设置,输入help set命令,查看我们需要设置那些参数,带*号的是必选项.
  info 命令
  info :显示详细的漏洞检测模块
  info 命令的使用格式是: info [插件名称],插件名称就是上图中输入help命令得到的。
  输入info attacks:
  输入info audit命令:
  可以看到audit插件下的检测模块太少了,后期我们需要加入tomcat、nginx、weblogic等等的扫描模块 。
  输入info brute命令:
  输入 info disclosure:
  set命令:
  在进行扫描之前需要进行基本的设置工作,通过help set命令查看可以设置的选项,在通过set命令设置,在help set显示的选项中带*号的是必选项,其他的根据需要进行设置。
  set 命令格式: set [选项] [参数]
  举例: set url http://192.168.16.132/wordpress/?s=11
  check 命令:
  输入check argv 显示set中设置的参数值
  其中agent参数,即版本信息默认会随机获取。exec 命令
  执行检测命令,命令格式:exec 插件名称[.模块名称]
  如果只输入插件名称[attacks,audit,brute,disclosure],则会执行当前插件下所有漏洞检测模块,如果输入 插件名称.模块名称,例如:attacks.xss,则仅会执行当前插件下指定的模块名称。
  输入 exec audit : 执行检测中间件插件下的所有模块
  输入 exec attacks.xss :使用注入插件中的检测xss漏洞模块:
  输入 exec attacks.blindsqli :检测sql盲注漏洞
  report 命令:
  生成测试报告命令
  命令参数: report [报告名称]
  注:只有执行过起码一次完整的插件检测才能生成报告,而不是专项漏洞检测,即 exec 插件名称,而不是 exec 插件名称.模块名称
  输入命令: report webscan
  按照提示显示的目录,打开测试报告,报告格式是html的:
  好了,以上就是使用扫描器的所有命令和完整的执行流程(这个报告执行了audit和attacks两个模块(插件),但结果都归为第一个插件模块了,原因如下)。
  注意:关于生成报告,原来的代码应该是有问题的,如果只执行的是插件子模块,如 exec attacks.xss,再执行report webscan 生成报告是会失败的,这是因为代码里只有在执行插件总模块 exec attacks才会调用报告赋值(调用子模块的函数是startup_spec_attacks,没有重新赋报告值,所以导致exec子模块,报告数据就会并到前面的插件总模块),参见代码如下:#执行attacks子模块函数,没有对REPORT进行再赋值 def startup_spec_attacks(attack:str):     if attack in attacks_info.keys():         plugins = spec_attacks_plugins(attack)         startup_plugins(plugins)     else:         warn("模块不存在!")  def startup_full_attacks():     global resultJson     if not REPORT["startTime"]:         REPORT["startTime"] = strftime("%Y/%m/%d at %H:%M:%S")     execmod.append("attacks")     plugins = attacks_plugins()     if resultJson:         resultJson = {}     startup_plugins(plugins)     REPORT["attacks"] = resultJson  #调用总的attacks模块,才对报告结果赋值
  这个问题需要引起关注,如果想简单的改,直接在startup_spec_attacks函数里加上REPORT赋值(需要有重复判断)就行:def startup_spec_attacks(attack:str):     global resultJson     if not REPORT["startTime"]:         REPORT["startTime"] = strftime("%Y/%m/%d at %H:%M:%S")     if resultJson and not REPORT["attacks"]:         resultJson = {}     if attack in attacks_info.keys():         execmod.append("attacks")         plugins = spec_attacks_plugins(attack)         startup_plugins(plugins)         REPORT["attacks"] = resultJson     else:         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好像天生就有漏扫的天赋,对安全测试感兴趣的人可以了解一下这款工具。
  ​

葡萄牙妓院里的油画,芬兰女人的小便用具,39张照片看世界耀眼的旋翼光环,是飞机螺旋桨撞击沙子而发生的一种自燃现象。三文鱼仿佛钻进熊的耳朵,这张照片获得了今年的喜剧野生动物摄影。佛罗里达州万圣节,桨板和皮划艇的运动员就像一群漂在水上的女巫辽篮残阵遭血虐,创队史最大分差,球迷说浙江稠州真乃虎狼之师赛前就闻听韩德君大伤休战,上轮比赛大拇指骨折实锤了,可未曾想到的杨鸣居然一并让三哥也轮休,就连仅出战二场的郭艾伦也一并做上了看台,这比赛如何打呢!未战先怯,结局一目了然。可是比赛过周运12月1925日发挥摩羯老大哥的踏实,你想要的就会来!Youcantexpecttoseethesunwhencloudy01hr在讲下周天象前,先给大家看一眼预测全国各省新冠开放后感染达到峰值的日期,大部分省份的高峰值集中在下周,各感染人数剧增,是专家太乐观,还是放开的有点早疫情防控现在在所有人的期盼中已经开放了,虽然专家一再强调奥密克戎病毒毒性已经很低,但是会放开的有点儿太早,貌似忽略了奥密克戎病毒的传播速度,和可能引发其他基础病加重的情况,以及基础24集县委大院大结局前瞻,4人再无反转,梅晓诗成唯一变数追剧人什么时候最苦,那必须是等待更新的时候。今晚过后,县委大院又将在周末的两天,迎来打烊休息的固定日子,这让追剧热情高涨的小编,瞬间感觉到一丝孤独的味道。目前,该剧已经更新了16集野火对于野草,是敌是友?离离原上草,一岁一枯荣。野火烧不尽,春风吹又生。这是大家耳熟能详的一首诗。野草凭借顽强的生命力,承受住了野火的肆虐,并在春天再度繁荣。野火的无情与野草的顽强形成了鲜明的对比。长期以休假和收入都多了是怎么做到的?原标题保供形势下,员工要休假区队要生产,曹家滩矿创新机制实现皆大欢喜(引题)休假和收入都多了是怎么做到的?(主题)工人日报中工网记者毛浓曦初冬,陕北榆林已数度降雪,陕西陕煤曹家滩矿开创七分朝天子,三分下江南的南旺分水枢纽开创七分朝天子,三分下江南的南旺分水枢纽二十四桥明月夜,玉人何处教吹箫。诗人杜牧曾用这样的文字写尽了一座城市的繁华与富庶浪漫与多情。这就是扬州,一座在一千四百多年前因运河而崛起的城2022年前11月重庆外贸平稳运行进出口总值7487。9亿元重庆海关所属两路寸滩海关积极开展电商货物通关查验支持大促。重庆海关供图华龙网新重庆客户端讯(林红)今(16)日,记者从重庆海关获悉,2022年前11个月,重庆外贸进出口总值7487如何避免同事之间同时感染,这份清单请收好!01hr但凡进入公共区域,请全程规范佩戴口罩。如有条件,建议佩戴医用防护口罩或KN95口罩。佩戴口罩前请务必洗手,请务必保证口罩密闭性良好。02hr仅在吃饭喝水或房间中仅有1人时方方正投顾看盘连花清瘟股一度跌停,谁还记得当年的口罩股方正证券总部东方红投顾团队总监李钢执业编号S0050613070001整体来看,疫情无疑是近期A股市场最重要的炒作主线,无论是防控药物,还是后疫情时代的消费复苏。周三,防疫医药股大
大厂面经分享后端开发岗面试真题前言在当下激烈的面试竞争环境下,大厂面试一直是程序员小伙伴津津乐道的话题,每一场面试的过程以及考题,都是大家茶余饭后的焦点。今天力扣君分享一个之前在面试大厂过程中,面试官出的几道技奔驰国产EQE不配用超联屏,蔚来全系都一样,平等这一话咱们还是来把奔驰EQE和蔚来eT7拉到一起来说说。不过这次咱们说说内饰。奔驰在2年左右之前推出了一款HyperScreen,也就是一块1m多长的超大号三联屏,不过这个三联屏只安卓阵营哪些手机值得入?对比三星荣耀OPPO,4K真香机就在其中临近年底,身边不少同事都在换手机,其中大多以30004000价位机型为主,不得不说,华为在这个价位的产品力还是很强的,像最新的Mate50E,这几天已经有多位同事入手,鸿蒙3。0系把握新能源汽车智能化机遇,TCL科技加速布局车载显示业务随着TCL华星定位车载等新业务的t9产线顺利投产,补充高端车载等高毛利产品产能的t5产线即将投产,TCL华星在车载显示上的布局加速推进。目前,TCL华星已经与比亚迪上汽奥迪奔驰等国新车动力超3。0T,宝马X5氢燃料电池车开始生产,续航500公里文懂车帝原创陈旭明宝马已开始生产BMWiX5Hydrogen车型懂车帝原创产品近日,宝马集团宣布已开始生产BMWiX5Hydrogen车型(即宝马X5氢燃料电池车),小规模生产工作杨利伟返回地球后,为何再也没有重返太空?在返回地球后,杨利伟对在太空所遭遇的危险回忆道感觉越来越痛苦,自己的五脏六腑似乎都要爆出来了,呼吸困难,心也跳的很快,感觉自己可能永远留在外太空回不来了从他的口述中,我们不难发现,再砍超3000万台!供应链曝三星工厂将停运苹果减产导读据韩媒ETNews报道,12月份三星电子将停止其在越南的智能手机工厂的运营两周。图三星越南厂此前除厂区爆发新冠疫情感染外,三星电子从未停止其智能手机工厂超周的运营。报道称,由于江西银行一年内四名高管落马,原董事长被指肆无忌惮大搞家族式腐败11月2日晚,据江西省纪委监委消息,江西省纪委省监委对江西银行股份有限公司(以下简称江西银行)原党委书记董事长陈晓明严重违纪违法被开除党籍开除公职。政知君注意到,今年以来,江西银行怀孕五个多月发现胎儿左肾囊性发育不良忍痛引产这张照片是2020年10月27日拍的,引产后出院。2020年6月,结婚有半年时间,我一直想要个孩子,月初检查出怀孕了,真的又惊喜又害怕。开始吃叶酸补营养胎教运动小心翼翼地学习做一个男子离婚半年后第二次去看孩子,孩子叫他叔叔,妻子是被赶走的01hr一位离异妈妈分享了一段视频离婚半年的前夫,带着礼物来看孩子。一进门就给孩子试穿新鞋子,陪他蹦蹦跳跳的玩耍,玩累了之后,又抱着孩子给它剪指甲。这是他第二次来看孩子了,离第一次苏打水气泡水有啥区别!12款产品配料表比对有发现随着消费者开始对健康饮食的追求,越来越多的品牌推出了名称不同价格不等,号称健康与口感并存的饮品。例如苏打水气泡水等等,我们该如何区分市面上这些饮品?上海市消保委微信团队今天就带大家