zoukankan      html  css  js  c++  java
  • 【XSS技巧拓展】————22、Source-Breaking Injections

    在处理HTML注入时,有一个有趣的技巧可以使XSS攻击起作用。为了说明这种技术,我们将使用以下内容,作为小型挑战发推文:

    #XSS迷你挑战https://t.co/rlInsfDTah
    解决方案在下周六的#blogpost中pic.twitter.com/UtL39rxy3D

    代码简短而且非常简单,使用现实场景的关键元素构建:

    brutelogic.com.br/tests/newsletter.php

    与明显的输入相反,在这段代码中我们有一个PHP_SELF  漏洞,这使我们能够在不提供任何参数的情况下注入URL:

    当我们注入标记属性时,我们试图突破它而没有成功,因为关闭标记并开始新标记所需的大于号(>)被替换为减号( - ):

    因此,我们将尝试使用事件处理程序来使用内联注入:

    再次没有成功,但这次是因为javascript块(第11行到第17行)清理了每个字符串,其中“on”跟随或不是间隔字符(%09 %0A,%0C,%0D或%20)和document.location.href(第15行)中的等号(=),即处理URL的属性。

    javascript函数eventFilter()在文档主体加载时调用(第3行),操作在运行时构建的页面(参见  DOM),因此尽管它在源上正确反映,但注入不起作用。

    但是如果我们创建一个任意属性并且只是保持其值打开,那么注入后的所有代码都将被更改为其值:

    这样,只有当浏览器的HTML解析器找到下一个单引号(')时才会关闭“1”属性,该引用位于“Don’t be evil”这个短语上。我们注入的表单标记将在下一个大于符号(>)中关闭,该标记位于</ h6>标记中。

    输入字段与提交按钮一起消失,javascript函数完全禁用(全部从第8行到第18行)。因为在页面中没有更多元素可以交互,“style”属性也被“ - ”替换,我们不能在我们的目标标记之后注入任何东西,我们无法触发我们提供的事件处理程序(并且没有在不可知的事件处理程序)。

    所以这是最后一招。在当前的Firefox浏览器中,我们有以下处理程序,在源代码中只需要一个脚本块来触发它们:

    onafterscriptexecute

    onbeforescriptexecute

    但要达到挑战的最后(在页面的congrats.js脚本中)

    if (brute)
        alert(“Congratz, buddy!”);
    else
        alert(“Almost there, try again.”);

    我们只能使用后者:

    总会有不期而遇的温暖. 和生生不息的希望。
  • 相关阅读:
    Python中os与sys两模块的区别
    单线程爬取图片
    linux下glances服务器监控工具
    python中的join()函数的用法
    python的exec、eval详解
    mongodb启动不了解决方法
    生产者和消费者(.net实现)
    IOS开发--第一阶段--导行(1)(基本概念)
    12.26 linux基本操作指令
    12.25
  • 原文地址:https://www.cnblogs.com/devi1/p/13486393.html
Copyright © 2011-2022 走看看