2023Web安全防护手册.docx

上传人:李司机 文档编号:6256363 上传时间:2023-10-10 格式:DOCX 页数:434 大小:3.53MB
返回 下载 相关 举报
2023Web安全防护手册.docx_第1页
第1页 / 共434页
2023Web安全防护手册.docx_第2页
第2页 / 共434页
2023Web安全防护手册.docx_第3页
第3页 / 共434页
2023Web安全防护手册.docx_第4页
第4页 / 共434页
2023Web安全防护手册.docx_第5页
第5页 / 共434页
点击查看更多>>
资源描述

《2023Web安全防护手册.docx》由会员分享,可在线阅读,更多相关《2023Web安全防护手册.docx(434页珍藏版)》请在三一办公上搜索。

1、Web安全防护手册1. 第1章Web安全基础2. 1.lWeb安全的核心问题3. 1.2HTTP协议概述4. 1.3HTTPS协议的安全性分析5. 1.4Web应用中的编码与加密6. 1.5本章小结7. 第二部分网络攻击的基本防护方法8. 第2宣XSS攻击9. 2.1XSS攻击的原理10. 2.2XSS攻击的分类11. 2.3XSS攻击的条件12. 2.4漏洞测试的思路13. 2.5XSS攻击的利用方式14. 2.6XSS漏洞的标准防护方法15. 2.7本章小结16. 第3章请求伪造漏洞与防护17. 3.1CSRF攻击18. IlSSRE攻击19. 3.3本童小结20. 第4章SQL注入21.

2、 21SQL注入攻击的原理22. 4.2SQL注入攻击的分类23. 4.3回显注入攻击的流程24. 4.4盲注攻击的流程25. 4.5常见防护手段及绕过方式26. 4.6本章小结27. 第5章文件上传攻击28. 5.1上传攻击的原理29. 5.2上传的标准业务流程30. 5.3上传攻击的条件31. 5.4上传检测绕过技术32. 5.5文件解析攻击33. 5.6本章小结34. 第6章Web木马的原理35. 6.1Web木马的特点36. 6.2一句话木马37. 33小马M大马38. 6.4本章小结39. 第7章文件包含攻击40. 7.1漏洞原理41. 7.2服务器端功能实现代码42. 7.3漏洞利

3、用方式43. 7.4防护手段及对应的绕过方式44. 45本章小结45. 第8章命令执行攻击与防御46. 8.1远程命令执行漏洞47. 8.2系统命令执行漏洞48. 8.3有效的防护方案49. 8.4本章小结50. 第三部分皿务逻辑安全51. 第9章业务逻辑安全风险存在的前提52. 9.1用户管理的基本内容53. 9.2用户管理涉及的功能54. 9.3用户管理逻辑的漏洞55. 9.4本章小结56. 第10章用户管理功能的实现57. 10.1客户端保持方式58. 10.2用户基本登录功能实现及安全情况分析59. 10.3水量小结60. 第11章用户授权管理及安全分析61. ILl用户注册阶段安全情

4、况62. 11.2用户登录阶段的安全情况63. 11.3密码找回阶段的安全情况64. 11.4记住登录状态65. 11.5用户手段管理及登录安全汇总66. 11.6本童小结67. 第12章用户身份识别技术及安全防护68. 12.1验证码技术69. 12.2验证码带来的问题70. 12.3二次验证技术71. 12.4身份识别技术的防护72. 12.5本章小结73. 第13章用户后续功能及集中74. 13.1用户取得授权后的应用安全隐患75. 13.2用户集中认证方式76. 13.3本章小结77. 第14章用户权限处理问题78. 14.1用户越权的案例79. 14.2越权漏洞的出现根源分析80.

5、14.3保持用户一致性的措施81. 14.4有效的用户权限管理方式82. 14.5本章小结83. 第15章业务流程安全基础防护方式总结84. 15.1用户注册阶段85. 15.2用户登录阶段86. 15.3密码找回阶段87. 15.4基本业务功能应用阶段88. 15.5本章小结89. 第四部分攻防综合视角下的Web安全防护90. 第16章标准业务场景91. 16.1CMS及其特征92. 16.2常见的远程管理方式93. 16.3本章小结94. 第17章用户视角下的所见范围探测95. 17.1易被忽视的WhOiS信息96. 17.2利用搜索引擎发现敏感信息97. 17.3真实IP地址发现手段98

