小迪安全v2023学习笔记(五十二讲)—— 持续更新中

前记

WEB攻防——第五十二天

XSS跨站&反射型&存储型&DOM型&标签闭合&输入输出&JS代码解析

XSS跨站 - 输入输出-原理&分类&闭合

  • 漏洞原理:接收输入数据,输出显示数据到前端页面后解析执行
  • 分类:反射型(非持续、经过服务器)、存储型(持续、经过服务器)、DOM-BASE(非持续、不经过服务器)
  • 扩展类型jquerymxssuxsspdfxssflashxss、上传xss
  • 常用标签xss 常用标签及绕过姿势总结 - FreeBuf网络安全行业门户
<a href="">: 定义超链接
<img src="">: 嵌入图片
<iframe src="">: 嵌入一个HTML文档
<audio>: 定义音频内容
<video>: 定义视频内容
<svg>: 定义可缩放矢量图形
<button onclick="">: 定义按钮
<script>: 定义js脚本语句
...
  • 攻击利用:盲打、COOKIE盗取、凭证窃取、页面劫持、网络钓鱼、权限维持等
  • 安全修复:字符过滤、实例化编码、http_onlyCSP防护、WAF拦截等
  • 测试流程
    • 看输入输出在哪里
    • 更改输入代码看执行(标签、过滤决定)
    • 如果不能执行F12看过滤情况,尝试绕过

XSS跨站 - 分类测试-反射&存储&DOM

测试点
  • 数据交互的地方
    • getpostheadersget就是看一些URL参数;post就是一些登录点、留言板;headers就是像UA头、cookie
    • 反馈与浏览
    • 富文本编辑器
    • 各类标签插入和自定义
  • 数据输出的地方
    • 用户资料
    • 数据输出
    • 评论、留言等
    • 关键词、标签、说明
    • 文件上传
  • 总结一句话,任何可以自定义输入数据的地方都可以尝试XSS
  • 看不懂?看不懂没关系,下面结合三种类型的演示案例来理解一下就可以了
反射型XSS

在这里插入图片描述

  • 常见的情况是攻击者通过构造一个恶意链接的形式,诱导用户传播和打开

  • 由于链接内所携带的参数会回显于页面中或作为页面的处理数据,最终造成XSS攻击

  • 这个漏洞怎么说呢,属于低危漏洞,基本不收,因为想要造成危害比较困难。首先你得构造一个恶意链接,然后让别人点击,先不说别人会不会点,就算会点,可能浏览器的一些策略也会进行拦截,所以利用也是比较难的。

  • 这里以一个真实网站为例: https://useragent.openadmintools.com/
    在这里插入图片描述

  • 这里它会自动获取你的UA头信息,而且这个UA头的输入我们是可控的,那么我们尝试输入xss语句看他会不会执行:
    在这里插入图片描述
    在这里插入图片描述

  • 可以看到,弹出对话框,通过分析我们知道:
    在这里插入图片描述

  • 这里它是因为它输出的地方没有做任何过滤,所以导致后面的xss语句正常插入并且执行了

存储型XSS

在这里插入图片描述

  • 存储型XSS是持久化的XSS攻击方式,它将恶意代码存储于服务器端,比如数据库、留言页面、日志文件等,当其他用户访问该页面时就会触发代码,造成xss攻击

  • 这个漏洞的危害就比较大了,因为它是插入到一个正常页面的,你只需要浏览就能够触发

  • 这里还是以一个实际的案例来演示,这里我们搭建一个小皮控制面板:
    在这里插入图片描述

  • 然后先利用管理员账号密码登录:
    在这里插入图片描述

  • 这里可以看到右下角有一个操作日志,这里会记录用户登录情况,比如刚刚使用admin登录它就会记录

  • 这里我们可能不确定它是不是显示的就是用户名,我们可以再尝试输入其他的用户名登录一下,这里我就不试了,它确实是记录的登录时的用户名,并且登录失败也会记录:
    在这里插入图片描述

  • 好,现在xss利用的两要素已经齐活了:有输入且可控,有输出前端回显

  • 那我们就可以测试了,登录框写入xss语句:
    在这里插入图片描述

  • 这里可能<script>语句被禁止了,试了几次都没成功,那可以换成其他的xss语句,比如<img src=x onerror="alert(1)">,这里刷新后台就成功弹出xss信息:
    在这里插入图片描述

  • 然后你每次刷新都会弹,只有当清除日志后才会失效,这就是存储型xss

DOM型XSS

在这里插入图片描述

  • DOMXSS是通过将恶意代码插入到客户端的DOM树中,实现XSS攻击,无需经过服务器,因此相对来说比较难以检测

  • 那什么是DOM树呢,之前安全开发也讲过,DOM是文档访问对象模型,其实就是html标签元素都看成对象,然后通过对象去访问其方法和属性

  • 而DOM树就是这个东西分层之后看起来像树一样的树形结构图
    在这里插入图片描述

  • 然后DOM-XSS的利用方式有很多种,详细看这篇文章:DOM-XSS攻击原理与防御 - Mysticbinary - 博客园

  • 我们就讲解比较常见的一种——跳转类DOM-XSS,首先以代码的视角去讲解:

<html>  
    <head>  
        <title> DOM-XSS TEST </title>  
    </head>  
    <body>  
        <script>  
            var hash = location.hash;  
            if(hash){  
                var url = hash.substring(1);  
                location.href = url;  
            }  
        </script>  
    </body>  
</html>
  • 假设有这样一个代码,正常访问是用#去实现页面跳转,但是因为跳转部分参数可控,可能导致Dom xss。

  • 通过 location.hash 的方式,将参数写在 # 号后,既能让JS读取到该参数,又不让该参数传入到服务器,从而避免了WAF的检测。

  • 变量hash作为可控部分,并带入url中,变量hash控制的是#之后的部分,可以使用伪协议#javascript:alert(1)
    在这里插入图片描述

  • 可以看到通过改变客户端的传入参数即可造成xss,服务器的检测是没有用的,这就是简单的DOM-XSS演示

  • 那么在实战中呢,也是存在的,我们可以通过edu.cn inurl:url=http语法去google上搜索一下,找到某某大学的一个网站(gay迪上演示的站点),没错,两年了,这个洞还在,哈哈哈,说明这玩意单独利用是真的没什么危害

  • 发现这样的传参:http://www.xxx.net/URL.html?url=http://xxx,然后自动跳转对应的URL

  • 我们抓包,将URL改为https://www.baidu.com看会不会跳转:
    在这里插入图片描述
    在这里插入图片描述

  • 成功跳转,那就可能存在漏洞,尝试使用javascript:alert(1)弹窗:
    在这里插入图片描述

  • 成功弹出xss框,说明存在DOM-XSS漏洞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值