Skip to content

jibukeshi/php_web_terminal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

php_web_terminal

基于 PHP 后端和 JavaScript 前端实现的简单网页终端,可用于在网页使用 PHP 进程执行 shell 命令。

本项目由 Gemini 编写,仅用于演示和学习研究使用。

💡实现原理

核心机制:shell_exec() 函数

PHP 后端通过 shell_exec() 函数执行用户输入的系统命令。这个函数会执行指定的命令,并返回命令的完整输出字符串。

状态管理:前端 JavaScript

为了模拟终端的持久化特性(如认证状态和当前工作目录),所有状态数据(例如 isAuthenticatedauthStepcurrentCwd)都由前端 JavaScript 维护。每次用户输入命令时,JavaScript 会将这些状态数据连同命令一起发送给 PHP 后端。PHP 根据这些接收到的状态进行处理(例如,判断是否已认证,或在指定 CWD 下执行命令),然后将更新后的状态连同命令输出一起返回给 JavaScript,JavaScript 再更新自身的状态并渲染界面。

命令交互性:非交互式

由于 shell_exec() 是一个非交互式函数,它无法处理需要用户输入的命令或持续运行的交互式程序。这意味着你无法运行像 nanovitophtop 等需要实时交互的程序。它更适合执行一次性的命令,如 lspwdcat 等。

⚠️安全警告

❗此脚本极度危险,仅用于演示和学习研究使用,切勿部署到任何公共或生产环境!

❗此脚本极度危险,仅用于演示和学习研究使用,切勿部署到任何公共或生产环境!

❗此脚本极度危险,仅用于演示和学习研究使用,切勿部署到任何公共或生产环境!

本脚本的核心功能是允许通过网页执行服务器上的任意 shell 命令。这意味着任何能够访问此页面的人都可以 PHP 进程的权限在服务器上执行任何命令,包括删除文件、安装恶意软件、窃取数据或完全控制系统。简单认证所使用的用户名和密码直接硬编码在 PHP 源代码中,几乎没有安全性可言!

⚙️使用方法

环境要求

  • Web 服务器:支持 PHP 的 Web 服务器,如 Apache, Nginx, 或 PHP 内置服务器。
  • PHP 环境:推荐 PHP 7.4 或更高版本。
  • shell_exec 函数:PHP 配置中必须启用 shell_exec 函数。
  • 为确保安全性,请勿使用生产环境和公共网络环境!请务必使用本地测试或调试环境!

部署与访问

  1. 将所有代码保存为一个 .php 文件(例如 terminal.php)。
  2. 修改默认的用户名和密码。
  3. 将此文件放置到你的 Web 服务器可访问的目录中。
  4. 在浏览器中访问该文件对应的 URL (例如 http://localhost/terminal.php)。

基本操作

  1. 打开网页后,你将看到 Login as: 的提示。
  2. 输入默认用户名 root,按回车。
  3. 接着会出现 Password: 提示,输入默认密码 password,按回车。
  4. 认证成功后,你将看到终端提示符。
  5. 现在你可以输入各种非交互式 shell 命令,例如:
  • ls -l
  • pwd
  • whoami
  • cd /tmp (改变当前会话的CWD)
  • clearcls (清空终端显示)
  • 使用 箭头键浏览历史命令。
  1. 每次刷新网页,认证状态和当前工作目录都将重置。

About

基于 PHP 后端和 JavaScript 前端实现的简单网页终端,可用于在网页使用 PHP 进程执行 shell 命令。

Resources

Stars

Watchers

Forks

Contributors

Languages