基于 PHP 后端和 JavaScript 前端实现的简单网页终端,可用于在网页使用 PHP 进程执行 shell 命令。
本项目由 Gemini 编写,仅用于演示和学习研究使用。
PHP 后端通过 shell_exec() 函数执行用户输入的系统命令。这个函数会执行指定的命令,并返回命令的完整输出字符串。
为了模拟终端的持久化特性(如认证状态和当前工作目录),所有状态数据(例如 isAuthenticated、authStep、currentCwd)都由前端 JavaScript 维护。每次用户输入命令时,JavaScript 会将这些状态数据连同命令一起发送给 PHP 后端。PHP 根据这些接收到的状态进行处理(例如,判断是否已认证,或在指定 CWD 下执行命令),然后将更新后的状态连同命令输出一起返回给 JavaScript,JavaScript 再更新自身的状态并渲染界面。
由于 shell_exec() 是一个非交互式函数,它无法处理需要用户输入的命令或持续运行的交互式程序。这意味着你无法运行像 nano、vi、top、htop 等需要实时交互的程序。它更适合执行一次性的命令,如 ls、pwd、cat 等。
❗此脚本极度危险,仅用于演示和学习研究使用,切勿部署到任何公共或生产环境!
❗此脚本极度危险,仅用于演示和学习研究使用,切勿部署到任何公共或生产环境!
❗此脚本极度危险,仅用于演示和学习研究使用,切勿部署到任何公共或生产环境!
本脚本的核心功能是允许通过网页执行服务器上的任意 shell 命令。这意味着任何能够访问此页面的人都可以 PHP 进程的权限在服务器上执行任何命令,包括删除文件、安装恶意软件、窃取数据或完全控制系统。简单认证所使用的用户名和密码直接硬编码在 PHP 源代码中,几乎没有安全性可言!
- Web 服务器:支持 PHP 的 Web 服务器,如 Apache, Nginx, 或 PHP 内置服务器。
- PHP 环境:推荐 PHP 7.4 或更高版本。
shell_exec函数:PHP 配置中必须启用shell_exec函数。- 为确保安全性,请勿使用生产环境和公共网络环境!请务必使用本地测试或调试环境!
- 将所有代码保存为一个
.php文件(例如terminal.php)。 - 修改默认的用户名和密码。
- 将此文件放置到你的 Web 服务器可访问的目录中。
- 在浏览器中访问该文件对应的 URL (例如
http://localhost/terminal.php)。
- 打开网页后,你将看到
Login as:的提示。 - 输入默认用户名
root,按回车。 - 接着会出现
Password:提示,输入默认密码password,按回车。 - 认证成功后,你将看到终端提示符。
- 现在你可以输入各种非交互式 shell 命令,例如:
ls -lpwdwhoamicd /tmp(改变当前会话的CWD)clear或cls(清空终端显示)- 使用
↑和↓箭头键浏览历史命令。
- 每次刷新网页,认证状态和当前工作目录都将重置。