白帽子讲Web扫描(txt+pdf+epub+mobi电子书下载)


发布时间:2021-04-09 13:57:18

点击下载

作者:刘漩

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

白帽子讲Web扫描

白帽子讲Web扫描试读:

前言

随着互联网的高速发展,Web应用在其中所扮演的地位也越来越重要,因为很多业务都选择使用Web的形式来提供服务,但随之而来的Web安全问题也日渐凸显出来,企业往往会因此遭受巨大的损失,此时很多企业都会在 Web 应用上线前或运行中对其进行相应的安全测试来保证安全性,减少由于安全问题造成的损失。

通常而前,Web应用的安全测试技术主要有:黑盒测试和白盒测试,还有一种灰盒测试,它是介于黑盒和白盒之间的。这里我们主要说一下黑盒测试,它又被称为动态调试,这种方法主要是测试应用的功能点。它不需要分析内部代码,也不需要测试代码实现的逻辑。在黑盒测试过程中,只需要通过网页爬虫模拟正常用户访问Web应用的全部路径,然后基于探测的路径生成安全测试用例即可。在该过程中,被测站点往往被视为一个黑盒,此时不用关心其内部如何运行,用何种语前编写,只需依赖于Web应用的可用性。因此,黑盒测试常常是安全人员首选的测试方法,同时它具有实施性强、兼容性好,以及测试效率高等特点,因而得到了广泛的应用。

本书所讲的Web扫描器,属于黑盒测试的范畴,在Web应用安全测试中起着至关重要的作用,同时它的价值也是显而易见的。

对于企业建设来说,它可以帮助企业快速建立起常态、持续的安全扫描和监控体系,尽早发现安全问题并修复,从而节省人力成本和避免安全损失。

对于安全测试来说,它可以通过自动化的方式提高测试人员的效率及业务的覆盖面。

对于安全技术来说,Web 扫描器早已作为安全人员的必备工具,因此我们有必要了解其原理和思路,然后通过持续的安全研究和对漏洞库的积累打造属于自己的安全扫描器,提高安全能力。

因此,对于Web扫描器的学习和研究显得尤为重要。

本书适用的目标读者

甲方安全人员。

渗透测试人员。

安全测试人员。

安全开发人员。

技术负责人员。

Web扫描器开发人员。

对Web扫描器感兴趣的安全从业人员。

为什么写这本书

我还记得,在2014年年中的时候,我受邀参加上海的 QCon 大会,并在安全分会场上做了一场关于云WAF的演讲,会后博文视点的编辑找到了我,希望我可以写一本关于云WAF的书,经过慎重考虑,主要由于工作和时间的诸多不确定性,没敢贸然答应,此事只好作罢。

然而,时至今日,写书的想法却在心中越发强烈起来,我也深知写书不易,尤其是写一本技术类的书籍更难,它需要耗费大量的精力和时间去研究、调试、测试,以及论证。本书没有选择以云WAF 为主题,主要是因为现阶段它与公司的业务过于密切,而且由于近年来我的工作角色的转变,已基本没有负责WAF相关的事情,所以最终放弃了,但也因此有了新的选择。

在安全宝被百度全资收购后,我有幸加入了百度安全,转而负责公司对外的企业安全服务。由于工作的需要,我经常会去拜访企业客户。在这个过程中,发现甲方客户其实很少会像BAT那样把安全当成一种习惯来执行,大多数都是事后出现安全问题才会想到使用渗透测试或APP测试这类服务来帮助排查和解决问题。至于Web扫描器那就更惨了,几乎快被人遗忘了,主要是因为很多甲方人员用扫描器来检测漏洞的时候,经常不能发现高危的安全问题,时间一久就开始对Web扫描器的价值产生质疑。

其实Web扫描就好比日常生活中的健康体检,你需要对安全进行长期的监控和检测,只有把扫描当成一种习惯,同时真正建立起企业专属有效的扫描体系,把安全当成一种习惯来对待,你才能优于攻击者提前发现安全问题。

