从Javascript和HTML运行Unix命令

Run Unix commands from Javascript and HTML

本文关键字:Unix 命令 运行 HTML Javascript      更新时间:2023-09-26

我想使用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的情况下做到这一点?

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

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

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

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('edit')"会在我的电脑上打开gedit。

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