在网页中的单击事件上执行 shell 命令

在网页中的单击事件上执行 shell 命令

当我点击浏览器中的文本时,有没有办法执行 bash 命令?

网页位于计算机 A 上,浏览器位于计算机 B 上:我想在计算机 B 上执行代码,例如hsetroot单击图像时更改壁纸。

答案1

不完全是,不。这是所有安全漏洞之母。您询问是否可以设置一个在客户端计算机上执行任意命令的网页。如果我设置一个运行此命令的网页会怎样:

rm -rf ~/

这将删除您的$HOME.事实上,最近引起了轩然大波发现了一个错误这使得这种情况发生。可能的攻击媒介之一欺骗客户端(在你的例子中是计算机 B)运行 bash 命令。

所以不,您不能通过网络浏览器在本地计算机上执行任意代码。除非先以某种方式登录。您可以运行 JavaScript 或类似的语言命令,但它们无权访问您的用户会话。

答案2

我使用 NodeJS 服务器解决了这个问题。 (不是干净/最终的代码,但它可以工作)

计算机A:(服务器)

function change_wallpaper(image){
    var objReq = new XMLHttpRequest();
    objReq.open("GET", "http://localhost:8888" + "?image=" + image, false);
    objReq.send(null);
}
<img src="./img/1.jpeg" onclick="change_wallpaper(this.src);" />
<img src="./img/2.jpeg" onclick="change_wallpaper(this.src);" />

计算机 B :(客户端)server.js执行名为 ans 的文件nodejs server.js

var http = require("http");
var sys = require('sys')
var exec = require('child_process').exec;
var url = require("url");

function onRequest(request, response) {
    var params = url.parse(request.url,true).query;
    function puts(error, stdout, stderr) {sys.puts(stdout)}
    exec("/usr/bin/feh --bg-center " + params.image, puts);
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Wallpaper');
}

http.createServer(onRequest).listen(8888);

答案3

一般情况下你不能这样做,但是在一个定义的环境中,你可以控制客户端机器B,你可以建议机器B运行一个setroot服务,你可以简单地用nodejs或golang自己编写并与之对话当您收到事件时的服务。但无论如何,如果你不在机器 B 上安装一些额外的服务,你就没有任何机会(或者至少你永远不应该有机会)。

答案4

是的..有可能中性

您可以使用Neutralino.os.runCommand()。但在你的场景中可以使用Neutralino云模式。

相关内容