初识XSS

XSS漏洞的定义

XSS全称(Cross Site Scripting)跨站脚本攻击,为了与CSS有区别,所以被称为XSS。
XSS攻击是指通过HTML注入篡改网页,插入恶意js代码,从而在用户浏览网页是,嵌入在web里的js代码会被执行,从而达到恶意攻击的特殊目的。

XSS的触发条件

标签弹窗:<script>alert(1)</script>
伪协议触发:<a javascript:alert(1)></a>
事件触发:
1、加载图片成功时:<img src='a' onerror=alert(1) />
2、加载图片成功时:<img src='a' onload=alert(1) />
其他事件类型:https://www.w3school.com.cn/tags/html_ref_eventattributes.asp

XSS触发类型

在输入框输入字符时触发:oninput=alert(1)
点击输入框时;通过焦点触发:onfocus=alert(1)
自动获取焦点:onfocus=alert(1) autofocus

反射型XSS

反射型XSS又称非持久性,这种XSS只能临时保存在浏览器中,通过诱导受害者去访问特定的连接地址,已达到攻击的目的。
交互的数据不会被存入数据库,一次性的,一般出现在查询类页面。
在这里插入图片描述
简单举例:
新建xss.php文件,代码如下
在这里插入图片描述
通过GET传参接收input传入的值,然后进行输出,在传递的过程中没有进行任何的过滤
在这里插入图片描述在这里插入图片描述
这时如果输入一些js代码
在这里插入图片描述
页面弹窗,这时如果输入类似(document.cookie)js语句就可以获取用户信息。这种弹窗没有被存入数据库,只是在服务器产生的弹窗,没有什么意义,这个需要诱导受害者点击特定连接才可以。

存储型XSS

攻击者在页面上插入XSS代码,服务端会将代码存入数据库,当用户访问到存在XSS漏洞的页面是,服务器就会从数据库中取出数据展示到页面上,导致XSS代码被执行,达到攻击效果,此攻击是持久型的,每一个访问到这个页面的用户都会被攻击,这种XSS会大量盗取用户cookie,造成蠕虫。
这类XSS一般会出现在留言板,注册页面等

示例代码:
在这里插入图片描述
这个是通过post方式提交,并把提交的数据放到sql.txt文件中,模拟存储型XSS。
在输入框提交数据之后,页面上会有显示提交的内容,并且在sql.txt文件中也会出现提交的内容
在这里插入图片描述
那么如果这个时候我们传入的是恶意js语句,也会被存储到文件中,当用户去访问这个页面的时候,系统会自动调取这个文件中的内容显示到页面上,从而导致每一个访问这个页面的用户都会触发JS语句
在这里插入图片描述

DOM型XSS

DOM-XSS 漏洞是基于文档对象模型(document object model)的一种漏洞,DOM是一个与平台、变成语言无关的接口,他润徐程序或脚本动态的访问和更新文档内容、结构和样式,处理后的结果能够成为页面的一部分。客户端的脚本程序可以通过DOM动态的检查和修改页面内容,如果DOM中的数据没有经过严格确认,就会产生DOM-XSS漏洞
这种XSS不予后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生问题,大部分属于反射型
DOM简介https://www.jianshu.com/p/7b7f17879ceb
DOM XSS的形成是因为,在浏览器中,页面的跳转,包括一些输出都是通过JS语句来执行的,分成了不同的DOM节点,当这些DOM节点的传参可控时,便形成DOM-XSS。
跳转节点
在很多地方,网页需要页面的跳转,这些通过JavaScript实现跳转,这些地方有可能会因为限制不严格导致任意url跳转漏洞,也会因为跳转部分传参可控,导致DOM XSS
跳转函数:location.href()``location.replace()``location.assign()
伪协议跳转:javascript:/vbscript:/data:/tencent:/mobileqqapi:
示例代码:
在这里插入图片描述
利用伪协议进行跳转
在这里插入图片描述

替换函数

innerHTML()是替换HTML中的某些内容
getElementById()返回拥有id值属性的内容
当着两者搭配使用时,会产生一些问题
在这里插入图片描述在这里插入图片描述
当使用script标签时,发现内容消失,但是并没有弹窗
在这里插入图片描述
经过测试发现,使用事件型可以触发弹窗
在这里插入图片描述
最后寻找原因,是因为标签需要在有输出的情况下,才可以触发弹窗,当把innerHTML修改的内容赋给一个变量,然后进行输出,发现script标签,便可以进行弹窗
在这里插入图片描述

XSS防范

在反射型和存储型XSS中,用户的传参会经过PHP的处理之后,然后传到页面上,那么可以在后端设置一些函数进行过滤
htmlspecialchars函数:将尖括号<>,转化为HTML实体,让其失去代码的意义
htmlentities函数 htmlentities($str,ENT_QUOTES):将单双引号进行编码
HTMLPurifier.auto.php插件
RemoveXss函数
DOM型XSS因为不会经过后端,所以需要在前段代码中进行过滤检测
参考文章:https://mp.weixin.qq.com/s/Ly69JPH8ttDnvUiRRkfIvA
https://blog.0daylabs.com/2019/02/24/learning-DomXSS-with-DomGoat/

  • 18
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值