首页 > 其他分享 >网络攻防技术——XSS攻击

网络攻防技术——XSS攻击

时间:2023-12-28 16:33:20浏览次数:34  
标签:XSS 主页 攻防 攻击 标签 代码 js 攻击者

实验7:XSS攻击实验(Elgg)

实验内容:

跨站点脚本(XSS)是一种常见于web应用程序中的计算机安全漏洞。此漏洞使攻击者有可能将恶意代码(如JavaScripts)注入受害者的web浏览器。

为了演示攻击者可以做什么,我们在预先构建的Ubuntu VM映像中设置了一个名为Elgg的web应用程序。我们已经注释掉了Elgg的一些保护方法,故意使其容易受到XSS攻击。学生们需要利用这些漏洞发动攻击,就像Samy Kamkar在2005年通过臭名昭著的Samy蠕虫对MySpace所做的那样。此攻击的最终目标是在用户之间传播XSS蠕虫,这样无论谁查看受感染的用户配置文件都会受到感染,无论谁受感染都会将您(即攻击者)添加到他/她的好友列表中。

实验报告:

需要提交一份详细的实验报告和截图,来描述做了什么和观察到了什么。还需要对观察结果进行解释。还请列出重要的代码片段,然后进行解释。仅附加代码而不作任何解释将不得分。

评分要点:

  1. 功能完成情况:60%;
  2. 代码规范性:20%;
  3. 报告质量:20%

 

 

  1. Task1

    主页的文本会直接放入前端DOM树中,直接在攻击者主页中输入script标签即可在被攻击者的浏览器上执行js脚本

当别的用户浏览攻击者的主页时,JS 程序会被成功执行

如果要注入很长的js代码,可以使用链接的方式

  1. Task2

    这里是用js代码获取用户的cookie,和任务1一样,直接alert弹出

    `document.cookie`获取用户的cookie

    成功弹出cookie

  2. Task3

    任务二中回显的cookie并不能让攻击者看到,所以攻击者有两种思路,一种是直接在要执行的js代码中建立一个socket连接,在套接字中把cookie发送到攻击者主机,攻击者使用nc进行监听,这种方法的好处是可以使用这种方法在socket连接中调用/bin/sh,攻击者直接拿到了shell;第二种思路是在img标签中加上src属性,属性值设置成攻击者主机,浏览器会试图访问src的链接以获取图像,从而让被攻击者访问攻击者主机,并将cookie作为url参数传给攻击者,攻击者同样使用nc进行监听,本实验采用的是第二种方法

    攻击者的主机是100.9.0.9,监听端口5555

被攻击者访问攻击者主页,看似什么都没发生

而攻击者已经收到了cookie

cookie是用户的身份认证凭证,拿到cookie后,攻击者就相当于窃取了被攻击者的身份

  1. Task4

这段代码使用XMLHttpRequest()构造了一个Ajax请求,用于异步地发出GET请求,在elgg框架下获取了ts和token信息

查看添加好友时的HTTP请求,发现会访问http://www.seed-server.com/action/friends/add这个API,携带的参数包括要添加的用户的id,elgg框架的时间戳(ts)和elgg框架的token(实际url携带了两份参数,但经过验证一份参数就能添加成功)

我们在js代码中写入一但主页被打开,就向该API发送添加朋友的请求的代码片段

获取samy的用户id为59

将完整的代码补充完成如下,URL为"http://www.seed-server.com/action/friends/add?friend=59"+ts+token

注意要放在 Edit HTML 模式中,该模式不会对用户的输入进行修改

登录其他用户的账号并访问攻击者页面,发现成功添加好友

使用Firefox开发者工具查看网络数据包情况,发现确实发起了添加朋友的GET请求

  1. 问题1:解释脚本中的 ts 和 token 的作用

    ts是当前时间戳(time stamp),token是用户身份鉴别凭证,这两个信息可以用来防御跨站请求伪造(CSRF)攻击,在用户向服务器发出请求时,服务器会对ts和token进行校验,只有校验通过客户端的请求才有效。而在elgg框架下可以直接读取这两个值,攻击者相当于在用户的主机上直接执行了恶意代码,请求是由被攻击者发出的,并不是攻击者伪造的

  2. 问题2:如果没有 Edit HTML 模式,只能用普通的 Editor Mode,还能攻击成功吗?

    如果继续采取之前的在Editor Mode下攻击的方法不会成功,因为它会在代码中添加各种标签并转义一些符号,比如把<变成&lt;但是我们可以找到其他的xss注入点,如"brief description"板块不会转义字符,或者我们可以使用一些xss的绕过方法,如编码绕过等方式

  1. Task5

    查看修改资料时的HTTP请求,发现会访问http://www.seed-server.com/action/profile/edit这个API,携带的参数包括要修改的用户的id和用户名,elgg框架的时间戳(ts)和elgg框架的token,这些参数都可以使用elgg框架直接获取

    我们在js代码中写入一但主页被打开,就向该API发送修改资料的请求的代码片段

    这里代码比较复杂,我使用了Firefox的开发者工具console进行了js代码的调试,发现粘贴pdf文件的特殊字符没有删掉

