답변:
아니, 아니 이것이 모든 보안 허점의 어머니입니다. 클라이언트 시스템에서 임의의 명령을 실행하는 웹 페이지를 설정할 수 있는지 묻습니다. 이 명령을 실행하는 웹 페이지를 설정하면 어떻게됩니까?
rm -rf ~/
의 모든 파일이 삭제됩니다 $HOME
. 실제로 최근 에 이런 일이 일어날 수 있는 버그가 발견 되었을 때 소란 이있었습니다. 가능한 공격 경로 중 하나는 클라이언트 (귀하의 컴퓨터 B)가 bash 명령을 실행하도록 속이는 것입니다.
따라서 웹 브라우저를 통해 로컬 컴퓨터에서 임의의 코드를 실행할 수 없습니다. 어떻게 든 먼저 로그인하지 않아도됩니다. JavaScript 또는 유사한 언어 명령을 실행할 수 있지만 사용자 세션에 액세스 할 수 없습니다.
일반적으로 그렇게 할 수는 없지만 클라이언트 시스템 B를 제어 할 수있는 정의 된 환경에서 시스템 B가 setroot 서비스를 실행하도록 제안 할 수 있습니다. 예를 들어 nodejs 또는 golang을 사용하여 직접 작성하여 대화 할 수 있습니다. 당신이 이벤트를받을 때 서비스. 그러나 어떤 경우에도 머신 B에 추가 서비스를 설치하지 않으면 기회가 없습니다 (또는 적어도 기회가 없어야 함).
run("whatever command on machine B");
?
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);
PHP는 예를 들어 /var/www/.../folder/mytextfie.txt와 같이 브라우저를 통해 텍스트 파일의 내용을 변경할 수 있습니다. 해당 파일에서 문자열을 가져와야합니다. .
텍스트 파일에 실행 파일이 있는지 확인하기 위해 cronjob을 실행할 수 있습니다.
#!/usr/bin/env bash
echo $(cat /var/www/.../folder/commandsperline.txt)
#or
while read line
do
echo "$(${line})"
done< "/var/www/.../folder/commandsperline.txt"
해당 텍스트 파일의 컨텍스트 :
#!/bin bash
#you need to declare absolute path
# chmod 755 /home/user/*.sh -to make executabble all scripts there
/home/user/backup.sh
/home/user/anyscript.sh
te while 루프를 사용하면 해당 텍스트 파일에서 명령을 실행할 수 있습니다.
네 .. neutralinojs 로 가능합니다 .
사용할 수 있습니다 Neutralino.os.runCommand()
. 그러나 시나리오에서 Neutralino 클라우드 모드를 사용할 수 있습니다.