TrojanSpot

BackDoor Finder | www.pemula.info

Sep 21st, 2012
328
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 6.43 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5. use LWP::UserAgent;
  6.  
  7. usage() unless $ARGV[2];
  8.  
  9. my @searchTerm;
  10. my @checkTerm;
  11.  
  12. if(lc($ARGV[0]) eq "r57") {
  13.         push(@searchTerm, "inurl:r57.php");
  14.         push(@searchTerm, "\"[ phpinfo ]  [ php.ini ]  [ cpu ]  [ mem ]  [ users ]  [ tmp ]  [ delete ]\"");
  15.         push(@searchTerm, "intitle:r57shell");
  16.         push(@checkTerm, "r57");
  17.         push(@checkTerm, "safe_mode");
  18. } elsif(lc($ARGV[0]) eq "c99") {
  19.         push(@searchTerm, "inurl:c99.php");
  20.         push(@searchTerm, "\"Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout\"");
  21.         push(@searchTerm, "intitle:\" - phpshell\"");
  22.         push(@searchTerm, "intitle:\" - c99shell\"");
  23.         push(@checkTerm, "c99");
  24.         push(@checkTerm, "Safe-mode");
  25. } elsif(lc($ARGV[0]) eq "mys") {
  26.         push(@searchTerm, "\"Auto error traping enabled\"");
  27.         push(@searchTerm, "intitle:\"MyShell 1.1.0 build 20010923\"");
  28.         push(@checkTerm, "MyShell");
  29.         push(@checkTerm, "Echo commands");
  30. } elsif(lc($ARGV[0]) eq "phs") {
  31.         push(@searchTerm, "intitle:\"PHP Shell 1.5\"");
  32.         push(@searchTerm, "intitle:\"PHP Shell 1.6\"");
  33.         push(@searchTerm, "intitle:\"PHP Shell 1.7\"");
  34.         push(@searchTerm, "\"Enable stderr-trapping?\"");
  35.         push(@checkTerm, "PHP Shell");
  36.         push(@checkTerm, "Choose new working");
  37. } elsif(lc($ARGV[0]) eq "phm") {
  38.         push(@searchTerm, "\"PHPShell by Macker\"");
  39.         push(@searchTerm, "\"[ Main Menu ]      [ PHPKonsole ]      [ Haxplorer ]\"");
  40.         push(@checkTerm, "Haxplorer");
  41.         push(@checkTerm, "PHPKonsole");
  42. } elsif(lc($ARGV[0]) eq "rem") {
  43.         push(@searchTerm, "intitle:\"phpRemoteView: \"");
  44.         push(@searchTerm, "\"REMVIEW TOOLS\"");
  45.         push(@checkTerm, "phpRemoteView");
  46.         push(@checkTerm, "perms");
  47. }
  48.  
  49. if(!@searchTerm) {
  50.         print "Error: [shell to find] is a unknown shell\n" and die;
  51. }
  52.  
  53. my $outputOn;
  54.  
  55. if(lc($ARGV[1]) eq "on") {
  56.         $outputOn = 1;
  57. } elsif(lc($ARGV[1]) eq "off") {
  58.         $outputOn = 0;
  59. } else {
  60.         print "Error: [screen output] must be \"on\" or \"off\"\n" and die;
  61. }
  62.  
  63. my $outputFile;
  64.  
  65. if(index(lc($ARGV[2]), ".htm") > 0) {
  66.         $outputFile = $ARGV[2];
  67. } else {
  68.         print "Error: [output HTML file] must be *.htm or *.html\n" and die;
  69. }
  70.  
  71. open(FILEHANDLE, ">$outputFile");
  72. print FILEHANDLE "<html><head><title>PHP Shell's</title></head><body>\n";
  73. close FILEHANDLE;
  74.  
  75. my $userAgent = LWP::UserAgent->new;
  76. $userAgent->agent("User-Agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.5) Gecko/20061201 Firefox/2.0.0.5");
  77.  
  78. my @resultLinks;
  79.  
  80. foreach(@searchTerm) {
  81.         print "[*] Query for \"$_\"\n" if($outputOn == 1);
  82.        
  83.         my $isLastPage = 0;
  84.        
  85.         for(my $gPage = 0; ; $gPage++) {
  86.                 if($isLastPage == 1) { last; }
  87.                
  88.                 my $gRequest =  HTTP::Request->new(GET => "http://www.google.de/search?q=$_&start=$gPage"."0");
  89.                 my $gResource = $userAgent->request($gRequest);
  90.                
  91.                 if($gResource->is_success) {
  92.                         my @gContent = split("<div class=g>", $gResource->content);
  93.                         if(@gContent < 10) { $isLastPage = 1; };
  94.                        
  95.                         for(my $gPiece = 1; $gPiece < @gContent; $gPiece++) {
  96.                                 my $shellLink = substr($gContent[$gPiece], index($gContent[$gPiece], "href=\"") + 6);
  97.                                 $shellLink = substr($shellLink, 0, index($shellLink, "\""));
  98.                                
  99.                                 print "[*] Check status of site \"$shellLink\"\n" if($outputOn == 1);
  100.                                
  101.                                 my $sRequest = HTTP::Request->new(GET => $shellLink);
  102.                                 my $sResource = $userAgent->request($sRequest);
  103.                                
  104.                                 if($sResource->is_success) {
  105.                                         if(index($sResource->content, $checkTerm[0]) != -1 && index($sResource->content, $checkTerm[1]) != -1) {
  106.                                                 open(FILEHANDLE, ">>$outputFile");
  107.                                                 print FILEHANDLE "Link: <a href=\"$shellLink\">$shellLink</a><br>\n";
  108.                                                 print FILEHANDLE "Search Term: <i>$_</i><br><br>\n";
  109.                                                 close FILEHANDLE;
  110.                                                
  111.                                                 print "[+] Found shell: $shellLink\n" if($outputOn == 1);
  112.                                         } else {
  113.                                                 print "[-] No shell\n" if($outputOn == 1);
  114.                                         }
  115.                                 } else {
  116.                                         print "[-] Offline\n" if($outputOn == 1);
  117.                                 }
  118.                         }
  119.                        
  120.                         sleep 20; #wait 20 seconds so google dont think we are a bot
  121.                 } else {
  122.                         print "Unable to query google\n" and die;
  123.                 }
  124.         }
  125. }
  126.  
  127. open(FILEHANDLE, ">>$outputFile");
  128. print FILEHANDLE "<br><br><center><small><a href=\"http://www.vx-dia.de.vu\">Find PHP Shells via Google - by DiA/RRLF</a></small></center></body></html>";
  129. close FILEHANDLE;
  130.  
  131. sub usage {
  132.         print qq(
  133. Find PHP Shells via Google - by DiA/RRLF (http://www.vx-dia.de.vu)
  134.        
  135. Usage:   perl $0 [shell to find] [screen output] [output HTML file]
  136.                   [shell to find] can be:
  137.                         r57 - find r57shell
  138.                         c99 - find c99shell
  139.                         mys - find MyShell
  140.                         phs - find PHP Shell
  141.                         phm - find PHPShell (Macker)
  142.                         rem - find phpRemoteView
  143.                   [screen output] can be:
  144.                         on  - every step the script doas get printed on the screen
  145.                         off - no output, the script just writes to the output file
  146.                   [output HTML file] must be:
  147.                         *.htm or *.html
  148.                                                            
  149. Example: perl $0 c99 on c99shells.htm
  150.          perl $0 mys off manyshells.htm
  151.  
  152. )       and exit;
  153. }
Add Comment
Please, Sign In to add comment