将完整的代码补充完成如下

被攻击者访问攻击者主页,发现自己的主页被成功修改

使用Firefox开发者工具查看网络数据包情况,发现确实发起了修改个人资料信息的POST请求

问题:脚本中为什么要判断当前user的guid不等于samy的guid?

         因为攻击者修改完自己的主页后会自动跳转回自己的主页,如果去掉这一行,攻击脚本会将攻击者的主页也进行修改,攻击脚本就被覆盖掉了,那么其他人再访问攻击者主页就不会被修改主页,导致攻击失败

  1. Task6

    Task6的任务是实现一个可以传播的XSS攻击蠕虫,目前有两种实现方法:

    1. 将脚本放在远端,在主页放入带src属性的img标签,这种方法简单,实现代码短

    2.将xss蠕虫脚本直接放在主页,使用DOMAPI从网页中检索其自身的副本,放入受害者的主页,实现起来相对比较复杂

    本实验采用第二种方法

js代码如下:

被攻击者访问攻击者主页后,自己的主页被修改

Xss蠕虫被成功回显出来

现在另一名用户Alice访问Boby的主页,发现自己的主页也被感染,说明xss蠕虫扩散成功

  1. Task7

    注: 在CSP中,nonce是一个用于增强网页安全性的属性,nonce是一个随机生成的字符串,用于验证特定资源加载的合法性。通过将 nonce 添加到网页的CSP头部中,网页可以指定哪些资源可以被加载和执行。只有具有匹配 nonce 的脚本、样式表等资源才会被浏览器接受和执行,而其他来源的资源将被浏览器阻止

    CSP是白名单策略,在网页中执行js代码有两种方式,第一种内联式是把代码直接放在当前的网页中,第二种链接式是把代码放在当前站点或其他站点的文件中,然后把它们引用到当前网页

    打开index.html,分析下面的七个标签:

    第一个标签采用内联的js代码执行方式,有一个nonce值为111-111-111

    第二个标签采用内联的js代码执行方式,有一个nonce值为222-222-222

    第三个标签采用内联的js代码执行方式,没有nonce值

    第四个标签采用链接的js代码执行方式,是从本站目录下链接到js文件

    第五个标签采用链接的js代码执行方式,是从www.example60.com网站的目录下链接到js文件

    第六个标签采用链接的js代码执行方式,是从www.example70.com网站的目录下链接到js文件

    第七个标签采用内联的js代码执行方式,没有放入script标签中,本质和第一、二个标签一样,应该是为了防止DOM XSS

    1. 访问www.example32a.com

      js代码被全部执行,弹窗有效,因为没有开启CSP保护策略,对js代码的来源没有限制,所以都能被执行

       

    2. 访问www.example32b.com

      js代码只有第六个被执行,弹窗没有反应

      观察配置文件发现,开启了CSP保护策略,并且只允许自身站点和example70.com站点的js文件可以被加载并执行,而且对于内联式js代码没有验证nonce值,所以所有内联js代码均不会被加载和执行

      要求我们将第五个标签的js代码也能执行,于是将example60.com站点也加入到CSP白名单

      发现第五个标签成功执行

    3. 访问www.example32c.com

      js代码只有第1、4、6个被执行,弹窗没有反应

      观察配置文件发现,该网站的入口点不是访问index.html,而是phpindex.php,于是去查看该php文件,发现开启了CSP保护策略,对于链接式js代码只允许自身站点和example70.com站点的js文件可以被加载并执行,所以第4、6个标签可以执行对于内联式js代码验证nonce值是否为111-111-111,所以第1个标签可以执行

      要求我们让第2、5个标签也可以执行,于是将example60.com站点和nonce验证值222-222-222也放入白名单中

      发现第1、2、4、5、6个标签都可以执行

  2. 总结

    1. 漏洞概念:Cross Site Scripting(XSS),跨站脚本攻击。

    2. 漏洞原理:攻击者提供一段恶意的 javascript 代码,通过各种方式在受害者浏览器上执行。

    3. 漏洞危害:

    1. 窃取 cookie,伪造被攻击者的身份

    2. 制造网站蠕虫,在互联网上传播并级联执行恶意的脚本代码

    3. 钓鱼

    4. 修复思路:

    1. 在 http 响应头的set-cookie的值中加入 http-only 的内容;

    2. 对输入的内容进行检查、提示,或者转义(html 实体化编码实现)(不推荐)

    3. 对于富文本需求来说,采用成熟的前端编辑器。

    4. 使用CSP白名单策略让输入内容合规(推荐)

    5.总结:

    XSS 攻击的方式多种多样,包括反射型 XSS、存储型 XSS、DOM 型XSS等多个方面。预防 XSS 漏洞的关键在于输入验证和输出过滤。在编写应用程序时,一定要注意对用户输入进行验证和过滤,不要将用户输入直接输出到 HTML 页面中。

