从Javascript和HTML运行Unix命令

时间:2015-11-05 15:56:26

标签: javascript html linux bash terminal

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

简而言之,总体思路如下:

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

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

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

  4. (优先级现在是第1点和第2点)

    提前致谢。

    P.S。如果这是不可能的......有没有办法在不使用javascript的情况下执行此操作?

2 个答案:

答案 0 :(得分:3)

这是不可能的,或者它将是有史以来最大的安全漏洞。

答案 1 :(得分:1)

用户可以轻松地注入和更改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('gedit')”将在我的计算机上打开gedit。

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