网站弱点扫描器核心技术研究一

之前一直都是在转载被人的一些网络安全相关的文章,最近有空了就写写之前完成的一个项目的核心技术,对网络安全或是弱点扫描器有兴趣的可以和我一起探讨这方面的知识。

ps:当我设计完这款扫描器的时候俨然发现我已经成为一名会写代码的黑客了,不对,应该是白帽子,因为我不会去做坏事,嘿嘿。。。。

设计一款网站弱点扫描器的必要基础是你必须非常熟悉http协议和相关的库(如urllib、urllib2,由于系统采用纯python开发,网络方面主要用到的就是这两个库。),值得说明的是这个系统我借鉴一些开源项目和商业项目的设计,并做了大量的优化,现在整体性能在同类产品中也表现不错,我在这里会大致阐述里面涉及到的核心技术和核心思想,也会对设计的一些不足的地方进行说明,因为归根结低我更喜欢设计而不是漏洞挖掘或是黑客,所以对漏洞的介绍会简单说明,如果大家有兴趣的话我会另写文章去专门介绍各类漏洞的检测方法和利用方法。由于扫描器的开发周期比较长,所有的设计和编码均由我一个人完成,里面的一些我可能考虑的不够完美,希望能和有这方面兴趣的人一起探讨。

网站扫描就是利用web扫描技术对网站进行一次完整的安全评估,设计主要包含扫描引擎、扫描策略、引擎服务器、UI等模块组成,主要模块描述如下:

1.      扫描引擎采用双进程模型,分别为爬虫进程和扫描进程,爬虫进程主要负责由用户配置的参数智能的在指定网站上抓取链接或请求,然后提交给扫描进程,扫描进程则依据配置的策略和抓取的请求进行扫描,找出该请求存在的安全风险。

2.      扫描策略:一个扫描策略对应着一个脚本,一个扫描策略可能检测多种类型的漏洞,可能对应着一个扫描规则库,目前的扫描策略已达到50多条,已覆盖主流的web漏洞、服务器漏洞、cms漏洞、网页挂马等,例如常见的sql注入、xss、strut2远程代码执行、信息泄漏等等。

3.      扫描引擎采用跨平台的boost asio实现,扫描扫描任务同时执行时则由引擎服务器负责调度。

网络爬虫的核心技术:

网络爬虫作为扫描引擎的发动机,它负责按策略抓取页面上的url,包括get和post等请求。核心点包括对各级域名及子域的过滤、对自定义404页面的判断、对抓取算法的设计、数据存储时对内存和磁盘处理、各种网络异常和超时的处理、对首页跳转的处理、对各种类型页面的解析和链接提取、对页面和参数的去重、抓取后台需要登录的页面的处理、其他额外需要考虑的还包括https证书处理、basic、ntlm等http认证、http协议中gzip的使用、keeplive长连接的处理、dns缓存、multipartpost上传、http代理、包括本地缓存的请求优化等。当然考虑更多的话应该还包括javascript的深度解析,对于一些通过js或ajax动态生成的页面可能采用该技术。

扫描进程作为扫描进程的核心之一,它主要负责对所有的策略的调度执行,策略不同其执行方式可能也会有所不同,一些策略可能只需要执行一次或多次,有些策略可能需要每个请求或特殊的请求才执行一次,策略之间可能会存在依赖关系。当策略发现一个web漏洞之后会将所有漏洞的详细信息提交通过接口提交给扫描进程,扫描进程还负责和引擎服务器进行通信,通信方案中定义了各种类型的数据包,例如扫描状态、扫描进度、弱点信息等等。扫描策略采用插件化模型设计,通过定制插件便可实现对相应漏洞的扫描功能。扫描策略这里大致枚举下:跨站脚本攻击、SQL注入、SQL盲注、远程命令执行、WebDAV不安全配置、WebDAV远程代码执行、任意文件上传、目录穿越、Struts2远程代码执行、表单绕过、文件包含、openssl
heart bleed、Spring远程代码执行、Spring表达式JSP属性处理信息泄露、IIS短文件和文件夹泄漏漏洞、可利用端口、信息泄漏、cms指纹识别等等。

引擎服务器封装了用户层的各种接口,包括引擎启动、各种类型的回调接口(如扫描状态回调、弱点回调、命令行回调、错误回调等等),我将一个服务器的所有处理过程都封装在了一个dll里面,当初这样的设计就是为了模块化、方便扩展,可设计成单独的扫描服务并后期采用bs结构,UI部分采用duilib实现,就不赘述了。

所有的策略通过插件实现对于写写数据采集的软件完全可以在此扫描器的基础上通过定制策略来实现,一款好的弱点扫描器应该有完整的日志排错功能、网络很复杂,可能就会出现你预料不到的错误,你应该能根据日志快速的找出错误原因并改进优化,对漏洞的误报和漏报控制在一定范围内。唯一不足的地方在于对动态js的解析能力较弱,具体可参考http://demo.aisec.cn/demo/aisec/中各种动态页面生成的方式,我用虚拟浏览器对某个url的访问时间明显高于urllib2的请求时间,直接拖慢了引擎的抓取速度。虽然对于js生成的页面中的请求抓取不存在问题,但是ajax的请求还是较难抓到。下一版本的扫描器将会考虑加入web2.0的高效抓取功能,下面附一张对某网站的扫描结果。

