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