6、. 17.4真实物理地址99. 17.5目标端口开放情况100. 17.6目标版本特征发现101. 17.7利用Web漏洞扫描工具的利与弊102. 17.8分站信息查找103. 17.9本章小结104. 第18章用户视角下的防护手段识别105. 18.1开放端口及对应业务识别106. 18.2是否有防护类软件107. 18.3基本漏洞的防护测试108. 18.4本章小结109. 第19章常用的防护方案110. 19。整体防护思路111. 19.2简单的防护方案112. 19.3提升安全性的基础手段113. 19.4DDOS攻击及防护方法114. 19.5本章小结115. 第五部分常见Web防护

7、技术及防护开展方法116. 第20章Web防护技术的演进117. 2QJJ三fcWAF118. 20.2防氮改软件119. 20.3云防护系统120. 20.4本青小结121. 第21章Web安全防护体系建议122. 212Web安全的核心问题123. 213现实环境下的客观因素124. 21.3如何建立基本的安全框架125. 21.4微软SDL安全开发流程126. 21.5本章小结127. 第22章渗透测试的方法及流程128. 22.1渗透测试的关注点129. 22.2渗透测试的阶段130. 22.3渗透测试的基本要求131. 22.4本童小结132. 第23章快速代码审计实践133. 23

8、.1快速代码审计的基本流程134. 23.2基本功能安全审计135. 23.3系统防护功能的安全性分析136. 23.4业务逻辑安全分析137. 23.5本章小结138. 后记139. 参考文献第1章Web安全基础Web是万维网(WorldWideWeb,WWW)的简称,它利用HTTP(HyperTextTransferProtocol,超文本传输协议)来建立用户与服务器之间的标准交互方式。常用的Web应用都是基于网页形式开展的,即用户输入域名,利用HTTP协议发起访问请求。服务器接收到用户请求后,根据HTTP协议向用户返回响应页面。在这个过程中,HTTP协议规定了在当前请求中需要的参数,从而

9、实现标准化的传输效果,如图1“所示。提供各种类型服务的Web网站非常多,网站是由多个页面组成的。用户可通过浏览不同的页面来开展不同的业务。HTML(HyperTextMarkupLanguage,超文本标记语言)规定了Web应用的页面格式。使用HTML的好处在于规定了页面的基本格式后,用户端只要利用可以解析HTML格式的浏览器即可实现访问。如图1-2所示。Web网站从早期只有浏览功能,逐渐发展到能支持用户进行自定义查询、支持用户登录并互动、在线交易等复杂业务。在这个过程中,需要添加额外的组件来实现上述功能。因此,目前的Web站点都会附带数据库及其他服务,从而实现对当前站点及用户信息的存储及复杂

10、功能的支持。下面来分析一个常见的Web应用:访问一个网站并做一次信息查询。这个过程中涉及的服务及功能流程如图L3所示。图中所示的流程与真实的大型网站应用流程并不完全一致,只用于说明基本原理。因为大型网站要同时为数以千万的用户请求提供服务,仅通过一台服务器根本无法支持海量的用户访问请求,所以会利用负载均衡、CDNs云技术、分布式数据库等技术来应对大量用户的并发访问。值得说明的是,以上所有环节均可能存在安全隐患,其中一项服务产生问题都可能影响用户的正常使用或者危害Web服务器的安全。1.1 Web安全的核心问题日益丰富的各类Web网站被Web用户使用,而且Web也不仅仅是利用浏览器访问站点。因此,

