新書推薦:
《
甲骨文丛书·消逝的光明:欧洲国际史,1919—1933年(套装全2册)
》
售價:HK$
277.8
《
剑桥日本戏剧史(剑桥世界戏剧史译丛)
》
售價:HK$
207.0
《
中国高等艺术院校精品教材大系:材料的时尚表达??服装创意设计
》
售價:HK$
78.2
《
美丽与哀愁:第一次世界大战个人史
》
售價:HK$
147.2
《
国家豁免法的域外借鉴与实践建议
》
售價:HK$
188.2
《
大单元教学设计20讲
》
售價:HK$
78.2
《
儿童自我关怀练习册:做自己最好的朋友
》
售價:HK$
71.3
《
高敏感女性的力量(意大利心理学家FSP博士重磅力作。高敏感是优势,更是力量)
》
售價:HK$
62.7
|
編輯推薦: |
《白帽子讲Web扫描》的关键词:Web 2.0爬虫,扫描设计,漏洞审计,云扫描,企业扫描,扫描反制。
|
內容簡介: |
Web扫描器是一种可以对Web应用程序进行自动化安全测试的工具,它可以帮助我们快速发现目标存在的安全风险,并能够对其进行持续性安全监控。本书详细讲述了Web扫描器的概念、原理、实践及反制等知识,笔者凭借多年的安全工作经验,站在安全和开发的双重角度,力求为读者呈现出一个完整的Web扫描知识体系。通过对本书的学习和实践,它可以让你快速建立自己的Web扫描体系,提高安全基础能力。
|
關於作者: |
QCon大会讲师,分享主题为云WAF。就职于百度安全部门,负责公司对外的企业安全服务。对Web安全,安全扫描等有较多的积累。
|
目錄:
|
目录
第1章扫描器基础1
1.1什么是Web扫描器1
1.2扫描器的重要性2
1.3扫描器的类型3
1.4常见的扫描器(扫描器的示例)4
1.5扫描器评测8
1.6漏洞测试平台9
1.7扫描环境部署9
1.7.1测试环境9
1.7.2开发环境12
第2章Web爬虫基础19
2.1什么是Web爬虫19
2.2浏览器手工爬取过程19
2.3URL21
2.4超级链接22
2.5HTTP协议(RequestResponse)23
2.5.1HTTP请求23
2.5.2HTTP响应24
2.6HTTP认证25
2.6.1Basic认证(基本式)26
2.6.2Digest认证(摘要式)27
2.7HEAD方法29
2.8Cookie机制29
2.9DNS本地缓存31
2.9.1浏览器缓存31
2.9.2系统缓存32
2.10页面解析33
2.11爬虫策略34
2.11.1广度优先策略34
2.11.2深度优先策略34
2.11.3最佳优先策略(聚焦爬虫策略)35
2.12页面跳转35
2.12.1客户端跳转36
2.12.2服务端跳转37
2.13识别404错误页面38
2.14URL重复URL相似URL包含39
2.14.1URL重复39
2.14.2URL相似39
2.14.3URL包含39
2.15区分URL的意义40
2.16URL去重40
2.16.1布隆过滤器(Bloom Filter)41
2.16.2哈希表去重41
2.17页面相似算法42
2.17.1编辑距离(Levenshtein Distance)42
2.17.2Simhash43
2.18断连重试43
2.19动态链接与静态链接43
第3章Web爬虫进阶44
3.1Web爬虫的工作原理44
3.2实现URL封装45
3.3实现HTTP请求和响应47
3.4实现页面解析58
3.4.1HTML解析库58
3.4.2URL提取59
3.4.3自动填表66
3.5URL去重去似67
3.5.1URL去重67
3.5.2URL去似去含73
3.6实现404页面识别75
3.7实现断连重试77
3.8实现Web爬虫78
3.9实现Web 2.0爬虫83
第4章应用指纹识别94
4.1应用指纹种类及识别94
4.2应用指纹识别的价值95
4.3应用指纹识别技术96
第5章安全漏洞审计102
5.1安全漏洞审计三部曲102
5.2通用型漏洞审计103
5.2.1SQL注入漏洞103
5.2.2XSS跨站漏洞111
5.2.3命令执行注入120
5.2.4文件包含漏洞129
5.2.5敏感文件泄露136
5.3Nday0day漏洞审计146
5.3.1Discuz!7.2 faq.php SQL注入漏洞147
5.3.2Dedecms get webshell漏洞150
5.3.3Heartbleed漏洞(CVE-2014-0160)153
5.3.4PHP multipartform-data远程DDoS(CVE-2015-4024)157
第6章扫描器进阶160
6.1扫描流程160
6.2软件设计163
6.3功能模块164
6.4软件架构165
6.5数据结构166
6.6功能实现167
6.6.1IP端口扫描和检测(端口模块)167
6.6.2端口破解模块170
6.6.3子域名信息枚举172
6.6.4文件、目录暴力枚举探测(不可视URL爬取)175
6.6.5扫描引擎176
6.7扫描报告180
6.8扫描测试182
第7章云扫描185
7.1什么是云扫描185
7.2云扫描架构185
7.3云扫描实践187
7.3.1Celery框架188
7.3.2扫描器Worker部署189
7.3.3云端调度193
7.4云扫描服务199
第8章企业安全扫描实践202
8.1企业为什么需要扫描202
8.2企业扫描的应用场景202
8.2.1基于网络流量的扫描202
8.2.2基于访问日志的扫描208
8.2.3扫描的应用场景比较217
第9章关于防御218
9.1爬虫反制218
9.1.1基于IP的反爬虫218
9.1.2基于爬行的反爬虫221
9.2审计反制223
9.2.1云WAF223
9.2.2云WAF的价值223
9.3防御策略225
附录A227
附录B229
|
內容試閱:
|
推荐序
非常荣幸受刘漩的邀请为本书写推荐序。
刘漩是安全宝第一位安全工程师,也是早期WAF规则的主要维护者,这六年多来,他一直在Web安全的最前线与黑客做斗争,从防御到漏洞挖掘,都有着丰富的经验,也正是因为如此,他眼中的扫描技术有着更为系统化的视角。
纵观网络安全的发展历史,扫描器是最早出现的工具,从著名的开源实现Nmap,到国人为之骄傲的流光FluXay,都是端口扫描的利器。而Web安全领域里的扫描器虽然原理类似,但实现却更为复杂,需要考虑扫描频率、扫描深度、爬虫对于HTML的解释能力,还要不断地积累POC。
记得我最早使用过的扫描器是IBM的AppScan,其爬取能力很强,但扫描速度却奇慢无比,基本上对URL要尝试所有扫描特征,最后还需要从大量的漏洞中去伪存真。
扫描器也是百度安全团队最早开发的工具之一,百度公司有数百个产品线,每天的发布量数不胜数,如果没有一个高效的漏洞扫描,安全几乎无从谈起。无论是新上线的业务,还是当出现0day时的大规模临检,扫描已经成为例行化工作。扫描结合被动的URL发现,目前已经成为最大的漏洞来源,同时扫描与工单系统联动,完成派单、巡检、复检也成为现代安全管理自动化流程的一部分。
扫描已经成为所有互联网业务中必不可少的安全工作。这本书将系统化地为读者讲解扫描原理与实现方法,我相信无论你是甲方安全工程师,还是乙方安全服务人员,都将受益匪浅。
百度云安全技术总监,百度云加速总负责人
冯景辉
序
我的安全路
本人第一次接触安全是在大学期间,有一次无意中读到室友买的一本《黑客防线》杂志,立刻就被里面的黑客技术深深吸引,从那以后,我就开始疯狂学习安全知识,而那时候大学还没有设立类似的课程,只能靠自己独立钻研,一方面我借助安全杂志学习入侵实践知识,另一方面则泡在图书馆里翻阅各类与安全相关的书籍补充理论知识,成长非常快。
但在大学毕业的时候,我却并没有选择进入自己感兴趣的安全类公司,反而进入了一家大型跨国公司,在里面做了一年的软件测试工作,感觉这段经历对我最大的改变就是,养成了喜欢用自动化方式去解决一些重复工作的习惯。
后来我还是希望遵从内心,决定找一份与安全相关的工作。在辞职前,我成功地入侵了公司的内部网络,拿到公司域控的管理权限,并在服务器的桌面上留下了善意的修复建议,目的只是为了证明自己的安全能力。
有着大公司的背景及对安全工作的执着追求,我顺利地加入瑞星公司,在这里开始进一步学习安全的知识。得益于瑞星宽松的工作环境和浓厚的安全氛围,在完成本职工作之外,我开始进行更多的学习和研究,同时也接触到很多新的安全产品。也是在那段时间,我写了自己第一款移动端的手机防火墙软件,不过此时我对安全的理解更多的是攻防学习和漏洞研究,所掌握的知识并不成体系。
再后来我加入安全宝创业。安全宝算是我最有感情的一家公司,它让我从零开始踏上一个公司的安全建设之路,对安全工作进行系统的规划,以闭环的方式来推进和完善每个工作流程,然后通过攻防对抗实践进行迭代式的改进。其实对于企业来讲,攻防对抗仍然可以作为企业安全建设中最有价值的应用实践之一。
之后我加入百度。虽然还是以乙方的视角做着安全服务工作,但甲方的工作氛围和技术培训也让我对攻防的理解更加全局化,更加工程化,也更加体系化。此时,我对扫描的看法也发生了变化:扫描作为攻击的一种方式,它应该更贴近真实的攻击;而真实的攻击其实是一种全视角、持续性、动态化的入侵行为,它会对目标进行全视角的信息和资产收集,然后通过持续性的漏洞测试,以及动态的情报能力发现其中的脆弱点。因此,如果我们想重塑扫描的价值,那么就应该以攻击者的视角,同时将更多的安全能力融入扫描中,并以攻击的全流程来对其进行改进和扩充,从而最终实现扫描的情报化、插件化,以及智能化。
我的安全观
我眼中的Web安全
还记得自己刚刚加入百度,小哥(程岩)在面试我的时候,问了一个问题,我至今依然记忆深刻:每个Web安全人员都有自己的安全体系,你眼中的Web安全是什么样子的?
当时我也是第一次被问到这么宏观的问题,第一感觉就是问题很大,一时又不知从何说起,现在我还记得自己当时的回答:我眼中的Web安全包含着我做的所有内容,比如:漏洞挖掘、漏洞分析、漏洞攻击和规则防御等。它们都是围绕漏洞的生命周期进行展开的,可以按照时间顺序将它们划分为4个阶段,如下。
? 漏洞的感知:我们需要从各个方面和渠道去关注Web漏洞,获取最新的漏洞资源和信息,如,漏洞监控、漏洞预警或漏洞挖掘等。
? 漏洞的分析:获取漏洞资源后,我们就需要对漏洞进行分析和研究,弄清楚漏洞的原理及成因,而这主要体现在两方面的价值,一方面是可以构造出漏洞的POC,并补充到扫描器中,对漏洞实现自动化检测和验证;另一方面则是深入理解漏洞原理后,能够写出对应的漏洞匹配特征,制作漏洞签名,并给WAF升级进行防护。
? 漏洞的响应:这里主要分为两部分,一部分是对内的响应,也就是自身的漏洞响应,对漏洞进行快速排查和修复;另一部分则是对外的响应,也就是对互联网的全网客户进行响应,评估漏洞对其影响,以及协助修复,并对全网的安全态势进行监控。
? 漏洞的沉淀:按照漏洞的描述、原理、场景,以及修复策略等相关信息,对每个漏洞进行编号和积累,形成有价值的漏洞知识库。
现在回想起来,对于当时的回答,我其实并不满意,只能算是勉强应付下来了。但事后自己却想得更多了,这个问题属于主观题,或许它没有标准的答案,也没有所谓的对与错,但它却可以让每个人按照自己的角度、自己的工作、自己的理解,重新去思考和审视自己的知识体系。从那以后,这个问题也就一直伴随着我,它也是我作为面试官必问的题目之一。因为我相信在不同的阶段,每个人对它的理解肯定是不一样的。
三个基础的安全认知
1.木桶原理
盛水的木桶是由多块木板箍成的,盛水量也是由这些木板共同决定的。若其中一块木板很短,则此木桶的盛水量就被限制,该短板就成了这个木桶盛水量的限制因素,若要此木桶盛水量增加,只有换掉短板或将其加长才行,这就是木桶原理。它表达的意思就是,一个水桶无论有多高,它盛水的高度取决于其中最短的那块木板。在信息安全领域中,目标系统就好比盛水的木桶,它的安全性完全取决于系统中最薄弱的那个环节。
举个例子,我们在给企业进行渗透测试服务时,发现弱口令的安全问题仍然是企业的一个重灾区,这些企业虽然在安全方面做了很多工作,而且也部署了一些安全设备,但往往却因为一个简单的弱口令导致整个系统被入侵和攻破,所以我们需要审视系统中的薄弱点,并进行加强。
2.攻防不对称,安全是相对的
攻防不对称其实很好理解,防御方需要保护的是一个整体,而攻击方却可以通过审视这个整体,选择其中一个薄弱的环节进行持续的攻击。在这个对抗的过程中,其实很多内容都是不对称的,如下。
? 技术不对称:攻击方可以针对目标使用的某个软件或组件进行深入的漏洞挖掘,然后通过新的0day漏洞完成攻击和入侵,而防御方却无法对系统每个部分的漏洞都有所了解。
? 成本不对称:攻击方可以选择成本低廉、破坏力强的DDoS拒绝服务攻击,而防御方却需要消耗巨大的成本进行整体的防御。
? 信息不对称:攻击方可以选择通过人员、社交、无线等与企业有依赖关系的入口制订攻击路径,而防御方却无法覆盖所有的关联入口。
因此不论是安全产品,还是安全设计,它们的目标从来都不是绝对安全的,而只是追求相对安全。但这个认知绝不是用来找借口或是逃避安全责任的,而是用来提醒我们:安全是一个动态的过程,当前的安全工作仍然还有提升的空间;攻防其实只是一种成本的博弈对抗,只需要在允许的成本范围内进行适度、有效的防御即可;在攻防不对称的面前,我们可以选择用攻击驱动的方式进行防御。
3.纵深防御
我们知道,当今所有的信息安全技术其实都是以用户是好人为信任前提,只有当确认他干了坏事之后,才会把他定义为坏人,然后开始对其进行响应或防御。只有当某个用户已被证明产生了危害后,才将其定位为黑客或攻击者,开始对他进行应急处置,这种防御方式显然存在天然的滞后性,也势必会导致安全人员处于被动、挨打的局面。
为了能够改变这种被动、滞后的劣势,就需要拉伸防御的纵深。其实一个完整的攻击并不是由单点完成的,它通常会由一系列的环节关联组成,属于一个持续、连贯的过程。因此,我们可以在攻击过程中的每个必要环节点设置防御,从而做到提前感知和防御,利用这种层层设防、联动防御的方式,就可以化被动为主动,在攻击产生危害之前对其进行应急响应和处置。
安全其实是一个动态、整体的概念,正如道哥所说,互联网本来是安全的,自从有了研究安全的人之后,互联网就变得不安全了;而研究安全的人归根结底可以分为攻与防两个大分支,不过这里所说的攻防不是单纯的攻击入侵与技术防御,它们会结合技术、业务、流程、人员、制度和管理,形成一个广义的攻防概念,并一起构成了安全这个整体。因此我们看待安全的时候需要从攻与防两个不同的角度来整体审视和博弈均衡;同时攻击和防御也会在不断碰撞和对抗的过程中得到发展和变化,攻击通常会选择系统相对薄弱的环节来实施,防御则需要从各个角度及不同维度进行整体防御,补齐系统的各个短板,但攻防它又是不对称的,因此我们需要利用纵深防御的理念,将完整的攻击链条进行拆分和细化,在每个环节进行深度分析和防御,从而建立起立体化的安全防御体系。
前言
随着互联网的高速发展,Web应用在其中所扮演的地位也越来越重要,因为很多业务都选择使用Web的形式来提供服务,但随之而来的Web安全问题也日渐凸显出来,企业往往会因此遭受巨大的损失,此时很多企业都会在Web应用上线前或运行中对其进行相应的安全测试来保证安全性,减少由于安全问题造成的损失。
通常而言,Web应用的安全测试技术主要有:黑盒测试和白盒测试,还有一种灰盒测试,它是介于黑盒和白盒之间的。这里我们主要说一下黑盒测试,它又称为动态调试,这种方法主要是测试应用的
|
|