zoukankan      html  css  js  c++  java
  • XSS姿势——文件上传XSS

     简单介绍


    一个文件上传点是执行XSS应用程序的绝佳机会。很多网站都有用户权限上传个人资料图片的上传点,你有很多机会找到相关漏洞。如果碰巧是一个self XSS,你可以看看这篇文章。

    实例分析


    首先基本上我们都可以找到类似下面的一个攻击入口点,我觉得这个并不难。

    姿势一:文件名方式

    文件名本身可能会反映在页面所以一个带有XSS命名的文件便可以起到攻击作用。

    虽然我没有准备靶场,但是你可以选择在W3Schools练习这种XSS 。

    姿势二:Metadata

    使用exiftool这个工具可以通过改变EXIF  metadata进而一定几率引起某处反射:

    #!bash
    $ exiftool -field = XSS FILE
    

    例如:

    #!bash
    $ exiftool -Artist=’ “><img src=1 onerror=alert(document.domain)>’ brute.jpeg
    

    姿势三:Content

    如果应用允许上传SVG格式的文件(其实就是一个图像类型的),那么带有以下content的文件可以被用来触发XSS:

    #!html
    <svg xmlns="http://www.w3.org/2000/svg" onload="alert(document.domain)"/>
    

    一个 PoC用来验证。你可以通过访问brutelogic.com.br/poc.svg看到效果

    姿势四:Source

    建立一个携带有JavaScript payload的GIF图像用作一个脚本的源。这对绕过CSP(内容安全策略)保护“script-src ‘self’”(即不允许使用示例的这种xss方式进行攻击<script>alert(1)</script>)是很有用的,但前提是我们能够成功地在相同的域注入,如下所示。

    要创建这样的图像需要这个作为content 和 name,并使用.gif扩展名:

    #!html
    GIF89a/*<svg/onload=alert(1)>*/=alert(document.domain)//;
    

    这个GIF的图片头——GIF89a,作为alert function的变量分配给alert function。但是他们之间,还有一个被标注的XSS变量用来防止图片被恢复为text/HTML MIME文件类型,因此只需发送一个对这个文件的请求payload 就可以被执行。

    正如我们下面看到的,文件类unix命令和PHP函数中的exif_imagetype()和getimagesize()会将其识别为一个GIF文件。所以如果一个应用程序仅仅是使用这些方式验证是否是一个图像,那么该文件将可以上传成功(但可能在上传后被杀掉)。

    最后

  • 相关阅读:
    网络流 方阵移动
    NOI2019滚粗记
    PKUSC2019游记
    CQOI十二省联考游记
    数学结论题 书堆
    计算几何 大灾变
    51NOD 1773 A国的贸易
    BZOJ 3944
    51Nod 1238
    NOIP2018游记
  • 原文地址:https://www.cnblogs.com/M0rta1s/p/11743890.html
Copyright © 2011-2022 走看看