为了改变人们对扫描的一些误解,重新认识扫描特有的价值,所以,我决定写一本关于Web扫描的安全书籍。在写书之初,我就开始对之前自己所写的扫描类文章进行重构和整理,希望可以借此将更多有价值的内容呈现出来,同时让读者有更多的收益或启示。

扫描器环境

操作系统:Debian 8 x64 账号:imiyoo/anquanbao

扫描测试:LNMP 1.2+Wavesp 1.5

语前环境:Python 2.7.9

本书涉及的代码均以Python来实现,至于为什么选择Python语前?理由如下:

Python简单易学,上手很快,而且跨平台,可移植性强。

除了内置的库外,还有大量的第三方库,减少重复“造轮”工作。

约定

本书所提到的扫描器特指 Web 扫描器,为了便于内容简洁和避免读者误解,所以书中会统一使用扫描器来代替 Web 扫描器;同时阅读本书需要读者有一定的安全和开发基础,本书对一些比较基础的名称和技术并没有做太多的解释,读者可以通过百度等搜索引擎自行查阅。

由于时间关系,书中所涉及的相关资源暂无法全部上传,后面会陆续上传到笔者的GitHub上,读者可以在https://github.com/imiyoo2010上获取。

导读

全书共分为9章,内容之间有一定的关联性,所以建议大家最好从头到尾地阅读和学习。

第1章为扫描器基础,主要介绍扫描器的一些基础和必备知识,帮助读者更快地进入扫描器的世界并开始进行有目标的学习。

第2章和第3章分别为Web爬虫基础和Web爬虫进阶。爬虫作为Web扫描器的重要组成部分,内容非常多,这里分两章来介绍,Web 爬虫基础主要介绍 Web 爬虫的一些必要的理论知识;Web爬虫进阶则重点关注功能原理和代码实现,并对业界流行的Web 2.0爬虫进行思考和实践。

第4章为应用指纹识别,它也是Web扫描器必备的一个功能组成部分,主要介绍应用指纹识别的原理及实践。

第5章为安全漏洞审计,它是Web扫描器的核心,也是本书的重点内容之一,主要分为通用漏洞审计和Nday/0day漏洞审计,通过对漏洞进行场景化分析,由浅入深地介绍安全漏洞审计的原理和实践。

第6章为扫描器进阶,主要从整体的角度来设计和实现Web扫描器。

第7章为云扫描,主要介绍云扫描的知识及相关技术的具体实践。

第8章为企业安全扫描实践,主要介绍企业常用的扫描场景及实践。

第9章为防御,主要介绍扫描器的常见防御方式和手段。

致致

我相信每一本书的完成都少不了身边亲人和朋友的支持,需要感致的人太多了。

感致我的老婆,为我生了一个聪明可爱的小子,并一直操劳着这个家,让我有足够的时间和精力来写作,老婆辛苦了,我爱你。

感致我的父母,他们不计回报地付出和关爱着我,只求我健康成长。

感致我所在的公司百度,百度是一家以技术为导向的公司,宽松的工作环境和良好的技术氛围,让我很快地成长起来。

感致博文视点的编辑及其团队,在书籍出版的过程中,他们给了我很多专业的意见和帮助。

特别感致冯景辉为本书写推推序,他是一个充满激情且令人敬佩的领导,能邀请到他为本书写序,我十分荣幸。在公司内部我们都喜欢称他为冯老板,他敏锐的洞察力和成熟的方法论,以及对问题抽丝剥茧的能力,让我们受益良多。

还有感致那些在背后给我支持和帮助的朋友、同事,以及领导,他们分别是:刘文杰、石祖文、王胄、周永成、刘焱、耿志峰、李婷婷、程岩、马哲超、陈燕。

最后感致所有对本书做出贡献的人,没有你们,这本书不会这么快面世。

致致你们!

本书的写作大部分是我利用业余时间来实践和完成的,匆忙中难免会有一些问题或错误,欢迎各位读者提出意见和建议,笔者不胜感激。刘漩2017年2月27日

轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达本书页面。

提交勘误:您对书中内容的修改意见可在 提交勘误 处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。

交流互动:在页面下方 读者评论 处留下您的疑问或观点,与我们和其他读者一同学习交流。

