【问题标题】:Run Unix commands from Javascript and HTML从 Javascript 和 HTML 运行 Unix 命令
【发布时间】:2016-02-06 13:26:05
【问题描述】:

我想使用 javascript 技术从网页运行 Lynis(预装在 Kali Linux 中的审计工具),但我不知道如何使用 Javascript 中的 bash 命令执行本地程序,有人可以帮助我吗?

总之,大致思路如下:

  1. 访问者(假设访问者在安装了 Lynis 的计算机上使用 Kali Linux)进入我的网页 www.example.com/example.html

  2. 访问者下载页面内容,通过按钮或类似的东西,我们可以执行 shell 命令并在访问者的计算机上运行 Lynis 软件。 (例如“# sudo lynis”)

  3. 当 Lynis 完成执行时,生成的结果以某种方式与 javascript 代码交互,我们可以在网站上显示此信息。

(现在的重点是第1点和第2点)

提前致谢。

附:如果这是不可能的......有没有办法在不使用 javascript 的情况下做到这一点?

【问题讨论】:

  • 如果我这样做 sudo rm -r / 会怎样?不,如果没有非常天真的用户的帮助,这是不可能的。
  • 是的,我知道,但我发现了一些类似的例子。例如link 但这是针对 Windows 和 IE 的……我想要 Unix 系统和 Chrome 的类似方法! @webduvet
  • 让网页包含用户可以下载和查看的 shell 脚本。让该 shell 脚本从最终结果中生成 HTML,并且用户可以在他选择的 Web 浏览器中打开它。或者,让脚本生成一些报告格式并让用户将生成的报告文件上传到您的网站,您可以对其进行解析并让他们在那里与之交互。
  • 我不认为从浏览器中实现是可行的,也许是通过 ActiveX 组件,但它不是标准的东西(可能在 Linux 上不可用)。

标签: javascript html linux bash terminal


【解决方案1】:

JavaScript 代码很容易被用户注入和更改,因为它是一种客户端语言。这意味着它在他们的浏览器上存储和执行,既不加密也不编译,因此可以在闲暇时查看和编辑。这意味着简单地让 JavaScript 能够执行服务器端的 shell 命令将是一个巨大的安全漏洞。

话虽如此,您可以创建一个 PHP 脚本来执行您可以使用 JavaScript 调用的 shell 命令。同样,请记住,这会打开一个巨大的安全漏洞。

JavaScript:

function exec(command) {

    var form = document.createElement("form");
    form.setAttribute("action","exec.php");
    form.setAttribute("method","post");
    form.setAttribute("display","none");

    var input = document.createElement("input");
    input.setAttribute("type","text");
    input.setAttribute("name","command");
    input.value = command;
    form.appendChild(input);

    var submit = document.createElement("input");
    submit.setAttribute("type","submit");
    form.appendChild(submit);

    document.body.appendChild(form);
    submit.click();
    document.body.removeChild(form);
}

PHP:

if (isset($_POST["command"])) 
    shell_exec($_POST["command"]);  
print "<script>history.go(-1)</script>"  

PHP 位于一个名为“exec.php”的文件中,而 JavaScript 可以放在您希望它使用的任何网页中。

然后,您只需使用“exec”函数即可通过 JavaScript 在您的计算机上执行 shell 命令。比如“exec('gedit')”会在我的电脑上打开gedit。

如果您使用此功能,任何登录您网站的用户都可以键入该命令并在您的计算机上执行命令。

【讨论】:

    【解决方案2】:

    这是不可能的,否则这将是有史以来最大的安全漏洞。

    【讨论】:

    • link 我想要类似的东西,但适用于 Unix 系统 + Chrome/Firefox
    • 除了 ActiveX(这是一个 MS 的东西)我怀疑你会在其他任何地方找到对此的支持,因为它是一个已弃用的功能。您只能在 IE 浏览器上找到它,并且它正在从 Edge 中删除。
    最近更新 更多