웹 페이지에서 클릭 이벤트가 발생하면 쉘 명령 실행

웹 페이지에서 클릭 이벤트가 발생하면 쉘 명령 실행

브라우저에서 텍스트를 클릭하면 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.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);

답변3

일반적으로 이 작업을 수행할 수 없지만 클라이언트 시스템 B를 제어할 수 있는 정의된 환경에서는 시스템 B에게 setroot 서비스를 실행하도록 제안할 수 있습니다. 이벤트를 받았을 때. 그러나 어쨌든, 머신 B에 몇 가지 추가 서비스를 설치하지 않으면 가능성이 없습니다(또는 적어도 가능성이 있어서는 안 됩니다).

답변4

응..가능해중립적.

당신은 그것을 사용할 수 있습니다 Neutralino.os.runCommand(). 그러나 귀하의 시나리오에서는 Neutralino 클라우드 모드를 사용할 수 있습니다.

관련 정보