页面入口:http://www.broadview.com.cn/31477第1章扫描器基础本章先来简单地介绍一下Web扫描器。1.1什么是Web扫描器

百度百科的定义:Web 扫描器可以自动地检查Web 应用程序的安全弱点和风险,它主要通过探测和分析Web应用的响应,从而发现其中潜在的安全问题和架构缺陷。

从上述的定义中,我们可以看出扫描器的两个特点:

自动检查Web应用程序的安全弱点和风险

主要通过探测和分析Web应用的响应来发现安全问题和架构缺陷

这两个特点告诉我们,Web扫描器其实是一种自动化的安全弱点和风险检测;它的工作方式和原理主要是通过分析HTTP(s)请求和响应来发现安全问题和风险。

通常情况下,扫描器的使用人群可以分为两类,一类是产品测试人员,另一类则是安全测试人员。但是他们对扫描器的功能需求和结果诉求却是完全不一样的,因此我们有必要了解一下这两种不同的使用人群。

1.从产品测试人员角度看

扫描器主要是用来对Web应用程序进行扫描检测,根据Web漏洞的常见签名特征,对Web应用进行全面的安全检测,提前发现可能存在的漏洞,做到事前发现和修复。扫描器作为黑盒自动化测试工具,可以帮助我们在QA环节快速发现业务系统的安全缺陷并修复,在产品快速迭代的同时,保证业务上线前的安全。

2.从安全测试人员角度看

在对一个目标进行渗透测试时,首先需要进行信息收集,然后再对这些信息进行漏洞审计。其中,信息收集的目的是最大化地收集与目标有关联的信息,提供尽可能多的攻击入口;漏洞审计则是对这些可能的攻击入口进行安全分析和检测,来验证这些攻击入口是否可以被利用。由于这两个环节的工作更多是具有发散性的,因此人工的工作量就会非常大。这个时候就我们需要用到Web扫描器,其实它的目的就是尽可能地帮助我们自动完成这两个环节,方便安全测试人员快速获取目标可供利用的漏洞以便进行后续渗透工作。

小结:

在这里,我们可以看到,虽然两种使用人群都以自动发现Web应用的安全隐患为目的,但站在不同的角度来看,两者的方向和意义却是完全不同的,而这不同的角度当然会直接影响到扫描器的具体功能和实践,鉴于笔者之前的经历更多的还是在乙方做安全工作,所以本书的内容也会选择从安全测试人员的角度进行讲述。1.2扫描器的重要性

扫描器的重要性分为三方面,下面分别进行讲解。

1.业务上线前的安全保障

随着企业的发展和壮大,公司内部的业务线也会随之变多,而单纯依靠人工检测肯定没有办法完全覆盖到,因此我们需要引入安全扫描能力,它能够为业务在上线发布前进行自动化扫描和检测,从而可以把烦琐的安全检测工作通过扫描器自动完成,这样不仅可以减少人工的工作量,同时还可以极大地缩减检测时间,保障业务顺利发布和上线。

2.业务运行中的安全监控

安全其实是一个动态的过程,因此对业务持续地安全监控也是必不可少的,我们可以通过扫描器对业务运行中的日志或流量进行动态实时的扫描分析及监控,还可以与企业内部的防火墙或WAF进行协同联动,从而可以达到事中的安全阻断,保障业务运行中的安全。

3.业务运行中的安全预警

互联网中许多开源组件经常会被研究员爆出 0day 漏洞,在这个时候,我们就可以通过扫描器对企业中所有暴露在公网上的资产进行组件的探测识别和漏洞验证,这样就可以快速定位到风险资产和目标,并能够对该漏洞进行修复和升级,从而有效地降低 0day 漏洞给企业带来的安全风险。1.3扫描器的类型

扫描器的类型其实并没有严格的划分标准,这里为了便于读者的理解和记忆,笔者将扫描器按照使用场景进行划分,可分为三种类型,下面分别进行介绍。

1.主动型

