草庐IT

XSS漏洞攻防

Edison.W 2023-04-29 原文

目录

XSS攻击简介

  • xss (Cross Site Scripting):跨站脚本攻击,为了不和层叠样式表(Cascading Style Sheets)的缩写CSS混合,所以改名为XSS。

  • 主要基于java script (JS) 完成恶意攻击行为。JS可以非常灵活的操作html、css和浏览器,这使得XSS攻击的“想象”空间特别大。攻击者在网页中嵌式客户端脚本(通常是JavaScript的恶意脚本),当用户使用浏览器加载被嵌入恶意代码的网页时,恶意脚本代码就会在用户的浏览器执行,造成跨站脚本攻击。

  • 微博、留言板、聊天室等等收集用户输入的地方,都有可能被注入XSS代码,都存在遭受XSS的风险,只要没有对用户的输入进行严格过滤,就会被XSS。

  • 形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
    因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
    输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
    输出转义:根据输出点的位置对输出到前端的内容进行适当转义;

XSS攻击的危害

1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
3、盗窃企业重要的具有商业价值的资料
4、非法转账
5、强制发送电子邮件
6、网站挂马 让更多人的受害
7、控制受害者机器向其它网站发起攻击 卖肉机

XSS攻击分类

  • 反射型
    • 非持久性跨站点脚本攻击
    • 攻击是一次性的,仅仅对当前的页面访问产生影响
  • 存储型
    • 持久型跨站点脚本
    • 攻击者的数据存储在服务器端,攻击行为将伴随着供给数据一直存在
  • dom型
    • 既可能是反射型又可能是存储型

XSS产生原因

  • web应用对用户的输入过滤不严谨

  • 攻击者写入恶意的脚本代码到网页中

  • 用户访问了含有恶意代码的网页

  • 恶意脚本就会被浏览器解析执行并导致用户被攻击

  • 反射型XSS的流程:

    • hacker发送带有xss恶意脚本的链接向用户
    • 用户点击了链接访问正常服务器
    • 正常服务器将正常的页面返回到用户浏览器
    • 用户浏览器解析了网页的恶意xss代码向恶意服务器发起请求
    • hacker从自己搭建的恶意服务器中获取到用户的提交信息
  • 存储型XSS攻击流程

    • hacker在目标服务器上构造xss恶意脚本,保存在数据库中
    • 用户在网站登录状态下访问了目标服务器,查看了存在恶意脚本的页面
    • 网站将xss和正常页面返回到用户浏览器
    • 用户浏览器解析了网页的xss恶意代码向恶意服务器发起请求
    • hacker从自己搭建的恶意服务器中获取用户提交的信息

实战

靶场搭建

BlueLotus
我这里选择的清华大学的是蓝莲花靶场(BlueLotus)
下载BlueLotus_XSSReceiver-master解压缩到PHPstudy的WWW目录下
然后打开PHPstudy

成功之后是这样的

然后访问本地ip,127.0.0.1:84

点安装
设置密码,然后下拉点提交


输入密码登录

登录界面

构造xss攻击脚本

弹窗警告

<script>alert(1)</script>


盗取用户cookie
<script>alert(document.cookie)</script>

页面嵌套

<iframe style="overflow:hidden; width:520px;height:400px;position:fixed;left:500px;top:400px;border:none;margin:0px;padding:0px;"src="http://127.0.0.1:82/ "></iframe>

  • 可以看到页面里面又套了一个页面

页面重定向

<script> window.location= "https://www.baidu.com/" </script>
<script>location.href= "https://www.baidu.com/"</script>

弹窗警告并重定向

<script>alert("请移步到我们的新站");location.href="https://www.baidu.com/"</script>


  • 点击确定以后就加载到了目标网站

图片标签利用

图像标签,有一定的隐蔽性
<img src= "#"  onerror= alert('欢迎来钓鱼')>

绕开过滤的脚本

绕开过滤的脚本
大小写 <ScrIpt>alert('xss')</SCRipt>
字符编码 字符编码采用URL、Base64、HTML等编码
<img src=x onerror="&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041">

可以用html编码进行绕过

存储型xss基本演示

危害最大的xss
写好一个脚本

有了弹窗

然后复制url再次打开发现弹窗还在,也就是说每一个访问这个网页的人都会弹出这个对话框

访问恶意代码(网站种马)

  • 能诱导用户访文恶意网站的攻击文件xss.js。获取用户cookie

XSS获取键盘记录

