通过PHP实现Web端执行Shell命令

代码 2021-03-27

背景

由于很多命令每次连接SSH去执行太麻烦了,比如简单的reboot命令,多么希望可以在网页端控制。除此之外,对于拨号上网的动态IP的服务器来说,想要切换IP就需要SSH连接,先断开PPPOE拨号,再重新连接。这样的操作实在是繁琐。为了简单,我想实现向指定URL发送GET请求,即可实现更换IP的操作。


准备工作

  1. 安装PHP 7.3和Nginx。我采用的是BT Panel极速安装(在CentOS下)。安装完成后在禁用函数中删除两个包含”EXEC”的函数,以启用EXEC函数。
  2. 新建一个站点,可以绑定你的域名,并开启HTTPS(可选)。

开始设置

新建一个 index.php 的文件。

在该文件中,写入一下内容。

<?php
$command = "reboot";
exec($command,$array); //执行命令
print_r($array);
?>

如何触发

如果你绑定了你的域名为「exec.nisekoo.com」,或者你的IP为「1.1.1.1」。你仅需访问「https://exec.nisekoo.com」或者「1.1.1.1」即可触发Reboot命令。但是由于重启会断开Web端的连接,所以你仅需等待一段时间后,服务器后自动重启完成。请勿频繁刷新网页,这将可能导致你的服务器频繁重启。


一些优化

为了保证安全,可以设置一个访问密码,当你输入正确的密码时,才可以执行Shell命令。除此之外,可以把 $command变量的值,设置为input的值。这样即可实现在网页端输入自定义的命令。

评论 (0)
Top