主动型的意思就是说,当对目标进行扫描时,扫描请求是主动发起的,所以称之为主动型。它们不受产品形态的约束,既可以是软件,也可以是硬件,常见的软件代表有:Acunetix WVS、Nessus Vulnerability Scanner等,它们在主机上成功安装后,就可以对目标进行安全扫描和测试。硬件代表有:绿盟极光等,它们需要部署在网络中,才能对目标进行相应的安全扫描。

其特点如下。

优点:功能强大。

缺点:需要安装或部署,同时存在单机性能瓶颈,相比于云端型不易于横向扩展。

注意:

这里不是说不能横向扩展,而是说不易于,因为这种主动型扫描,不是为大规模扫描而诞生的,它可以理解为云端型扫描节点,如果在主动型基础上进行横向扩展,我们需要额外的开发工作量,比如扫描结果的集中存储、任务的合理调度等,而并不能像云端型那样直接增加扫描节点。

2.被动型

被动型,它有一个明显的特点,就是不会向目标发送扫描请求,而是通过中间代理或流量镜像的方式,通过网络流量的真实请求去发现和告知可能存在的安全缺陷或漏洞。因此它有两种常见的工作模式,一种是代理模式,这种模式扫描器会以代理的形式而存在,这样真实的流量就会流经代理扫描器,此时就可以进行被动的分析和检测,不会对目标产生新的访问压力;另一种则是旁路型,它主要以硬件形式为主,通过获取待检测目标的流量镜像,对其中的HTTP流量进行会话重组和协议解析,最后利用内置的安全特征和动态沙盒等技术手段以被动的方式发现潜在的攻击和风险。

其特点如下。

优点:不会产生任何新的流量,不会对扫描目标产生额外的扫描风险。

缺点:它是以被动的方式去检测和发现的,属于事中的对抗和监控,并不能有效地将安全风险在事前扼杀,一旦攻击绕过去,无法及时进行止损。

3.云端型(SaaS)

云端型的扫描器,大多采用B/S结构,用户通过浏览器就可以直接对目标进行安全扫描,它既不需要安装,也不需要部署,即可使用安全扫描的服务。这类扫描器,其实是将扫描器的实体搬到了云端,通过云端的服务器来对目标进行扫描,扫描请求则是由云端服务器直接发起的。常见的云端型扫描的代表有:百度的云扫描、360的WebScan和安赛的AIScanner等。

其特点如下。

优点:使用方便,具有跨平台的特点,同时易于横向扩展,可用于大规模扫描。

缺点:云端的实现较为复杂,难度也较大,比如:云端的任务分发和调度、云端资源的高效分配和利用,以及云端设备的监控和报警等相关的云端技术实践。1.4常见的扫描器(扫描器的示例)

下面介绍几种常见的扫描器。