将rk.js改为自己ip

然后在pikachuxss平台输入

这样只要用户在输入框输入点击提交,后台就会在pkxss_keypress_result.php文件中记录下来

XSS盲打

进入XSs盲打
随便输入

输入
![!](https://img-blog.csdnimg.cn/7d7b47e3bb0e4f21b1f16c77e6617a9d.png)
访问http://127.0.0.1:81/vul/xss/xssblind/xss_blind.php输入账户密码。就还可以看到有一个弹窗

然后点击确定后还有记录

htmlspecialchars()函数

htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体
预定义的字符是:
&(和号) 成为&amp;
" (双引号) 成为 &quot;
' (单引号) 成为 &apos;
< (小于) 成为 &lt;
>  (大于) 成为 &gt;


源码

自动xss攻击

  • beEF
    • 介绍:Browser Exploitation Framework (BeEF)BeEF是目前强大的浏览器开源渗透测试框架,通过XSS漏洞配合JS脚本和Metasploit进行渗透;BeEF是基于Ruby语言编写的,并且支持图形化界面,操作简单
    • 官网点这里
    • 功能
      • 信息收集
      • 持久化控制
      • 社工
      • 渗透攻击

安全防御

1.对重要的 cookie设置 httpOnly, 防止客户端通过document.cookie读取 cookie,此 HTTP头由服务端设置。

2.在javascript中加入多个tab键,得到
< IMG SRC=“jav ascript:alert(‘XSS’);” >;
  
3.在javascript中加入 编码字符,得到< IMG SRC=“javascript:alert(‘XSS’);” >;

4.在javascript中加入字符,得到
  < IMG SRC=“javascript:alert(‘XSS’);” >;

有关XSS漏洞攻防的更多相关文章

  1. Tomcat AJP 文件包含漏洞(CVE-2020-1938) - 2

    目录1.漏洞简介2、AJP13协议介绍Tomcat主要有两大功能:3.Tomcat远程文件包含漏洞分析4.漏洞复现 5、漏洞分析6.RCE实现的原理1.漏洞简介2020年2月20日,公开CNVD的漏洞公告中发现ApacheTomcat文件包含漏洞(CVE-2020-1938)。ApacheTomcat是Apache开源组织开发的用于处理HTTP服务的项目。ApacheTomcat服务器中被发现存在文件包含漏洞,攻击者可利用该漏洞读取或包含Tomcat上所有webapp目录下的任意文件。该漏洞是一个单独的文件包含漏洞,依赖于Tomcat的AJP(定向包协议)。AJP自身存在一定缺陷,导致存在可控

  2. 什么是0day漏洞?如何预防0day攻击? - 2

    什么是0day漏洞?0day漏洞,是指已经被发现,但是还未被公开,同时官方还没有相关补丁的漏洞;通俗的讲,就是除了黑客,没人知道他的存在,其往往具有很大的突发性、破坏性、致命性。0day漏洞之所以称为0day,正是因为其补丁永远晚于攻击。所以攻击者利用0day漏洞攻击的成功率极高,往往可以达到目的并全身而退,而防守方却一无所知,只有在漏洞公布之后,才后知后觉,却为时已晚。“后知后觉、反应迟钝”就是当前安全防护面对0day攻击的真实写照!为了方便大家理解,中科三方为大家梳理当前安全防护模式下,一个漏洞从发现到解决的三个时间节点:T0:此时漏洞即0day漏洞,是已经被发现,还未被公开,官方还没有相

  3. ruby-on-rails - 仅在某些页面上使用 rails_xss - 2

    我正在使用rails_xss运行Rails2.3.14插入。我有另一个用于创建管理仪表板View的插件。我的问题是rails_xss正在转义我的仪表板插件生成的所有HTML。有没有一种方法可以将rails_xss配置为不转义匹配example.com/admin或基于目录(app/views/admin)或任何类似的页面结果一样吗? 最佳答案 更新仪表板生成插件以使用raw或html_safe进行内容输出可能会更简单。 关于ruby-on-rails-仅在某些页面上使用rails_xss

  4. ruby-on-rails - 我将 Rails3 与 tinymce 一起使用。如何呈现用户关闭浏览器javascript然后输入xss? - 2

    我有一个用Rails3编写的站点。我的帖子模型有一个名为“内容”的文本列。在帖子面板中,html表单使用tinymce将“content”列设置为textarea字段。在首页,因为使用了tinymce,post.html.erb的代码需要用这样的原始方法来实现。.好的,现在如果我关闭浏览器javascript,这个文本区域可以在没有tinymce的情况下输入,也许用户会输入任何xss,比如alert('xss');.我的前台会显示那个警告框。我尝试sanitize(@post.content)在posts_controller中,但sanitize方法将相互过滤tinymce样式。例如

  5. ruby-on-rails - 清理 URL 以防止 Rails 中的 XSS - 2

    在Rails应用程序中,用户可以创建事件并发布URL以链接到外部事件站点。如何清理url以防止XSS链接?提前致谢XSS示例,rails的清理方法无法防止@url="javascript:alert('XSS')"">testlink 最佳答案 一旦href已经在标签中,请尝试清理:url="javascript:alert('XSS')"sanitizelink_to('xsslink',url)这给了我:xsslink 关于ruby-on-rails-清理URL以防止Rails中的X

  6. ruby-on-rails - Ruby on Rails 和 XSS 预防 - 2

    RubyonRails中防止XSS的做法有哪些?我在网上发现了许多旧文档,大部分时间都是关于使用h/html_escape帮助程序转义来自用户的任何变量。我从较新的文档中了解到,在2.0及更高版本中有sanitize方法,自动清除假定的输入恶意输入。是否足够,或者您是否正在做更多的事情来保护您的应用程序? 最佳答案 h方法仍然是转义字符串中所有HTML的方法。您应该在输出内容的任何地方使用此方法。这种行为将在Rails3中发生变化。默认情况下所有输出都将被转义,您需要明确指定不对其进行转义。同时,如果您经常忘记使用此h方法,您可能需

  7. ruby - $SAFE >= 1 的 ruby​​ 中可能存在哪些漏洞? - 2

    Ruby'ssafemode不允许通过潜在危险的操作使用受污染的数据。它的级别各不相同,0表示禁用,然后1-4表示安全级别。启用安全模式时可能存在哪些漏洞?您知道在启用安全模式时发给ruby​​程序的任何CVE编号吗?什么CWEViolations(或cwe系列)是否可以启用安全模式? 最佳答案 所有应用程序级别的漏洞都完全不受$SAFE级别的影响。不通过“不安全操作”的注入(inject)攻击,例如跨站点脚本和SQL注入(inject)。这或多或少包括Web应用程序的每个漏洞类别,可能除了本地和远程文件包含。查看OWASPTop1

  8. Wordpress漏洞复现 - 2

    漏洞复现cms漏洞环境搭建漏洞复现cms1.内容管理系统(contentmanagementsystem,CMS),是一种位于WEB前端(Web服务器)和后端办公系统或流程(内容创作、编辑)之间的软件系统。内容的创作人员、编辑人员、发布人员使用内容管理系统来提交、修改、审批、发布内容。这里指的“内容”可能包括文件、表格、图片、数据库中的数据甚至视频等一切你想要发布到Internet、Intranet以及Extranet网站的信息。2.常见的cms系统国外的:Wordpress,Drupal,Joomla,这是国外最流行的3大CMS。国内则是DedeCMS和帝国,PHPCMS等。漏洞环境搭建一、

  9. javascript - CSRF 漏洞/cookie 问题 - 2

    只是想从认识的人那里得到意见。我正在考虑CSRF漏洞,以及我所知道的似乎最流行的对抗它的方法。该方法是在返回的html中创建一个token,并添加一个具有相同值的cookie。因此,如果脚本尝试发帖,他们将必须猜测网页中嵌入的token才能成功。但如果他们针对特定网站,为什么他们不能只使用一个脚本在页面上调用get(即使脚本无法访问它也会返回cookie)解析html并获取token调用其中包含该token的帖子(返回的cookie将被发回)他们在用户不知情的情况下成功提交了表单脚本不需要知道cookie的内容,它只是利用cookie一直来回发送这一事实。我在这里错过了什么?这不可能吗

  10. Javascript 清理 : The most safe way to insert possible XSS html string - 2

    目前我正在将此方法与jQuery解决方案结合使用,以从可能的XSS攻击中清除字符串。sanitize:function(str){//returnhtmlentities(str,'ENT_QUOTES');return$('').text(str).html().replace(/"/gi,'"').replace(/'/gi,''');}但我觉得它不够安全。我错过了什么吗?我在这里尝试了phpjs项目中的htmlentities:http://phpjs.org/functions/htmlentities:425/但它有点错误并返回一些额外的特殊符号。也许是旧

随机推荐