活着的意义……是在你快死的瞬间划过你脑海的那些事啊……

关于广度优先原则

即再批量漏扫的时候,如果对网址又相同的网址请求,可以采用基于网址优先循环,即

http://www.langzi.fun/admin.php

http://www.123456.cn/admin.php

http://www.1111.com/admin.php

http://www.la.cc/admin.php

即基于网址循环,这样不仅可以减少目标服务器压力,不至于把目标扫死,还能隐藏一些身份。

关于超链接获取

这是很深的感悟,即你的漏洞大部分都存在网址参数中,比如xss,sql注入,命令执行,任意文件包含,目录遍历等等,那么获取提升漏扫效率就要从下面两点开始:

1. 获取更加多更加深层的网址

2. 提高扫描验证的效率

关于sql注入扫描,我采用的是直接拉sqlmap过来验证,效率还是可以保证的,还有一些关于服务器层的,我都是直接调用nmap的脚本批量实现,虽然我自己也写了好几十种服务器,web层的未授权访问漏洞验证工具,但是个人终究还是比不上专业工具。

关于url的深度,除了从页面提取有效连接之外,还有更加深层的,我的想法是通过selenium+mitmproxy实现,我一开始是想使用requests实现,毕竟节省内存资源。后来在准备安全巡航项目时,想到还能通过puppeteer进行网页爬行获取连接。后来看到nmask的文章,利用chrome_remote_interface实现程序化、自动化Web安全测试学到了新姿势。

并且selenium本身就是专业的测试工具,自然能挖掘到更多深层的url,我本来想通过分析selenium的日志来获取网页的深层url请求和链接,但是这样比较慢,吃内存大,于是采用mitmproxy中间人代理,获取所有的深层url,然后通过算法获取到有效的深层url。

漏洞库整理

条件允许的话,可以把一些同种类型的漏洞检测方式写在每个单独的文件夹,方便调用。Github

关于自动化生成报表

使用python操作word自然可以,但是感觉生成的结果不太美观,可以做一些优化,生成图表或者添加页眉,格式化等等。

当然如果不需要再编辑可以再转换成pdf文件。获取截图使用pillow,但是这个库转换成exe后,截图后保存只能保存为png格式的图片,勿忘。

更新安全巡航0.97版本时候,初衷是为了简单上手,挂机扫洞的原则,所以一切都配置好,生成的报表文件都是固定写好,后续再更新的话,让用户自己写模板自然是不可能也不现实,可以自己定义好几套模板,提供一个选择模板的接口即可。

关于数据存储

一开始我都是使用记事本存储数据,一来是方便,二来是数据量不大,但是漏扫总共会涉及到超大数据量。

所以建议使用数据库,个人推荐mysql或者redis。数据库一开始一定要做好构架设计,这个非常非常重要,几乎占你漏扫全部的30%核心,一定要有可读性,方便拓展。

如果数据量大了,并发很大,并且你非常有钱拥有很多服务器可以做分布式(偷偷流下了羡慕的眼泪),可以使用mysql+redis做数据存储。

拓展漏洞功能

一些小白刚开始学会写漏扫的时候,看到别人有什么好东西就像加进去,然后发现数据库结构不行,代码也要重构,然后东改西改,最后自己都看不懂代码的真面目了。

一定要做好漏扫的结构设计,分好类,比如服务器端的,web层的,中间件层的存储不同的数据库结构,怎么样才能方便拓展,这些都要提前想好,但是像我这种人只能靠经验慢慢到磨砺了。

系统性构架

不同扫描对象,使用检测方式不一样,这里指的是批量扫描,即对于一些特定目录扫描,可以基于广度优先原则。

减少对方服务器压力并且能防止ban ip,但是这也就意味着,你这个模块需要接受的参数为100个url,但是扫描注入的时候,接受的参数可能是只能是一个url,这里就会出现调度冲突,解决方法有很多,比如分文件处理,每个漏扫模块必须完全独立,然后在数据库中做好结构设计,这一块实在是太大太深奥,我也是自己摸索着学习。

软件工程设计

个人野生菌,习惯独自打仗,所以很多软件都是自己做产品,然后构架代码结构,尝试开发,最后不断测试,更新修复代码,这里最重要的就是软件的结构和变量的命名,建议是对功能做独立分块,高内聚低耦合。

变量命名方式

个人建议是驼峰式命名,名字不宜太长,简短但是又能直观的展示变量或者函数名的作用。

模式借用

即你在某个程序中,实现了一个很骚的方法,比如我之前的yolandan扫描器的核心就是挂机无限扫描,虽然时间过去很久,现在回头看代码发现写的很垃圾,不过里面核心还是值得推荐,由此出现无限url采集,无限cms识别采集等等,并且将来加载到安全巡航实现全自动挂机刷洞生成报表

不在劳累情况下编码

很多时候为了实现一个功能,折腾到凌晨三四点,越写越乱看着就头大,这种情况下需要好好休息,让头脑冷静下来后,仔细思考就会发现很多问题迎刃而解。

调用第三方漏扫

他山之石,可以攻玉。比如SQL注入,模板的注入,如果自己不是很熟或者没有精力去维护一个种类的漏洞资源库的话,不妨直接使用第三方,直接调用nmap,sqlmap,awvs进行漏扫,然后对结果做一个接口维护清洗数据后保存到数据库。

使用第三方功能必然会让软件工程失去主动性和自由性,所以要考虑漏洞种类,数量,扫描策略等。

不要急于动手

当有了一个比较好的灵感,开始构架的时候,不要过度着急,构架完毕也不要马上动手。

因为很多时候,你不可能一次性完成完美的构架设计,肯定在某些地方有缺陷,当时又想不到。但是过上小半天或者一晚上又有要补充的地方。