11、在了解Web各类漏洞之前,我们先了解一下常见的Web应用表现形式。GETHTTP1.IHost:Proxy-Connection:keep-aliveUser-Agent:Mozilla5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chromc/61.0.3163.100Safari/53736Accept:tcxt/html.application/xhtml+xml,application/xml;q=0.9.imagc/wcbp.imagc/apng,*/*;q=0.8Acccpt-Encoding:gzip

12、,deflateAccept-Language:Zh-CN,zh;q=0.8Cookie:UM_distinctid=l5e642afc3db24-03b4ab35953996-e313761-384000-15e642afc3e9f2图HTTP请求包头与响应包头结构-CA安至https;/WWWJChUnqiU.comXSS漏洞Web线上班春秋知识体系职业成长竞赛训练培训认证企安用view-sourcedttpsXCSPview-$ource:http$:/!DOCTYPEhtml2 3 4 4titlei存秋弓业自网络安全fi息W全在线学,!培训平台/title:“5 metahttp-e

13、quiv=*X-UA-Compatib1e*content=*IE=edge,cho61图12利用Chrome浏览器访问站点访 问 过 程Wcb服务器返回请求结果互联网.,用户浏览器);发起DNS请求3,崇试TCP连接对方服务器IP及端口通过三次握手建立TCP成功 (5)发送HTTP请求 :、服务器根据请求响应近向特定页面 提交查询表单数据库服务器杳 询 过 程服务器返回查询页面提交参数至数据库作词I返向查询结果图L3信息查询功能流程1) Web应用不一定为用户可见页面,比如各类APl接口,其原理是一个Web页面,并对用户请求的内容进行处理。2) Web应用不一定要依托浏览器才能使用,例如,爬

14、虫脚本的数据获取部分,只要能构造HTTPReqUeSt包即可开展对Web应用数据的获取。3)并不一定需要标准的Web中间件,直接利用编程语言编写对应处理规则也可实现对用户请求的处理,但处理的过程就是中间件本来该执行的工作。再思考一下Web应用的环境。Web应用需要一台服务器提供基础资源,可运行操作系统,并配合中间件来为用户提供服务。如果站点功能较为复杂,那么还需要用数据库提供基础的数据存储支持,用文件服务器进行备份,用SAN系统提供高性能的文件存储等。在这个过程中,任何一个环节出现问题,都可能导致Web安全问题出现。可以把Web应用环境类比为一个球队。球队中有负责打比赛的队员,有指导教练、领队

15、、队医、后勤人员,它们共同为球队的运转服务,任何一个环节或岗位出现问题,都会影响球队的成绩。类似地,在Web系统中,无论有多少硬件设备、提供支持的组件有哪些,只要它们为Web提供支持,那么都要纳入防护体系。从安全角度考虑,Web应用中的中间件、数据库、操作系统等均会影响Web系统的安全,因此关注点并不能仅放在网页层面。最后从交互角度来思考。HTTP协议作为Web应用的基础协议,其特点就是用户请求-服务器响应。在这个过程中,服务器一直处于被动响应状态,无法主动获取用户的信息。再看一下HTML结构,服务器在完成用户响应后,当前的HTML页面会被发送到用户端的浏览器,这也就决定了客户端拥有HTML的

16、全部结构及内容。基于这种交换环境,在客户端可篡改任何请求参数,服务器必须对请求内容进行响应。这也就决定了Web最核心的问题,用户端的所有行为均不可信。最后总结一下Web存在安全隐患的核心问题:DWeb应用类型复杂,防护经验无法复用。2)Web应用包含的服务组件众多,任意一个组件出现问题都会影响整体的安全程度。3)由于HTTP协议的特性,用户端的所有行为均不可信。这些核心问题会贯穿在Web应用的每个漏洞中。本书后续章节会针对不同的漏洞进行分析,读者了解每个漏洞的特点之后,再结合以上三个核心问题进行综合思考,可更准确地体会Web攻防技术的精妙之处。1.2HTTP协议概述HTTP是一个应用层的面向对

17、象的协议,由于其简捷、快速的特点,非常适合互联网应用。有了HTTP,用户利用浏览器即可访问不同的应用系统,避免了大量客户端的操作不便的情况。同时,这种由客户端发起请求、服务器根据用户请求进行处理的方式也非常适用于大规模的应用开展。HTTP协议于1990年提出,经过多年的使用,不断完善和扩展,已逐渐成熟。在C/S模式为主的时代,HTTP支持的B/S(BrowserZServer)模式能够从易用性、稳定性等方面满足用户个性化的需求。到目前为止,HTTP已成为互联网中应用最广泛的应用层协议。目前在WWW中使用的是HTTPLl版本,而且HTTPNG(NextGenerationofHTTP)的建议已经

18、被提出。HTTP协议的主要特点可概括如下:DHTTP协议足够简单,简单到可概括为“用户发起请求T服务器响应-新请求重新发起”,每次请求均为独立行为,这体现了HTTP的无状态特点。2) HTTP协议支持B/S模式,只要有浏览器即可工作,用户使用简单、易于操作。从某种意义上说,APP也可以被视为某种特定内容的浏览器。3) HTTP协议灵活性好,可用于数据传输、视频播放、交互等,因此适合快速迭代的互联网应用环境。对于Web安全本身来说,HTTP是应用层的传输方式,目前大量的安全问题都是HTrP的应用带来的,但HTTP本身并没有太好的防护措施。好比一个门锁不安全,首要解决的是门锁的安全性,而对门锁依托

19、的楼道(即HTTP协议)来说,并没有太多的直接防护措施。HTTP协议非常严谨及复杂,由于篇幅问题,本书无法全面讲解“以下将针对HTTP协议涉及安全问题的内容进行总结,这些内容可有效帮助读者理解后续各类安全漏洞的形成及利用方法等。1.2.1HTTP请求头的内容一般情况下,用户无法在正常访问时观察到HTTP包及其结构。但在Web安全中,HTTP包非常重要,其中的大量参数均会对安全产生至关重要的影响。部分浏览器(Chrome、FirefOX等)具有相关的插件,可对HTTP包进行抓取及分析,但功能较为单一。这里推荐利用抓包技术进行分析,常见的抓包工具有WireShark(抓取网卡通信的数据包)、Bur

20、psuite(利用HTTP代理抓取数据包)、FiddIer(HTTP代理,效果类似BUrPSUite)。我们利用BUrPSUite抓取HTTP包,如图1-4所示。MRequesttoMtp/192168112080IRawPm*11wHdrsHtxPOSTuploaduplodphpHTTP/1.1Host192.168.1.120Content-Length:305Cache-Control:max-age0Origin:http192.168.1.120Upgrade-Insecure-Requests:1Contnt-Typ:multipart/forvn-dU;boundary=-Vt

21、bKitFon8oudrycF1ktBV2(r0j.VUstr-Agent:MozU/5.0(WindowsNTIOQ;Now64)AppkVebKiV53736(KHTMLGtCkO)Chromt/63.0.3239.132Safri53736AccepttexVtfnl,applicatioxhtmHxfnl,applicatiofnlj=0.9,imagevebp.mageapng.*xj=0Refererhttp192.168.1.120/upload/uploadhtmlAccept-Encoding:gzip,deflateAccept-Language:zCN力:q0.9Conn

22、ection:close.WebKitFonnBoundarycF1keBV7jFr0f.VContent-Dispositon:form-data;name=Tile*;filename=testjpgContent-Type:image/jpegWebIGtFonnBoundarycFIkeBV25v%FrOjfContent-Disposition:form-data:name三*choics*blacklistWtbKitFormBoundrycF1kBV25vFrOjV-图1-4利用BUrPSUite抓取HTTP请求包从图中可以看到,HTTP包中有多组数据,且数量较多。根据HTTP包

23、结构,对其进行简单分类,以便快速理解各组数据的具体意义。如图1-5所示。HTTP请求由三部分组成,分别是请求行、消息报头、请求正文。下面重点介绍各部分的重要参数。1.请求行请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,标准的请求行格式为:MethodRequest-URIHTTP-VersionCRLFPoST /upload/UPlOadphp HnP/1.1第一部分:ReqUeStIine(请求有第二部分:Request header(请求消息报头)Host:192.168.1.120Content-Length:305Cache-Control:ma-age三0

24、Origin:http192.168.1.120Upgrade-Insecure-Requests:1Content-Type:multipart/form-data:boundary=-WebKitFormBoundarycF1keBV25vvFrOj.VUser-Agent:Mozflla/5.0(WindowsNT10.0;WOW64)Apple.VebKit53736(KHTMLlikeGecko)ChrOme/63.03239.132Safari/537.36Accept:tethtml,applicationhtml+xml,application/xml;q=0.9,imagew

25、ebp,imageapng,*iq=03Referer:http192.168.1.120uploaduploadJ)tmlAccept-Encoding:gzip.deflateAccept-Language:Zh-CN,zhjq=0.9Connection:close.VebKitForinBoundarycFIkeBV2jvFr0j.VContent-Disposition:form-data;name=file;filename=testjpgContent-Type:image/jpeg第三部分:Requestbody(请求正文)WebKitFormBoundarycFIkeBV2v

26、Fr0jVContent-Disposition:form-data;name=choicesblacklist-WebKitFonnBoundarycFIkeBV2,vfr0j-图15HTTP请求包内容的简单分类其中,Method表示请求方法;ReqUeStURI是一个统一资源标识符;HTTP-VerSiOn表示请求的HTTP协议版本;CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。例如,图1-5中的请求行的内容为:POST/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=LS2S

27、5&inaj-a=这段请求行内容说明了当前数据包的基本请求方法及路径。其中:请求方法是PoST。,请求路径为member,php。HTTP版本为HTTPL1。URL中6mod=logging&action=login&loginsubmit=yes&loginhash=LS2S5&inajax=1当前站点页面的控制参数,格式与get方式发送参数相同。请求方法用来告知Web服务器本次请求的主要目的。HTTP协议中定义了多种请求方法(所有方法全为大写),各个方法的解释如下:GET请求获取ReqUeSI-URI所标识的资源。POST在ReqUeSt-URl所标识的资源后附加新的数据。HEAD请求获取

28、由ReqUeSt-URI所标识的资源的响应消息报头。PUT请求服务器存储一个资源,并用ReqUeSt-URI作为其标识。DELETE请求服务器删除ReqUeStPRI所标识的资源。TRACE请求服务器回送收到的请求信息,主要用于测试或诊断。CONNECT保留,将来使用。OPTIONS请求查询服务器的性能,或者查询与资源相关的选项和需求。在实际应用中,考虑到安全因素,主要使用GET和POST两种方式开展请求。例如,早期ASP系统中存在大量IlSPUT漏洞,导致攻击者可直接利用PUT工具上传木马以获得Webshello因此,从安全及业务开展统一的角度,其余方式目前基本都不再使用。GET和PoST在

29、使用中的主要区别为:GET方法通过在浏览器的地址栏中输入网址访问网页时,浏览器采用GET方法向服务器获取资源,对应的请求行示例为:GElYfomhtmlHTTP/Ll(CRLF)oPOST方法要求被请求服务器接收附在请求后面的数据,常用于提交表单。可参考图5中的HTTPbOdy(请求正文)。GET和POST方法的最大区别就是提交参数在HTTP请求包的位置不同。也就是说,使用GET方式时ReqUeStbody部分为空,PoST方式则可利用URL及ReqUeStbOdy发送请求。但在实际应用中,两者的安全性基本一致,都可能因链路劫持而出现参数泄漏的情况。链路劫持是由HTTP协议本身的特点所决定的,

30、与请求方法没有任何关系。目前,有一些系统依然支持HEAD方法。HEAD方法与GET方法在使用方面几乎是一样的。利用HEAD方法的好处在于不必传输整个资源内容,就可以得到ReqUeSt-URI所标识的资源的信息。该方法常用于测试链接的有效性,看链接是否可以访问,以及最近是否更新。当然,随着互联网带宽的提升及网站应用的日趋复杂,目前HEAD方法已不在重要业务场景下使用,这里的介绍仅供了解。2请求消息报头请求消息报头用来向服务器端传递客户端自身的信息以及用户的附加信息。这些信息可帮助服务器端更好地识别用户的请求,以提供对应的响应内容。仍以图L5中的请求报头为例,其内容如下:Host:Proxy-Co

31、nnection:keep-aliveContent-Length:224Cache-Control:max-age=Origin:HTTP:/Upgrade-Insecure-Requests:1Content-Type:application/x-www-form-urlencodedUser-Agent:Mozilla/5.0(WindowsNT1.0;Win64;x64)AppleWebKit/537.36(KHTML,1Accept:text/html,application/xhtml+xml,application/xml;q=.9,image/webp,imageapngz*;

32、q=Referer:HTTP:/WWWAccept-Encoding:gzip,deflateAccept-Language:zh-CNzzh;q=0.8Cookie:UM-distinctid=15claa7d69784-df76df5eal636-5393662-3840-15claa7d6a5d6;请求报头中涉及安全的内容主要有以下几项:Host(必须存在):HOSt主要用于指定被请求资源的Internet主机和端口号,即标识请求目标。其来源为当前访问的URL。缺省端口号为80,若指定了端口号(以8000为例)进行防卫,则变成Host:WWWaCom:8000。-Content-Leng

33、th:标识当前请求包中的内容长度。Origin:用来标识本次请求的发起源,只适用于POST方式。Referer:用来标识当前请求的发起页面。Accept:ACCePt用于指定客户端接收哪些类型的信息。上例中表明允许后续类型在客户端实现。Accept-Encoding:告知服务器端当前客户端可接受的内容编码。Accept-Language:告知服务器端支持的语言类型。User-Agent:USer-Agent通常简称为UA,其中包含当前用户的操作系统、浏览器的基本信息,用于告知Web服务器当前访问者的情况。此报头域不是必需存在的。但如果客户端不使用USer-Agent请求报头域,那么服务器端就无

34、法得知客户端的基本信息。目前UA也经常被Web服务器用于统计当前用户状态及行为。3.请求正文内容请求正文中包含HTTP传输的信息。当请求方法为GET时,请求正文为空,所有内容通过在URL后面添加参数进行传输。只有请求方法为POST时,HTTP请求正文中才有信息,通常为Web系统自定义的参数,用于实现与服务端的交互。其中的参数是由Web系统自行定义的。在Web系统开发时一般会根据参数用途指定特定的名称,如USername、code等。但这样也会让攻击者清楚地知道参数的具体用法。推荐在此部分中,参数命名应模糊,使得参数名称无法通过表面意思被理解,从而增加攻击者的分析难度。1.2.2 HTTP协议响

35、应头的内容服务器端接收到用户的请求包后,会根据其中的请求内容进行处理,并返回HTrP响应消息。HTTP响应包与请求包的结构类似,也是由三个部分组成,分别是响应行、响应消息报头、响应正文。如图1-6所示。1.响应行响应行的基本格式为HTTP-VersionStatus-CodeReason-PhraseCRLF其中,HTTP-Version表示服务器HTTP协议的版本;SlalUS-Code表示服务器发回的响应状态代码;ReaSon-PhraSe表示状态代码的文本描述。上例中的“HTTP/1.12000K”说明服务器HTTP版本为LL已接收到用户请求并返回状态码“200,OKfft表示当前请求正

36、常。RsponsfromMtp7/192168112080upkxip*oadPhPForwardDropmoJRawjHeadersHex_6te:飙。3M加846:04:33GMTServerApacbe/22.14(Unix)DAV/2mod.ssV22.14OpenSSl0.9PHP/53.1mod.apreq2-20090110/2.7.1modjeri2X)4Prlv5.10.1X-Powred-By:PHP/53.1Content-Ungth:214第二部分:ResponseheaderConnection:close(响应消息报头)ConfnkTyprttxt/html:ChMMtutf8上府文件母tcrtjpgfMBfilBpfJUg:l.l 200 OK (applicatlon/json)382 GET dsaHR0cDovLzUyOS4xNej233 H1.1 200 OK (textp1n)223 HTTP/1.1 302 FoundM09ubGluZuplZllL2NzwNrRWlhawwZWlh图18利用WireShark抓取登录过程的数据包根据其中的HTTP协议来寻找发起登录请求的数据包,数据包内容如图1-9所示。这

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号