Rundll32.exe javascript

时间:2014-08-05 05:00:35

标签: javascript mshtml rundll32

我刚刚(2014年8月)看到了一个使用命令行的程序的报告

rundll32.exe javascript:"\..\mshtml,RunHTMLApplication"

这是如何工作的?我认为第一个参数应该是DLL的名称(mshtml),但是rundll32如何解析该命令行?

rundll参考:     http://support.microsoft.com/kb/164787

1 个答案:

答案 0 :(得分:13)

这里有一个很好的解释:http://thisissecurity.net/2014/08/20/poweliks-command-line-confusion/

总结使用相同的例子:

rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";alert('foo');
  1. RUNDLL32
    1. 解析命令并确定目标DLL是:javascript:"\..\mshtml
    2. 在加载时失败为绝对路径。
    3. 无法在工作目录或路径中找到匹配项。
    4. 无法为模块找到清单javascript:"\..\mshtml.manifest
    5. 调用 LoadLibrary
  2. 的LoadLibrary
    1. 添加扩展程序并尝试加载javascript:"\..\mshtml.dll
    2. 将其视为相对的,因此它从假的javascript:"\目录开始。
    3. 搜索它在系统目录中找到的mshtml.dll
    4. 使用 RunHTMLApplication 作为入口点加载DLL。
  3. RunHTMLApplication
    1. 尝试执行命令";alert('foo');
    2. 作为无效的Javascript,它为原来的命令调用 GetCommandLine ,返回javascript:"\..\mshtml,RunHTMLApplication ";alert('foo');
    3. 尝试打开此URI,以便它询问系统如何处理 javascript 协议,该协议通常在注册表中设置为 Microsoft HTML Javascript Pluggable Protocol
    4. 然后执行Javascript:"..\mshtml,RunHTMLApplication ";alert('foo');
  4. 的Javascript
    1. 第一个语句创建一个字符串,不对它做任何有效的事情,不会导致错误。
    2. 继续执行脚本的其余部分。