标签:XSS,主页,攻防,攻击,标签,代码,js,攻击者
From: https://www.cnblogs.com/leo1017/p/17932984.html

相关文章

  • 网络攻防技术——DNS攻击
    实验11:TCP攻击实验实验内容:本实验的目标是让学生获得对DNS(域名系统)的各种攻击的第一手经验。DNS是互联网的电话簿;它将主机名转换为IP地址,反之亦然。这种转换是通过DNS解析实现的,这种解析发生在幕后。DNS欺骗攻击以各种方式操纵此解析过程,目的是将用户误导到其他目的地,这些目的地......
  • 【网络安全入门】什么是DOS?DOS攻击类型有哪些?
    大家都知道,DOS攻击是网络安全中比较常见的攻击形式,它的类型和种类有很多,具有很大的危害,而且在网络生活中DOS攻击是不可避免的,那么到底什么是DOS?DOS攻击类型有哪些?虽然DOS攻击不可避免,但掌握攻击类型可以帮助我们有效预防DOS攻击,所以快跟着小编来了解一下吧。什么是DOS?......
  • 网络攻防技术——TCP攻击
    实验内容:本实验的学习目标是让学生获得有关漏洞以及针对这些漏洞的攻击的第一手经验。聪明人从错误中学习。在安全教育中,我们研究导致软件漏洞的错误。研究过去的错误不仅有助于学生理解为什么系统容易受到攻击,为什么"看似良性"的错误会变成灾难,以及为什么需要许多安全机制。更重......
  • Burp插件xssValidator的安装及使用
    1.前置环境1.1下载Phantomjs下载地址:http://phantomjs.org/download.html下载后配置环境变量,把bin目录下的这个exe加入环境变量.如图:1.2xss.js下载和配置xss.js是phantomJS检测xss漏洞payload的具体实现。下载地址为:https://github.com/nVisium/xssValidator下载完成后......
  • 网络攻防技术——嗅探与欺骗
     实验9:嗅探与欺骗实验实验内容:包嗅探和欺骗是网络安全中的两个重要概念;它们是网络通信中的两大威胁。能够理解这两种威胁对于理解网络中的安全措施至关重要。有许多包嗅探和欺骗工具,如Wireshark、Tcpdump、Netwox等。其中一些工具被安全专家以及攻击者广泛使用。能够使用这些......
  • 2023年十大网络安全攻击事件
    1、ESXi勒索软件攻击今年2月,“ESXiArgs”组织针对运行VMwareESXi虚拟机监控程序的客户展开勒索攻击。据联邦调查局(FBI)和CISA数据估计,全球受感染的服务器数量超过了3800台。网络安全供应商Censys称,该活动主要针对美国、加拿大、法国和德国等国家的组织。研究人员表示:这些攻......
  • 记一道攻防世界上的Reverse-gametime
    一、题目描述把文件下载下来,运行后发现是一个简单的小游戏,属于那种玩通关了就给flag的,自己先玩了一下,玩了一下大概游戏规则就是看到s就按空格,遇到x就按x,遇到m就按m,但是玩到后面速度非常快,如果你足够厉害,玩到后面应该是可以玩出来的。这里我们就要IDA进行静态分析,又是小......
  • GScan v0.1 被攻击入侵后 溯源 安全应急响应 Linux主机排查 实现主机侧Checklist的自
    GScanv0.1本程序旨在为安全应急响应人员对Linux主机排查时提供便利,实现主机侧Checklist的自动全面化检测,根据检测结果自动数据聚合,进行黑客攻击路径溯源。CheckList检测项自动化程序的CheckList项如下:1、主机信息获取2、系统初始化alias检查3、文件类安全扫描3.1、系统重要文......
  • 网站被攻击常见的形式有哪些?
    在当下,网站遭受攻击已经成为屡见不鲜的事情了,因为大大小小的网站都遭受过网络攻击,尤其是一些比较热门的行业更是被攻击整的焦头烂额。那么网站被攻击常见的形式有哪些?今天通过这篇文章为大家讲一讲。1、网站网页中出现大量的黑链网站的网页一般用户看着没有什么异常,但......
  • 最新搭建upload-labs和XSS漏洞测试平台
    搭建upload-labsupload-labs是一个使用PHP语言编写的、专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场,旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含不同的上传方式。GitHub仓库为c0ny1/upload-labs/,推荐使用Windows系统,因为除了Pass-19必须在Linux系统......