มีวิธีรันคำสั่ง bash เมื่อฉันคลิกที่ข้อความในเบราว์เซอร์หรือไม่?
หน้าเว็บอยู่ในคอมพิวเตอร์ A เบราว์เซอร์อยู่ในคอมพิวเตอร์ B: ฉันต้องการรันโค้ดบนคอมพิวเตอร์ B เช่นhsetroot
เปลี่ยนภาพพื้นหลังเมื่อคลิกที่ภาพ
มีวิธีรันคำสั่ง bash เมื่อฉันคลิกที่ข้อความในเบราว์เซอร์หรือไม่?
หน้าเว็บอยู่ในคอมพิวเตอร์ A เบราว์เซอร์อยู่ในคอมพิวเตอร์ B: ฉันต้องการรันโค้ดบนคอมพิวเตอร์ B เช่นhsetroot
เปลี่ยนภาพพื้นหลังเมื่อคลิกที่ภาพ
คำตอบ:
ไม่จริงไม่ นั่นคือแม่ของรูโหว่ทั้งหมด คุณกำลังถามว่าคุณสามารถตั้งค่าเว็บเพจที่ดำเนินการคำสั่งโดยพลการบนเครื่องของลูกค้าได้หรือไม่ ถ้าฉันตั้งค่าเว็บเพจที่รันคำสั่งนี้:
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 สามารถเปลี่ยนเนื้อหาของ textfiles ข้ามเบราว์เซอร์ตัวอย่างเช่นใน /var/www/.../folder/mytextfie.txt คุณมีเพียงเพื่อรับสายจากไฟล์นั้น whitch สามารถเป็นคำสั่งหรือแม้แต่คำสั่งเพื่อเริ่มไฟล์สคริปต์ .
cronjob สามารถรันเพื่อตรวจสอบว่า textfile นั้นมีไฟล์เรียกทำงานใด ๆ
#!/usr/bin/env bash
echo $(cat /var/www/.../folder/commandsperline.txt)
#or
while read line
do
echo "$(${line})"
done< "/var/www/.../folder/commandsperline.txt"
บริบทของ textfile นั้น:
#!/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
ด้วยขณะที่วนซ้ำคุณสามารถเรียกใช้คำสั่งจากไฟล์ข้อความนั้นได้