图1

图2

图3

时间: 2024-08-08 18:01:14

网站弱点扫描器核心技术研究一的相关文章

Win7下的网站发布的小小研究

今天闲来无事研究了一下网站的发布,之前一直以为很难的样子,当真正实现了就觉得他也不过如此,现在来把我的研究结果分享一下,如果有问题望大家提出来! 首先发布网站我们要子啊本地的电脑上安装IIS,这个就不多说了,百度一下一大堆:现在说一下建网站的步骤: 打开“控制面板”-“管理工具”-Internet信息服务管理器(没有安装IIS没有的哦),如下图操作: 然后弹出对话框,输入网站的名字,选择网站的物理路径 我这里是发布到本地计算机,所以IP写的是我自己电脑的IP 点击“确定” 最后一步就是打开我们的

如何分析网站弱点

今天我们来谈谈作为一个SEO优化人员该如何去做好自己网站的搜索引擎优化.如果你已经有概念但还不知道该怎么做.那么作者今天就带你去分析网站的弱点.在开始正题之前先跟大家谈一下收录问题,如果收录没有解决的话,那就无从分析网站的弱点了.关于如何解决收录问题,我相信很多人已经有自己独特的方式方法了.我也就不老生常谈了,下面就先说说我自己的方法吧!1.查看服务器日志(1)网站蜘蛛每日抓取量(2)某个目录页的单页面蜘蛛下载时间(3)某个目录页蜘蛛每日的访问次数2.观察网站的响应速度(可以通过百度统计得知)3

c#写一个网站后台扫描器

主要分成了那么几个步骤: 1.HTTP状态码 2.字典的导入 3.显示在listview控件当中 第一步: 先来实现HTTP状态码200的判断 try { req = (HttpWebRequest)WebRequest.CreateDefault(new Uri("http://www.baidu.com/fuck.fuck")); req.Method = "GET"; req.Timeout = 2000; res = (HttpWebResponse)req

jfinal北京-赛车网站源码搭建研究之核心组件Plugin

相比较北京-赛车网站源码搭建于其他核心组件,jfinal对Plugin的处理可谓是相当简洁了.这一点从Plugin组件的核心接口IPlugin的定义中可见一斑. 定义 /** IPlugin*/public interface IPlugin {boolean start();boolean stop();} 1234567 对于Plugin,jfinal给予了足够的地位--顶级packagecom.jfinal.plugin.需要注意到的一点就是plugin机制中,jfinal在其中只负责pl

[原创]Python入门到简单网站目录扫描器编写(上)

1.字符串,整型,浮点型.区别以及用法 |------字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 可以不严格的说,你可以认为引号包括的,都属于字符串! 下列代码输出结果一样 1 >>> print 'Hello,World' 2 Hello,World 3 >>> print "Hello,World" 4 Hello,World 创建字符串,只要为变量分配一个值即可,也就是赋值. 1 >&g

利用HTTP Cache来优化网站

原文地址: http://www.cnblogs.com/cocowool/archive/2011/08/22/2149929.html 对于网站来说,速度是第一位的.用户总是讨厌等待,面对加载的Video和页面,是非常糟糕的用户体验.所以如何利用Cache来优化网站,值得深入研究. 什么是缓存? 缓存是一个到处都存在的用空间换时间的例子.通过使用多余的空间,我们能够获取更快的速度.用户在浏览网站的时候,浏览器能够在本地保存网站中的图片或者其他文件的副本,这样用户再次访问该网站的时候,浏览器就

小白日记15:kali渗透测试之弱点扫描-漏扫三招、漏洞管理、CVE、CVSS、NVD

发现漏洞 弱点发现方法: 1.基于端口服务扫描结果版本信息,比对其是否为最新版本,若不是则去其 官网查看其补丁列表,然后去逐个尝试,但是此法弊端很大,因为各种端口应用比较多,造成耗时大. 2.搜索已公开的漏洞数据库,但数量大. ##其中会有漏洞利用代码,如:https://www.exploit-db.com/ [kali集成] [email protected]:~# searchsploit tomcat -------------------------------------------

网站渗透工具大全

一. 基于网站的渗透 1.名称:Acunetix Web Vulnerability Scanner 6 功能:网站漏洞扫描器. 平台:Windows 2.名称:IBM Rational AppScan 7.8 功能:网站漏洞扫描器. 平台:Windows 3.名称:Jsky 功能:网站漏洞扫描器. 平台:Windows 4.名称:DTools 功能:阿D的多功能入侵工具,带扫描.植马等. 平台:Windows 5.名称:wepoff 功能:网站漏洞扫描器. 平台:Linux / Unix 6.

网站搭建知识概述

这个寒假结束了,回头想一想做了哪些事情,其中有一件就是搭建了这个网站,虽然写这篇文章的时候域名正在备案网站还未开放.我想和大家分享一下网站搭建和编程的一些知识 小白科普:什么是网站 科研项目的研究中,数据传输是必不可少的,数据在科研人员之间最好是共享的,大量的计算在计算机上进行,于是人们希望数据从一台计算机传输到另一 台,便于科研的进行.之后,计算机与计算机之间的互联成为了网络,大量的数据穿梭在电路之中,往返于计算机之间.科技的成果应该是大家共享的,于是普通人 们也希望拥有一台计算机,也希望使用