XSS研究1-来自内部的XSS攻击

简介:

引入:

最近在tech audit别的团队的实现,发现他们代码中存在着一些XSS(跨站脚本攻击)的问题。回想以前我们团队的代码也被IBM的AppScan扫描出一些类似问题,基于很多人对于XSS没有非常清晰的了解,今天下午,我专门做了点小例子来详细阐述什么是XSS。


实践:

其实XSS,定义不重要,大家都知道,js能力很强大,所以我如果发一段恶意的js代码给受害者,在受害者的环境去中执行的话,就会得到许多不可估量的后果。从宏观上分,大概分2类,一类是来自内部的XSS攻击,一种是来自外部的XSS攻击。我们这文章主要讲解来自内部的XSS攻击。


其实来自内部的XSS攻击很容易理解,假设我是攻击者,A是受害者,那么我要攻击A,怎么办呢?

因为根据同源策略,我就算写一段javascript,这段JS是没有办法去操作A环境的,这种情况下,我没办法让A受到伤害,这时候我会这么做:


首先,我给A 发送一个恶意的Web URL,但是为了吸引B去点击,我可能在这个URL的表面放一些有吸引力的内容(比如美女图片等)

果不其然,A上当了,他点击并且查看了这个URL

而我给A的URL其实包含了一段javascript,而A并不知道这件事情。

因为我的JS无法直接操作A的机器,但是因为A点击了那个链接,于是这段JS 成功的在A的本地域执行。

因为JS在本地域有很大的权利,因此我可以做很多可怕的操作,大家都知道。



为了模拟上述操作,我们有如下的代码:


攻击者页面(假设是心怀不轨的我写的):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
< html >
< head >
< meta  http-equiv = "Content-Type"  content = "text/html; charset=UTF-8" >
< title >恶意脚本发送方页面demo</ title >
</ head >
< body >
< form  action = "xss_victim1.jsp"  method = "post" >
< p  align = "center" >< strong >恶意脚本发送方页面demo </ strong ></ p >
< div  align = "center" >
   < table  width = "270"  border = "0" >
     < tr >
       < td  width = "130" >< strong >输入一段脚本:</ strong ></ td >
         < td  width = "120" >< input  name = "input"  type = "text"  id = "input"  /></ td >
       </ tr >
     < tr >
       < td  width = "100" >
         < input  name = "submit"  type = "submit"  value = "点击触发恶意脚本"  />
       </ td >
       </ tr >
   </ table >
   </ div >
</ form >
</ body >
</ html >


然后这个页面提交到受害者页面,假如我就让他打出我们刚输入的脚本:

1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
< html >
< head >
< meta  http-equiv = "Content-Type"  content = "text/html; charset=UTF-8" >
< title >恶意脚本结果展示页面</ title >
</ head >
< body >
你输入的内容是: <%=request.getParameter("input") %>
</ body >
</ html >



现在我们来演示:

比如,我现在在一个恶意页面上有一个文本输入框,用户可以输入任何内容进去,如果是输入一般字符串,那么没问题,假设我们输入一段脚本(或者说这段脚本不是让用户输入的,而且是页面的背面我们拼凑上去的):

170810369.png


这时候在受害者页面xss_victom1.jsp中就会运行这段js.当然了,我们这里是善意的,只是弹出一个alert对话框,如果恶意的话,你懂的。。。

170946144.png



我刚测试了,非常幸运的是,Chrome在XSS的安全防范方面做的非常好,如果我吧刚才的例子运行在Chrome浏览器中,在受害者页面会显示:

171112972.png


拒绝执行这段脚本


总结:

所以从这里可以看出,对于来自内部的xss攻击,其本质是吧有毒的东西(比如一段恶意js脚本)送到受害者内部,让其在内部影响受害者的系统。因为同源策略,我没办法直接侵犯,所以采取这种方式,打个不恰当的比方,我(入侵者)要侵略某国家(受害者),我没办法让我的炸弹(恶意代码)直接炸那个国家(受害者),因为他们防护措施(同源策略)太好了,怎么办呢?我先买通他们国家某个官员(比如色情图片的链接),然后让这个官员携带了我要放的炸弹(恶意脚本代码) ,然后这个官员很轻松的通过外交通道免按键入境,然后这个官员到达他国家之后引爆这个炸弹(脚本代码执行在受害者本地机器上)





本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/1339909,如需转载请自行联系原作者
目录
打赏
0
0
0
0
234
分享
相关文章
同源策略如何防止 XSS 攻击?
【10月更文挑战第31天】同源策略通过对 DOM 访问、Cookie 访问、脚本执行环境和跨源网络请求等多方面的严格限制,构建了一道坚实的安全防线,有效地防止了 XSS 攻击,保护了用户在网络浏览过程中的数据安全和隐私。
136 49
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
150 4
|
4月前
|
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第27天】本文深入解析了Web安全中的XSS和CSRF攻击防御策略。针对XSS,介绍了输入验证与净化、内容安全策略(CSP)和HTTP头部安全配置;针对CSRF,提出了使用CSRF令牌、验证HTTP请求头、限制同源策略和双重提交Cookie等方法,帮助开发者有效保护网站和用户数据安全。
125 2
Web安全基础:防范XSS与CSRF攻击的方法
【10月更文挑战第25天】Web安全是互联网应用开发中的重要环节。本文通过具体案例分析了跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的原理及防范方法,包括服务器端数据过滤、使用Content Security Policy (CSP)、添加CSRF令牌等措施,帮助开发者构建更安全的Web应用。
177 3
|
4月前
|
什么是XSS攻击?什么是SQL注入攻击?什么是CSRF攻击?
理解并防范XSS、SQL注入和CSRF攻击是Web应用安全的基础。通过采用严格的输入验证、使用安全编码实践以及实现适当的身份验证和授权机制,可以有效防止这些常见的Web攻击,保障应用程序和用户的数据安全。
73 0
XSS跨站脚本攻击详解(包括攻击方式和防御方式)
这篇文章详细解释了XSS跨站脚本攻击的概念、原理、特点、类型,并提供了攻击方式和防御方法。
1002 1
解释 XSS 攻击及其预防措施
【8月更文挑战第31天】
497 0
在Linux中,如何检测和防止SQL注入和跨站脚本(XSS)攻击?
在Linux中,如何检测和防止SQL注入和跨站脚本(XSS)攻击?
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等