您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > web开发安全技术培训教程_XXXX0809
Web开发安全技术培训教程(2011年07月)目录概述为什么要重视WEB安全技术Web系统逐渐成为企业安全边界之一Web应用攻击场景WEB应用攻击动机…WEB代码常见的安全问题程序安全开发流程程序开发安全具体措施平台部署与维护具体措施为什么要重视WEB的安全漏洞现在我们公司很多的平台(冲浪、企业商盟等平台)是依赖于互联网构建核心业务的,当前移动局方对网站的安全性要求提到空前的高度,网络部周期性的进行安全扫描,并把扫出的漏洞纳入到考核扣分。而在现实世界中,针对网站的攻击愈演愈烈,频频得手。“目前,75%的攻击发生在WEB应用层”—国际权威机构Gartner“2006年前9个月内新发现4,375个漏洞.Web漏洞是其中最普遍的三类之一.”—MitreCorp,09/2006,CVE的维护者“产品的定制开发是应用安全中最薄弱的一环”.—GartnerWeb系统逐渐成为企业安全边界之一防火墙加固OSWeb服务器应用服务器数据库WebServices文件目录其它关联系统WEB应用程序WEB应用层攻击仅仅使用网络层的防护手段(防火墙,SSL,IDS,IPS,加固)无法阻止或检测到WEB应用层攻击网络层应用层应用层作为安全边界的一部分,或许有巨大的漏洞防火墙IDSIntrusionDetectionSystems,入侵检测系统IPSIntrusionPreventionSystem,入侵防御系统Web应用攻击场景攻击动机攻击方法攻击工具系统漏洞防范措施攻击面(attacksurface)Web服务器黑客Web攻击动机常见Web攻击动机恶作剧;关闭Web站点,拒绝正常服务;篡改Web网页,损害企业名誉;免费浏览收费内容;盗窃用户隐私信息,例如Email;以用户身份登录执行非法操作,从而获取暴利;以此为跳板攻击企业内网其他系统;网页挂木马,攻击访问网页的特定用户群;仿冒系统发布方,诱骗用户执行危险操作,例如用木马替换正常下载文件,要求用户汇款等;……Web攻击方法收集系统相关的通用信息将系统所有能访问页面,所有的资源,路径展现出来URL、口令、数据库字段、文件名都可以暴力猜解,注意利用工具;利用Web漏洞扫描器,可以尽快发现一些明显的问题错误可能泄露服务器型号版本、数据库型号、路径、代码;搜索Google,CVE,BugTraq等漏洞库是否有相关的漏洞服务器后台管理页面,路径是否可以列表等是否可以上传恶意代码?是否可以任意下载系统文件?检查所有可以输入的地方:URL、参数、Post、Cookie、Referer、Agent、……系统是否进行了严格的校验?HTTP协议是文本协议,可利用回车换行做边界干扰用户输入是否可以影响服务器的执行?需要特殊工具才能利用这些攻击点复杂的业务逻辑中是否隐藏漏洞?常见Web攻击方法Googlehack网页爬行暴力猜解Web漏洞扫描错误信息利用根据服务器版本寻找现有的攻击代码利用服务器配置漏洞文件上传下载构造恶意输入(SQL注入攻击、命令注入攻击、跨站脚本攻击)HTTP协议攻击拒绝服务攻击其他攻击点利用(WebServices,Flash,Ajax,ActiveX,JavaApplet)业务逻辑测试……访问资源名称GET与POST参数Referer与UserAgentHTTP方法CookieAjaxWebServiceFlash客户端JavaAppletWeb攻击面:不仅仅是浏览器中可见的内容POST/thepage.jsp?var1=page1.htmlHTTP/1.1Accept:*/*Referer::en-us,de;q=0.5Accept-Encoding:gzip,deflateContent-Type:application/x-:Mozilla/4.0Host::JSESSIONID=0000dITLGLqhz1dKkPEtpoYqbN2uid=fred&password=secret&pagestyle=default.css&action=login直接可在浏览器中利用的输入所有输入点更多输入点黑客实际利用的输入点http请求头域HTTP域变量的说明Host头域Host头域指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。Referer头域Referer头域允许客户端指定请求uri的源资源地址,这可以允许服务器生成回退链表,可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被追踪。如果请求的uri没有自己的uri地址,Referer不能被发送。如果指定的是部分uri地址,则此地址应该是一个相对地址Range头域Range头域可以请求实体的一个或者多个子范围。例如,*表示头500个字节:bytes=0-499*表示第二个500字节:bytes=500-999*表示最后500个字节:bytes=-500*表示500字节以后的范围:bytes=500-*第一个和最后一个字节:bytes=0-0,-1*同时指定几个范围:bytes=500-600,601-999但是服务器可以忽略此请求头,如果无条件GET包含Range请求头,响应会以状态码206(PartialContent)返回而不是以200(OK)。User-Agent头域User-Agent头域的内容包含发出请求的用户信息。开发者的关注点而Web系统的安全性参差不齐……复杂应用系统代码量大、开发人员多、难免出现疏忽;系统屡次升级、人员频繁变更,导致代码不一致;历史遗留系统、试运行系统等多个Web系统共同运行于同一台服务器上;开发人员未经过安全编码培训;定制开发系统的测试程度不如标准的产品;……客户满意界面友好操作方便处理性能实现所有功能架构合理代码修改方便运行稳定没有bug不同模块低耦合相对安全性而言,开发人员更注重系统功能!开发进度与成本WEB安全的漏洞报告平台和开源合作组织通过WooYun查询到的中国移动的安全漏洞情况如下图所示:OWASP=OpenWebApplicationSecurityProject,OWASP是最权威的Web应用安全开源合作组织,其网站上有大量的Web应用安全工具与资料。WooYun()是一个位于厂商和安全研究者之间的漏洞报告平台,你可以通过这个平台来接受大家报告漏洞也可以通过这个平台来报告漏洞WebScarab是OWASP组织推出的开源工具,可应用于一切基于HTTP协议系统的调试与攻击;Web攻击漏洞:安全漏洞库Securityfocus网站的漏洞库名称为Bugtraq,它给每个漏洞编号叫BugtraqID。它的网址为:。Cve是和Bugtraq齐名的漏洞库,它给漏洞库编号叫CVEID,它的网址为:。CVE与Bugtraq漏洞库都会对确认的漏洞进行统一编号,其编号是业界承认的统一标准,有助于避免混淆。在这些漏洞库中都可以查到大量的Web应用漏洞。目录概述WEB代码常见的安全问题SQL注入跨站脚本漏洞(XSS)跨站点请求伪造(CSRF)其他验证不充分的漏洞其他类型的问题(逻辑缺陷、错误处理不当…)程序开发安全具体措施平台部署与维护具体措施程序安全开发流程Web代码常见的安全问题有哪些(一)分类常见漏洞后果1.输入输出验证不充分SQL注入如果Web应用没有对攻击者的输入进行适当的编码和过滤,就用于构造数据库查询时,可能导致注入漏洞。攻击者可利用注入漏洞诱使Web应用执行未预见的数据库查询(即SQL注入攻击)。命令注入与SQL注入类似,攻击者可利用注入漏洞诱使Web应用执行未预见的命令(即命令注入攻击)或数据库查询(即SQL注入攻击)。跨站脚本漏洞(XSS)攻击者可利用XSS在其他用户的浏览器中运行恶意脚本,偷窃用户的会话,或是偷偷模拟用户执行非法的操作;跨站点请求伪造(CSRF)CSRF攻击即攻击者在用户未察觉的情况下,迫使用户的浏览器发起未预见的请求,其结果往往损害用户本身的利益。恶意代码执行(文件包含漏洞/文件上传验证不充分)如果Web应用允许用户上传文件,对上传文件名未作适当的过滤时,用户可能上载恶意的脚本文件(如ASP,PHP等);脚本文件在Include子文件时,如果Include路径可以被用户输入影响,那么可能造成实际包含的是黑客指定的恶意代码;对象直接引用(文件下载验证不充分)访问内部资源时,如果访问的路径(对文件而言是路径,对数据库而言是主键)可被攻击者篡改,而系统未作权限控制与检查的话,可能导致攻击者利用此访问其他未预见的资源;整数溢出int变量计算越界,溢出了。Java浮点数拒绝服务漏洞float变量越界XPath注入攻击一些人已经使用XML文档代替更传统的纯文本文件或关系数据库,但XML应用程序容易受XPath注入攻击Web代码常见的安全问题有哪些(二)分类常见漏洞2.逻辑缺陷越权操作验证绕过程序流程失误变量注册顺序JS劫持随机数生成API调用缺陷3.容错处理不当泄露系统信息4.工作平台安全特性Apache文件名解析漏洞Nginx文件名解析漏洞Struts2框架任意代码执行FLASH安全策略输入输出验证原则验证内容验证所有来源的输入(get/post/cookie/server变量/配置文件)验证所有输出到客户端的内容,输出数据HTML编码.建立可信边界验证方法验证数据的长度、大小、格式、类型以及内容使用服务器端代码做最终验证(注:客户端脚本可以被篡改,如果为了顾全体验,部分重要数据一定要用服务器验证。)不使用黑名单验证数据(最好采用白名单进行验证,类似防火墙的最小权限策略)数据非法,程序停止执行,切勿试图修正数据。(可以避免二次攻击)目录概述WEB代码常见的安全问题SQL注入跨站脚本漏洞(XSS)跨站点请求伪造(CSRF)其他验证不充分的漏洞其他类型的问题(逻辑缺陷、错误处理不当…)程序开发安全具体措施平台部署与维护具体措施程序安全开发流程SQL注入(SQLInjection)定义:由于程序中对用户输入检查不严格,用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQLInjection,即SQL注入。原因分析其本质是对于输入检查不充分,导致SQL语句将用户提交的非法数据当作语句的一部分来执行。由于我们的部分WEB应用,采用Jsp+JavaBean或SSH框架,代码中会有直接写SQL(或HQL)语句,而有些SQL是用拼串实现的。风险SQL盲注:如果系统屏蔽了详细的错误信息,那么对攻击者而言就是盲注入,可能会查看、修改或删除数据库条目和表使用SQL注入的认证旁路:可能会绕开Web应用程序的认证机制SQL注入:数字参数(一)`/login.asp管理员管理员程序员考虑的场景:Username:adminPassword:p@$$w0rdSELECTCOUNT(*)FROMUsersWHEREusername='admin'andpassword='p@$$w0rd'登录成功!程序员未预料到的结果……Username:admin'OR1=1--Password:1SELECTCOUNT(*)FROMUsersWHEREusername='admin'OR1=1--'andpassword
本文标题:web开发安全技术培训教程_XXXX0809
链接地址:https://www.777doc.com/doc-961145 .html