bob*_*lan 16 shell browser events
当我单击浏览器中的文本时,有没有办法执行 bash 命令?
网页在计算机 A 上,浏览器在计算机 B 上:我想在计算机 B 上执行代码,例如hsetroot在单击图像时更改墙纸。
不是真的,不是。这是所有安全漏洞的根源。你问你是否可以设置一个在客户端机器上执行任意命令的网页。如果我设置一个运行此命令的网页会怎样:
rm -rf ~/
Run Code Online (Sandbox Code Playgroud)
这将删除您的$HOME. 事实上,当发现允许这种情况发生的错误时,最近引起了轩然大波。可能的攻击媒介之一是欺骗客户端(在您的情况下是计算机 B)运行 bash 命令。
所以不,你不能通过网络浏览器在本地机器上执行任意代码。并非没有以某种方式先登录。您可以运行 JavaScript 或类似的语言命令,但它们无法访问您用户的会话。
我使用 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);" />
Run Code Online (Sandbox Code Playgroud)
计算机 B:(客户端)文件调用server.jsans 执行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);
Run Code Online (Sandbox Code Playgroud)