브라우저에서 텍스트를 클릭하면 bash 명령을 실행할 수 있는 방법이 있습니까?
hsetroot
웹페이지는 컴퓨터 A에 있고 브라우저는 컴퓨터 B에 있습니다. 이미지를 클릭하면 배경화면을 변경하는 등의 코드를 컴퓨터 B에서 실행하고 싶습니다 .
답변1
정확히는 아닙니다. 이것이 모든 보안 취약점의 근원입니다. 클라이언트 컴퓨터에서 임의의 명령을 실행하는 웹 페이지를 설정하는 것이 가능한지 묻고 있습니다. 이 명령을 실행하는 웹 페이지를 설정하면 어떻게 되나요?
rm -rf ~/
실제로 $HOME
최근 소란이 발생했습니다.오류가 발견되었습니다이를 통해 이런 일이 발생할 수 있습니다.가능한 공격 벡터 중 하나bash 명령을 실행하도록 클라이언트(귀하의 경우 컴퓨터 B)를 속입니다.
따라서 아니요. 웹 브라우저를 통해 로컬 컴퓨터에서 임의의 코드를 실행할 수 없습니다. 먼저 로그인하지 않는 한. 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 서비스를 실행하도록 제안할 수 있습니다. 이벤트를 받았을 때. 그러나 어쨌든, 머신 B에 몇 가지 추가 서비스를 설치하지 않으면 가능성이 없습니다(또는 적어도 가능성이 있어서는 안 됩니다).
답변4
응..가능해중립적.
당신은 그것을 사용할 수 있습니다 Neutralino.os.runCommand()
. 그러나 귀하의 시나리오에서는 Neutralino 클라우드 모드를 사용할 수 있습니다.