您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > WEB常见安全漏洞讲解
WEB常见安全漏洞讲解Ana资产资产应用程序安全风险攻击攻击攻击控制控制控制功能影响影响影响漏洞漏洞漏洞漏洞攻击者攻击向量安全漏洞安全控制技术影响业务影响攻击攻击漏洞漏洞功能资产影响影响攻击漏洞漏洞注入跨站脚本失效的身份认证和会话管理不安全的直接对象引用跨站请求伪造安全配置错误功能级访问控制缺失未验证的重定向和转发敏感信息泄露使用含有已知漏洞的组件OWASPTOP10漏洞15234610789TOP-1注入原因:应用程序缺少对输入进行安全性设计。方式:攻击者将一些包含指令的数据发送给解释器,欺骗解释器执行计划外的命令。危害:读取或篡改数据库的信息,甚至能够获得服务器的包括管理员的权限。TOP-1注入什么是SQL注入?通过把SQL命令用户提交的数据中,代码原有SQL语句的语义,从而达到服务器恶意的SQL命令。插入改变控制执行可以插入SQL语句并执行TOP-1注入应用程序在下面存在漏洞的SQL语句的构造中使用不可信数据:Stringquery=SELECT*FROMaccountsWHEREcustID='+request.getParameter(id)+';攻击者在浏览器中将“id”参数的值修改成10000’or’1’=’1。如:=这样查询语句的意义就变成了从accounts表中返回所有的记录。SELECT*FROMaccountsWHEREcustID=10000;SELECT*FROMaccountsWHEREcustID=;‘‘‘‘漏洞案例10000’or’1’=’1TOP-1注入如何识别SQL注入数字型单引号:=1’提示错误逻辑真假:=1and1=1返回正确=1and1=2返回错误加减符号:=2-1返回与id=1相等字符型单引号:=xx’提示错误逻辑真假:=xx’and‘a’=‘a返回正确=xx’and‘a’=‘b返回错误加减符号:=pet’+’ter返回与name=petter相同搜索型单引号:=1’提示错误逻辑真假:=1%’and‘%’=‘返回查询1的内容=1%’and‘%1’=‘无内容返回或不是1的内容TOP-1注入防范1参数校验:传递的参数做校验,如果不合法,直接拒绝请求。1.1如果是数字类型,判断是否为数字,如果不是,直接拒绝请求1.2如果有格式的类型(比如日期,email,电话,身份证号码等等),判断是非符合格式,如果不符合格式,拒绝请求。1.3如果是字符串类型,没有特殊的格式,需要对字符串长度做校验,如果长度大于数据库该字段的定义长度,直接拒绝请求。比如姓名,数据库定义的事varchar(12),如果输入超过12个字符,直接拒绝请求2使用PrepareStatement。PrepareStament可以有效防御sql注入攻击。PrepareStatement原理是:mysql执行树会根据预设的参数做转义,可以把注入的sql当作一个参数执行,而不会当作语句执行php应用,可以使用PrepareStatement替代Statement写法。3数据库权限做限制3.1不能对业务账号开selectinformation_schema权限。因为一旦某个漏洞被成功注入,information_schema库暴露所有库,所有表,字段的定义。给sql注入者提供了便利,,,注入者不需要猜测表结构,就能轻松获取所有表的定义,进而轻松获取所有表的数据3.2各个业务账号只能访问自己业务的数据。这样即使某个漏洞被注入,也只是影响到该业务的数据,不会影响到其他业务的模块TOP-2失效的身份认证和会话管理漏洞案例案例#1:机票预订应用程序支持URL重写,把会话ID放在URL里:=Hawaii该网站一个经过认证的用户希望让他朋友知道这个机票打折信息。他将上面链接通过邮件发给他朋友们,并不知道自己已经。当他的朋友们使用上面的链接时,他们将会使用他的会话和信用卡。案例#2:应用程序超时设置不当。用户使用公共计算机访问网站。离开时,该用户没有点击退出,而是直接关闭浏览器。攻击者在能使用相同浏览器通过身份认证。案例#3:内部或外部攻击者进入系统的密码数据库.存储在数据库中的用户密码,所有用户的密码都被攻击者获得。jsessionid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV泄漏了自己的会话ID一个小时后没有被加密TOP-2失效的身份认证和会话管理1.用户身份验证凭证没有使用哈希或加密保护。2.认证凭证可猜测,或者能够通过薄弱的的帐户管理功能(例如账户创建、密码修改、密码恢复,弱会话ID)重写。3.会话ID暴露在URL里(例如,URL重写)。4.会话ID容易受到会话固定(sessionfixaPon)的攻击。???5.会话ID没有超时限制,或者用户会话或身份验证令牌特别是单点登录令牌在用户注销时没有失效。6.成功注册后,会话ID没有轮转。7.密码、会话ID和其他认证凭据使用未加密连接传输。TOP-3跨站脚本(XSS)插入浏览执行攻击什么是跨站脚本攻击?往Web页面里插入恶意html/js代码当用户浏览该web页面时嵌入Web页面里面的html代码会被执行从而达到攻击用户的特殊目的插入HTML/JS代码并执行TOP-3跨站脚本(XSS)反射型存储型DOM型危害小利用难度大需要点击影响范围广利用简单危害大存储于数据库中有反射也有存储本地执行TOP-3跨站脚本(XSS)防范最好的办法是根据数据将要置于的HTML上下文(包括主体、属性、JavaScript、CSS或URL)对所有的不可信数据进行恰当的转义(escape)。更多关于数据转义技术的信息见OWASPXSSPrevenPonCheatSheet。TOP-4不安全的直接对象引用已登录的用户(ID:123)?id=ID:123的个人信息ID:125的个人信息123123125?id=有漏洞!TOP-5安全配置错误漏洞案例案例#1:应用程序服务器管理员。而。攻击者在你的服务器上发现了标准的管理员页面,通过默认密码登录,从而接管了你的服务器。案例#2:。攻击者发现只需列出目录,她就可以找到你服务器上的任意文件。攻击者找到并下载所有已编译的Java类,她通过反编译获得了所有你的自定义代码。然后,她在你的应用程序中找到一个访问控制的严重漏洞。案例#3:应用服务器配置,这样就暴露了潜在的漏洞。攻击者热衷于收集错误消息里提供的额外信息。案例#4:应用服务器自带的。该示例应用有已知安全漏洞,攻击者可以利用这些漏洞破坏您的服务器。控制台自动安全后没有删除目录列表在你的服务器上未被禁用示例应用程序没有删除默认账户也没有改变允许堆栈跟踪返回给用户注意这些问题:1.是否有软件没有被及时更新?这包括操作系统、Web/应用服务器、数据库管理系统、应用程序和其它所有的代码库文件。2.是否使用或安装了不必要的功能(例如,端口、服务、网页、帐户、权限)?3.默认帐户的密码是否仍然可用或没有更改?4.你的错误处理设置是否防止堆栈跟踪和其他含有大量信息的错误消息被泄露?5.你的开发框架(比如:Struts、Spring、ASP.NET)和库文件中的安全设置是否理解正确并配置恰当?TOP-6敏感信息泄露首先你需要确认的是哪些数据是敏感数据而需要被加密。例如:密码、信用卡、医疗记录、个人信息应该被加密。对于这些数据,要确保:1.当这些数据被长期存储的时候,无论存储在哪里,它们是否都被加密,特别是对这些数据的备份?2.无论内部数据还是外部数据,传输时是否是明文传输?在互联网中传输明文数据是非常危险的。3.是否还在使用任何旧的或脆弱的加密算法?4.加密密钥的生成是否是脆弱的,或者缺少恰当的密钥管理或缺少密钥回转?5.当浏览器接收或发送敏感数据时,是否有浏览器安全TOP-6敏感信息泄露攻击案例案例#1:一个应用程序加密存储在数据库的信用卡信息,以防止信用卡信息暴露给最终用户。但是,数据库设置为对信用卡表列的询进行自动解密,这就使得SQL注入漏洞能够获得所有信用卡信息的明文。该系统应该被设置为前端应用程序使用公钥对信用卡信息加密,后端应用程序只能使用私钥解密。案例#2:一个网站上所有需要身份验证的网页都没有使用SSL。攻击者只需监控网络数据流(比如一个开放的无线网络或其社区的有线网络),并窃取一个已验证的受害者的会话cookie。然后,攻击者利用这个cookie执行重放攻击并接管用户的会话从而访问用户的隐私数据案例#3:密码数据库使用unsalted的哈希算法去存储每个人的密码。一个文件上传漏洞使黑客能够获取密码文件。所有这些unsaltedTOP-7功能级访问控制缺失://example.com/app/admin_getappInfoUIJS未登录用户(游客)已登录用户(普通用户)普通用户功能页面管理员功能页面有漏洞有漏洞有漏洞TOP-8跨站请求伪造(CSRF)TOP-8跨站请求伪造(CSRF)请求的参数可预知链接or页面以用户的身份向服务器发送请求攻击者在构造这个请求构造的请求自动提交诱惑让已登录用户访问浏览器的cookie机制链接or页面TOP-9使用含有已知漏洞的组件Struts2Struts2是Struts的下一代产品,是在struts1和WebWork的技术基础上进行了合并的全新的Struts2框架。Struts2远程命令执行代码执行的漏洞有:S2-003,S2-005,S2-007,S2-008,S2-009,S2-012~S2-016危害?TOP-10未验证的重定向和转发验证应用程序是否有未验证的重定向或转发的最好的方法是:1.审查所有使用重定向或转发的代码。每一次使用,都应该验证目标URL是否被包含在任何参数值中。如果是,且目标URL并不在经过验证的白名单中,那么就是存在漏洞的。2.此外,抓取网站内容查看是否能产生重定向(HTTP响应代码从300到307,通常是302)。检查重定向之前提供的参数是否是目标URL或其一部分。如果是的话,更改URL的目的地,并观察网站是否重定向到新的目标。3.如果没有代码,检查所有的参数以辨别它们是否看起来像一个重定向或转发目的地网址的一部分,对那些看起来像的参数进行测试。谢谢!
本文标题:WEB常见安全漏洞讲解
链接地址:https://www.777doc.com/doc-4644663 .html