1.Acunetix Web Vulnerability Scanner(http://www.acunetix.com/)

Acunetix Web Vulnerability Scanner 是一款国外知名的 Web 应用安全扫描器,运行在Windows平台,可以检测Web应用程序中的SQL注入漏洞、XSS跨站脚本漏洞、敏感信息泄露等常见 Web 漏洞。它包含收费和免费两种版本,其安装和使用也非常简单,但功能却非常强大,这里就不详细介绍了,感兴趣的读者可以自行学习和研究。

2.Burp Suite(https://portswigger.net/burp/)

Burp Suite其实是一款代理型扫描和攻击集成平台,依赖于Java运行环境,可跨平台运行,它位于浏览器与目标Web服务器之间,主要进行HTTP(s)信息传递,同时可以对流经的HTTP(s)请求/响应进行拦截、查看和修改。

3.Tenable's Passive Vulnerability Scanner

Tenable's Passive Vulnerability Scanner是一款被动型的扫描器,支持Windows、Linux和Mac三种操作系统平台。它以一种非入侵性的方式,提供持续的实时网络分析和监控。它通过监控和分析网络流量,可以快速地确定拓扑结构,主机,服务,漏洞和应用程序,实时地查看当前的安全状态和目标存在的漏洞,如下图:

4.TeyeScan(真眼扫描器)

TeyeScan是笔者自己独立开发的一款云端型扫描器,之前叫WatScan,后更名为TeyeScan,本书的内容主要是基于该扫描器的实践进行展开的。

我们可以看到,云端型的扫描器使用非常简便,通过在云端服务平台上注册账号,然后提交任务目标进行扫描检测即可,待扫描结束后就可以在线查看对应的扫描报告,如下:

小结:

本节按照扫描类型各选取了一款扫描器,目的是让读者能有一个感性的认识,还有很多其他知名的扫描器,如:HP的WebInSpect、IBM的AppScan等,就不在此罗列了,感兴趣的读者可以自己去体验和对比。为了保障自身业务的安全,其实很多互联网公司都研发了自己的扫描器,比如,百度内部的扫描器,我们称之为“扫雷”。在实际的对比分析中,它的漏洞召回率和准确率都是明显优于竞争对手的。同时对资源的复用率也达到了极致,充分利用内部机器的闲散计算资源进行扫描检测。百度凭借这些独有的优势,支撑着内部所有的业务线。1.5扫描器评测

既然有这么多的扫描器,那么什么样的扫描器才算是好的扫描器?这就需要有一个评测的标准,国外有一个专业的扫描器评测网站“sectoolmarket”,它会从漏洞的准确率、覆盖面、错误率和功能特点等多个维度对扫描器进行全面评测,同时它还发布了供扫描器评测的漏洞测试集项目——Wavsep。

从网站的介绍来看,最后一次评测更新时间是2016/02/07。下面列举了许多已经评测过的扫描器,具体的评测效果单击扫描器名即可看到,由于页面内容较多,这里只截取如下部分进行说明。

更多详细的信息,读者可以通过访问链接 http://www.sectoolmarket.com/price-and-feature-comparison-of-web-application-scanners-unified-list.html来获取。1.6漏洞测试平台

漏洞测试平台,主要用来测试扫描器的功能特点、漏洞的准确性,以及覆盖率,并根据这些结果来评估扫描器整体的质量和能力。我们可以利用它来发现扫描器的不足和缺陷,从而进一步完善和改进扫描器的能力。这里介绍一个常见的第三方扫描器漏洞测试平台。

Wavsep(Web Application Vulnerability Scanner Evaluation Project)是一个开源的Web应用程序扫描器评估项目,包含漏洞的Web应用程序,目的是帮助测试Web应用漏洞扫描器的功能、质量和准确性。Wavsep收集了很多独特的包含漏洞的Web页面,用于测试Web应用程序扫描器的多种特性。

目前Wavsep支持的漏洞类型包括:

*Reflected XSS:66 test cases,implemented in 64 jsp pages (GET&POST)

*Error Based SQL Injection:80 test cases,implemented in 76 jsp pages (GET&POST)

*Blind SQL Injection:46 test cases,implemented in 44 jsp pages (GET&POST)

*Time Based SQL Injection:10 test cases,implemented in 10 jsp pages (GET&POST)

其Github地址为https://github.com/sectooladdict/wavsep。1.7扫描环境部署

扫描器关联的内容比较多,因此涉及的环境比较多。在这一节中,主要以扫描环境的搭建部署为主。扫描环境中需要两台机器进行开发和测试,其中一台作为测试环境,主要用来部署扫描器评估项目,提供漏洞靶场,验证扫描器的漏洞检测功能;另一台则作为扫描器的开发和调试环境,在这台机器上进行扫描器开发和调试工作。1.7.1 测试环境

Wavsep项目主要用来对Web应用扫描器进行评估,与需求比较吻合,因此,这里就选择用它来作为漏洞测试环境,具体的安装步骤如下:

1.安装JDK(1)下载JDK

访问链接http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html,在页面中选择对应的版本,笔者这里选择Linux x64进行下载,如下:(2)解压并安装(3)配置Java环境

设置环境变量:

在文件末尾处添加:

并保存。(4)配置生效,验证环境,输入下面命令,获取版本信息,即表明安装成功。

2.安装Tomcat

执行安装命令,如下:

3.安装MySQL

执行安装命令,如下:

4.安装Wavsep(1)切换到tomcat8的webapps目目下,部署Wavsep项目代码,如下:(2)访问链接http://localhost:8080/wavsep/wavsep-install/install.jsp。

按照页面提示进行配置,安装成功后如下图:1.7.2 开发环境

下面开始搭建扫描器所需要的环境,由于这里笔者所要介绍的扫描器是基于 Python 语前进行构建的,因此需要安装Python开发所需要的基本环境及相应的功能模块。

1.Python环境

Python有两个主要的版本,一个是Python 2.x,简称Python 2;另一个是Python 3.x,简称Python 3。由于Python 3在设计时并没有考虑向下兼容的问题,导致很多早期Python程序或模块无法在Python 3.x上正常运行。考虑稳定性和学习成本的因素,我们选择Python 2.x版本进行实践,其中在Debian 8系统中默认的Python环境为Python 2.7.9,因此笔者就选择它作为扫描器的语前开发环境。

2.IDE环境

由于扫描器的功能较多,在开发过程中会涉及编码、调试等相关工作。为了提高开发效率,需要选择一款集成的Python开发环境,笔者常用的IDE环境主要以Pycharm和Eclipse+PyDev为主,其实两者功能差不多,由于Pycharm的安装配置相对简单,因此这里选择Pycharm作为开发的IDE环境,读者直接从官网下载对应平台的版本进行安装即可。

官网地址:http://www.jetbrains.com/Pycharm/download/#section=linux。

运行后如下图:

3.pip包管理工具

pip是一个安装和管理Python包的工具,是easy_install的替代工具。它可以省去很多手工安装的麻烦,让我们更加方便地管理第三方模块。这里使用 Debian 的应用程序管理器进行安装,执行下面命令:

成功安装后,显示如下:

4.PyQt

Qt是一个基于C++的跨平台开发框架,它既可以开发GUI程序,也可以开发非GUI程序,功能十分强大。为了让Python能够直接调用Qt,所以就选择用PyQt。

其实PyQt是Pyhon编程语前和Qt库的绑定,PyQt作为一组Python模块的实现,有超过300个类和超过6 000个函数方法,同时它还是跨平台的工具包,可以在所有的主流操作系统上运行。由于有大量可用的类,所以它被分成多个模块显示,如下图:

我们主要用到其中的 QtWebKit 模块,它实现了开源浏览器引擎 WebKit 的浏览器引擎的封装。

官网地址:https://riverbankcomputing.com/software/PyQt/download。

中文文档:http://www.qaulau.com/books/PyQt4_Tutorial/index.html。

由于PyQt是基于Qt库进行的Python封装,因此首先需要安装Python和Qt的相关库。流程如下:(1)安装Python和Qt的开发模块(2)下载SIP进行安装(3)下载PyQt4进行安装

5.WebKit

WebKit 是一个开源的浏览器引擎,它由三部分组成,WebCore 排版引擎核心、JSCore 引擎和WebKit移植层,其中WebCore和JSCore均是从KDE的KHTML和KJS引擎衍生而来的。WebKit高效稳定,兼容性好,且源码结构清晰,易于维护。苹果的Safari和Google的Chrome都是基于WebKit引擎开发的浏览器。本书第3章的Web 2.0爬虫也是基于WebKit浏览器引擎来实现的。

6.Ghost.py

Ghost.py是一个使用Python编写的封装了WebKit的网络工具,能够方便我们对浏览器引擎进行交互操作,同时对于浏览器事件的处理有很大的扩展性,对于Web 2.0页面的爬取很有帮助。Web 2.0 爬虫的实现需要依赖于该模块。由于最新版本已经做了很大的改动,所以这里我们选择源代码进行安装。

官网地址:http://jeanphix.me/Ghost.py/。

官方文档:http://ghost-py.readthedocs.io/en/latest/。

执行下面命令即可安装Ghost.py:

7.Memory_profiler

Memory_profiler是 Python 中的一个第三方内存监控模块,它主要用来基于逐行测量代码的内存使用,但是使用它会让代码整体运行变得更慢。

下面利用pip安装Memory_profiler,执行命令如下:

运行成功界面如下:

另外,建议安装psutil包,这样Memory_profiler会运行得快一点,执行命令如下:

运行成功界面如下:

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载