网页控制shell 命令如何实现?
发布于 6 年前 作者 gnailiy 3857 次浏览 来自 问答

rt,想问比如一些网站后台实现的在页面上直接直接修改 nginx.conf 内容,点击“保存” 之后服务器就能获取到修改的配置,并自动重启nginx了。

只是举了一个例子。想问这种操作是通过页面在用户点击按钮之后,发出了一个http请求,后台接收到之后去操作文件内容,然后调用shell命令实现的么? 或者这样的需求通常是怎么实现的?

好像之前看到过 webshell ,但是感觉不是同一个东西。

5 回复

child_process模块

@ProfutW 感谢你,不过child_process 这个就是下层 nodejs 调用shell 的模块了啊,emmm 我是想问,后台接收到用户的修改请求是否通常就是 http请求来交互了?

@gnailiy 用户请求应该都是通过http传到后台吧。。你例子中说的我觉得应该是有某个进程监控着nginx.conf这个文件,一旦发生改动就重启服务,就比如supervisor这种模块的功能。

来自酷炫的 CNodeMD

没错,大概过程就是是这样的:用户点击保存按钮,发送一个http POST到后端服务,后端服务进程通过文件操作接口修改相关配置文件,配置文件更改完成后,通过创建子进程 child_process.exec 调用相关shell命令或程序。当然,你这么做的结果可能导致别人窃听和劫持数据,通过发送相关http请求即可改变你的服务器!这就是一种系统后门和漏洞了,也就是webshell。所以这种操作一定要做好安全,不然容易被黑。

来自✨ Node.js开源项目精选

回到顶部