灵感与知识来源

多上乌云漏洞库看看,每次看到别人提交的漏洞,需要思考如何才能使用工具实现自动批量化。

其次是漏洞复现,在复现的过程总了解漏洞产生的原因和如何验证。

心态良好

这个因人而异,当看到别人写出了大规模全方便易拓展的漏扫,心里又是羡慕又是焦虑,这种心态不行滴~要好好告诫自己:做人不要太攀比,踏踏实实做自己~

只要不死,慢慢学,要相信你终究会成为别人眼里的技术大牛的,最后的加油送给正在努力路上的你。

python漏洞扫描器编写_漏洞扫描器开发与设计的一点感悟相关推荐

  1. 漏洞 立即留言_漏洞挖掘小白入坑指南

    文章出处:FreeBuf 文章链接:http://www.freebuf.com/articles/neopoints/144967.html 写在前面的话在此之前,很多朋友都曾通过电子邮件在我直播的 ...

  2. web漏洞扫描器原理_漏洞扫描技巧篇 「Web 漏洞扫描器」

    0x00 前言 之前我们简单介绍了一下扫描器中爬虫的部分,接下来将继续介绍扫描器中一些我们认为比较有趣的技巧. 0x01 编码/解码/协议 在很久以前有人提问 AMF 格式的请求怎么进行检测,或者有什 ...

  3. python工程师干什么的_大数据开发工程师薪资待遇及招聘要求?

     目录: 大数据开发是干什么的? 大数据开发需要掌握哪些技术?学习路线如何? 大数据开发需要掌握数学知识吗? 大数据开发就业前景如何? 大数据开发工程师薪资待遇及招聘要求? 大数据开发是干什么的? 大 ...

  4. python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解

    本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...

  5. avws扫描出来的漏洞怎么利用_漏洞扫描利用

    声明:禁止用作非法目的,谢绝一切形式的转载. 在这里对OpenVas进行了简单的介绍.这篇文章着重介绍通过OpenVas扫描出来漏洞之后,如何利用这些漏洞达到获取被入侵机器"肉鸡" ...

  6. python公式如何编写_如何编写 Python 程序,资深Python大咖教你玩转Python

    如何编写Python程序,这从来就不是一件很难的事. 下面我教你保存和运行 Python 程序的标准步骤,如下: 对于 PyCharm 用户 1. 打开 PyCharm. 2. 以给定的文件名创建新文 ...

  7. python静态代码检查_想要开发一个供 Python 使用的静态类型检查项目

    不知道有没有类似项目,如果有的话请告诉我, 昨天发了个贴问了一下类型提示的循环导入问题,产生了一些发散式联想,能不能把现有的体系再升级一下做成一个自动检查项目,应该会挺有用的. 目前我司对于类型检查使 ...

  8. python flask api部署_使用flask开发api——部署flask,使用gunicorn+gevent模式的http server...

    使用flask开发api--部署flask,使用gunicorn+gevent模式的http server 用flask开发了服务端的api,记录部署上服务器的过程,以供后续使用. 安装python3 ...

  9. 漏洞挖掘 符号执行_漏洞挖掘新思路:fuzz+符号执行——driller

    driller 符号执行+fuzz漏洞挖掘思路 先看一段程序 int main() { config_t* config=read_config(); if (config==null){ puts( ...

  10. python讲师陈越_陈越-精湛课程设计与开发-诺达名师

    课程背景 俗话说:内事问百度,外事问Google.那么我们企业的事该问谁?当然是问自己人!对企业而言,自主课程开发的过程就是对工作经验的萃取过程和对自身知识的管理过程.然而,课程开发是一项复杂而艰巨的 ...

最新文章

  1. Xcode升级后插件失效的原理与修复办法
  2. 备份oracle中的大表
  3. CTFshow 信息收集 web8
  4. Bug总结:python语言中出现的import error错误的解决思路
  5. 单例模式源码分析(jdk+spring+mybatis)
  6. python测验7编程题_2020大学moocPython编程基础章节测验答案
  7. vscode安装python插件失败_vscode插件安装失败的解决方案
  8. python 把xml中含有特殊字段的部分提取出来_Python: 爬虫网页解析工具lxml.html(一)...
  9. 设置Eclipse自带Ant指定版本JDK和运行时参数
  10. rails mysql优化_Ruby on Rails中的MySQL性能
  11. uniapp创建电子签名
  12. 计算机网络操作系统的主要功能和类型,操作系统的五大管理功能和四大分类
  13. 爬虫千万条,守法第一条,爬虫不规范,亲人两行泪
  14. php 实现心芯图案,利用php输出不同的心形图案,php心形图案
  15. redis中数据倾斜问题的产生和解决方案
  16. 掌握销售谈判三大策略,开单成功率提升60%!
  17. tomcat报错 Unable to process Jar entry
  18. java 数据写入txt乱码_java写入文件是乱码
  19. 面试android开发工程师小结
  20. 对于大型公司项目平台选择j2ee的几层认识(二)

热门文章

  1. matlab调频信号,基于matlab的线性调频信号的仿真
  2. 20210311 plecs to file 功能
  3. 社交媒体坏了 — 来自社会化媒体峰会报告
  4. k2路由器linux系统,告别后门:斐讯K2路由器刷入华硕固件
  5. pythonfor杨辉三角,python实现杨辉三角 python实现杨辉三角的几种方法代码实例
  6. 排序算法(天勤数据结构高分笔记)
  7. 基于matlab仿真的功率因数测定方法研究,基于MATLAB的单相全控整流电路功率因数测定.pdf...
  8. 计算机工程工艺,中国计算机学会第十届计算机工程与工艺学术年会.pdf
  9. 高级Bash脚本编程指南
  10. BCNet实现PLC数据采集解决方案,BCNet