From eedd7be4533880c5488d7dae7f02f0e302d8d7aa Mon Sep 17 00:00:00 2001 From: Michael Schierl Date: Mon, 16 Apr 2012 12:24:54 -0600 Subject: [PATCH] Squashed commit of the following: commit 9afece529a33739a088c9c4d10b76dd52f23b99e Author: Michael Schierl Date: Thu Apr 12 17:58:12 2012 +0200 fix cat ... command by making stdapi_fs_stat return a sensible result [Closes #330] --- data/meterpreter/ext_server_stdapi.jar | Bin 38574 -> 38759 bytes data/meterpreter/meterpreter.jar | Bin 22669 -> 22720 bytes .../metasploit/meterpreter/Meterpreter.java | 11 +++++++++- .../meterpreter/stdapi/stdapi_fs_stat.java | 19 ++++++++++++++---- 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/data/meterpreter/ext_server_stdapi.jar b/data/meterpreter/ext_server_stdapi.jar index 5b471307d656d6aaae2363a1f7e848e6b5b24c74..c4405f4aeb647e475940a06dbb3181b957f3e0d2 100755 GIT binary patch delta 2667 zcmZXWc|6oxAIE1YVjA0>EHgyXwN3UV%3hXm<60tHV=%IdMu{d9%3uaRDkWi*vX!P} zxw#RQLbxuBqBCnAVv;-R?zOroNV*wTgjY2hIP$&(^8NHF$L^y^9 z!Df=TK{jtex>XR6y9)Zq3SX4S$UMp_4H*2&Jp4EZniV{UC#0=n1<9p}@hsFGk@W1X zNl0UZRvyx*(qSPDWBm-I(QbGj4eCi0APQMM9{SW2u0HH;Dylj#;7 z_luj@vD&8r_ipqDk^EiEg$WKgJ=w9ll48PbmoG~eOX5O&a)xeX1>F09zggrYcC(3( zdtv_#d+g(hnN8z^G1KW6m$rNtp6vM5>)G$w1yKEy;qAJg^S6KQ`abt$N>r>xqvP#h zy2CnF{GJCWUyfo0Rg4k&M!KbD+VY#!xzt74y1LQomyWUnHG;~62_E;njEUMUFG|_B zwacI9rv7DoE<5do+{UrMkA)&o=luSR@G%;tCO*}fy{j;#$meo%a6wygD$lr9k=xu~ zgP#~2-@(Oj6}b}iWODNJWlM&j!dd5Lw5&l%h7^iXXdSE)TE{4Ab`yI_I}>)q+(PAV z?Gkg7cdt?~jt(sET@nqsk6st}H>i}3=i%5}WrT0PyWt>e+G@h#k-FHjyn_=d36>S? z49uNK9py*8^xcI5oGV9qbA&rw=L-(?>>m1U@rsX_iCo#yv`95wE&gT`THYdNrY5hp zjG#vdwr~tQoPLE7*B?FZVIlp-nj>(ah?yQM>Eq)=)Q~ybnw$Dqpqh`x%MvYC8pKt2{zS5}cjsbq?EBuGk%0-`PTB_1 z1+k;_UB4NBaP=A$_w{Pe4)^b!4~RRTB$E)r*G=dm$Kw+iN#_M3c-xq!SU;UbR@(r% ziBcOE<=A}xxXn~9;iUJ#Ib!+4gS&d?Th!Eoh59)jz55zk?Gi)zD!#f=Qe!f2XtO3< z`Dre5gri!f{K@@kwJ7!Fs7KXtM^T=t$X3D%1zgsyBB7kKa(!FI`!u(hoOtF zd{u)B#BR`EGd8;yTN+a2Mv~t>ik~G@J8Ty#b{6Al<7(CFyAKX(uq+y#uA7Vay(DR!JStH$HOun@*VL*4dc}>wfoo@*pFAg5hO0Bl1vF?E=5=)!T3%gLYecxD-%*aKf=FSuJoURuY{Dwwu8!J-IgjXx#>8&y{7pHWt!@HGb?;{ZK3`! zCAJ7$^ots&!-9pTDyf7*_s zJ9a4iG4juF?ZSQZJiPI3uH?o0J%MdCjUJrr4A+lKk1Aaw_;c#Lwp45;eopbt@Uh9z zMpbH)>H8{evUhk$ewe;r-7~_4f(U)T(vLH-lU3V%8~XbW1_l{VfAE_fwGE_Bd30{y z_qoa2u^#!`T+V?sc1^QhlrL)3;zGfW+>XnYf-AzZ8cuEGs-)10nJ7op|UY|+%=cA{>b_YXA zY!XJw2`VGNNl5A1~Auc9Rw zxktjt6xy3B1vV9(OTw&+hLIuEmMj0mH6F{_fbpe6&4;X^-Fe6&o_Qq9-Z&VULyL5r p=sz|Nb;HA(6X3H`g36D|Kx(IvEThvTj6@>9@uxKe&M{ZE_-_sqka++A delta 2560 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 Nxcxv;dX=QO`)?d=|0Mtb diff --git a/data/meterpreter/meterpreter.jar b/data/meterpreter/meterpreter.jar index 4228cb3b1e280bba32db4e9511d614310ac82c67..a9583a5a902a44eff717ed3b742f191c72f967ab 100755 GIT binary patch delta 4245 zcmZXXcRbbq+sBV&W`1+X5yvPpj=lHZIVa;Fdxnq^=@{orL^wt#du0oej;xHF>~X9} z#z7<^o$PVqr_=qr??;dO^Uw2oysq(nzpu|I1=<%MQILWGnlBfb&r|Bd9n!1o z006+33;+;EYv^-f@C?*s48K!H929bb^Z)=Hgw{~wLEkoGMxv}}9IxI9I?dnDoc}cT zW?P7>-(-bv->dYEzJ9K2+ThbPZoQ|RM!_lc@-ChtFWY7;-0whyqpztqA;wecn{F1; z$3CZdxmjcp&CTHN(#Yb$Q#zW{FgpIWQ~+`_&5z1C*a?ShoAU6ivhUkbaD{24>LYJPDpxk!3vy!E-GMoj!je{WILNL59!XFF48 zLeulb>%hIOAvR!ZweusRP>I9^tPU{tXMB_qt!R}8_J}FM=6E4>)o7epL(Ay^Cjfyq z1dB9wBs6=$k{|rcB=Q>KR~_uvlZwT#(-$JS2a)QM z#~7wl+inA5%ut1DgADJ)LV9Y=qL@Vq!R^zJTFt||)<;Q9@F%DR)Z#rtBW=6DAhNvZ z5>m`IqVSk1&F7>SkgL}IBZdIwA!0Un#Dq?PXZ(sthis%J0sOifS$QZ%Y?MAL{!CT0 z#YjL_MxCW)on4NLs8~F+pi2;~ZI(s$qVa?XVC`iV-uzM_&oJ5}Ef(rquj9uNm|}G^Y_& z9X{R1VqCChG7U3O4RJhs=a^j0%p)!7>xyybhgNJTdFIM0(grI|jAh_v^P;m;=enX( zIls%j?#c9Io;eOFbHUc5h_3t@4Q?K{(dqS^^T4j5twEr-CR$i7Z)5uIbkAv&3ex%& zmCv9we{|PC(mzFRHegp~1#8-z^hpbOf6e_iUjyBb^*&p5A})wh?lS(a^fd;n_04Us zoBVeY_jBupy;X;)C9L$OgOvi0Pou2GX*y>oKGlZ{ER}`CG_-yCqLR)k6s#IhvM1iT zkjLRB;Wd)Q95|j1VVUVsGPd@dy^8$i60hC*KxH#?^PrjI}NQp=vI^({M?$a6(Jg#kE(_Dne0d>fxRQ z%#QhWv^vqla>I!pIuRT^6VNW-&wW(6)D{9R|2bejPB1(4q=znrgYvs#sX1z&CG!#y z^lFg>*Xr%xl*_b&!7z_lU8Itr$#ko4nb#pZ(c9q6a8o9XNv#}KrAwo1sXP7_DOg2~ z5@v=d@J{8Z__&T2L(mM-kp10~EU&Q&)J&;?SABwF*E>0;1_#vT=zU81k;M!dB5%YK z^5PQM$Z2T0wCS2I3a>va)AGa@?$M~*IQkMauPcb10)w+bL7%0Np!p=I$9*cC=l$}y zmV~XUi^{8i?C#%`H!MZQt+{5p_oRI*`@{O&SEsI*)f@XqFBMeNqC zHG35PTCCQ4$zZKzxbJ{`zJyE|ZNZcWcwXRYIB0JIptskV@7v#i@BGzobFb~FVTB&_ zy_}qOzIIFl^uYs3J>q#kF0<^LM}{urXbuoG)l|VXxdz#V$KZPegJU!+$0QK2QJF(; zEBLx2&)sr?AxYO{Vd&UTe3)L4 zuyLmKTaiRfu2V>^7^GN1YT@bdC&((hNwFQMw3|kNVh!1nw#1Jp7{8%)nf7OcLbfZE z9gWV~jpHd&G6AJ)GJ3k+YQGrywR|fvb>zU`)M!BYrY*NDq+AFSv?*0BnQ1uqCCfaC zH$Oc@aMUxVOj=QEqWZgOvwq9Tjonwe_saEH5V5++<1Qc-(a0<-0r3p&knC}#b-QTJ z4ZmHnWML#=7D+5oaJG!L%c5$^e~sBaoGGsiq=wt;Wp-crg64+XTgP6}N|yHYpA;TEPS6UIvHMEvW;9#plT#Zu z?1yVE8~>)VPPcqJiN4?>U%-v+{je3Q$9XQ(97f1lCBHqyPPO{|J&|Qe-xaDMsfJ~W z$GCzZRUse3^XuB1bEbgw8fk_KvO9gho*46}ZE+>lpm5*KsvXEx(yy!pj;9FUiB>?g z4OWKs9K=J~?uInoKg{seeo(vK7li%rb|9Uh7PmLyNFn30YS&L~wqfr)@Onvz@uaHt zA8|?K8}ycEzm!(G1h&OHvG!pCbNvPXAN+EruS9Ahv}|opCbEnbe>8=I-#-1xGO|js zBQyFe;pXu6{f?!%NBrYBH`fJK=B1HxaQX(u&1A)-cK^_nZgNHb*P+kTFHnJBIfiv` zp(LZbd8JwrleE1?`1*s@Iq#GZ|1JC*Z(X-2q_@c1xtAgQ-d1<<^z-pEHW6wfBRJZ= zLAG2kc-9->g~5T#;C9=LD_vnd(gNK{;n?qkgQfmov&TAE%i1Lh8Li6Rm+LdU^<-C@ zfoylR;j;K15Cdp%C37Q|#?9i-IL%B8EG1fuh9V|fti@9?W%HWN*w`iJ2E1%uV{dRf za>BljD}(D=7#j-wGPfnl#QDuLmiEjtXl8(`w8aM<1y`fHMotZ0-QmPtj`dBh9H64T zpQP)AkilS8Ua8U^=xzB z1jYu+>z#V`bTsXuw^7XQ==BPk4zBFp{j867%*gOJg`M@B<$)pA(l+l*G=(at*xuEa zW2Uba!?8yCB`kK$(J3`7W3oHPjmW)s-R#eRL0Kz?J7xL1Z1fdUt`E-g~c z>M^0~?vb5T$pvw?(koQ4bs0XfCymxwadakmeRp?EC(j!|j*Tl2>a1rVRD8)&qT%Uc^W0mgb7 z2dWJRL63D>6D{Q@^11V5HOe^-pWufhzOR zv}{hRsL25LHfIFDls1@rJ28iujjbrYSQn~~`Y|4X6T=Wz9Pe@{uev0$Mo^%e z)SMie#1Z_Xu)oL-(V0K{D6N5N2M6QoJ5O8h-1^}MS!}upb>@D^t|XV&-Jp{wauoFJ z*TBPYpARdM%d?l+o?`Hn1=#YBud3?miFZSAHuz1*;A8p><_d&8rB0&Ck5tvDO&p2}wfcm42*;%>Q+B z)PUd4Opue3hGe$rc=}3ur~rUGRy6b?55}HG zl9N1~4Sg!RKZ>65(Vsxe zB!!Ip++(7rpz^T=_Q^P92acW&f9s> z6&6=W=lu0w{%Y&fJTFv4gWzW;E=UJKBZLx4AT&XW^eP1DE%Z1d%@`R#U_g2iA)yI4 zC|w9uij*iF6zNq^pTv2-H}}ul_dENnbN2bSTC0Ic)xfhz1Qj(S06-4_>=Xv4oxM!8 z{Zo{Zs64}i)4KU7@=5Gea1fvZMUg;tilzZoPn9qL^aC;fEUriX5t(tF1_1D8#Q6$e zB=}NW(44vv-ZCswQ#xyy<$$a|$@RNI$MO42000X&03d;DW#+>rp;$3VmJIehqpT5* zQ1QyKbheC&?5KOG-8JBJ@u)t$Qi4jm;eA{byW7MBkMWJL2Iue-;%+`x zwD8>JCo;6KJi!*k#__9-Z_?m!^boytXA;x4p<$tJU>6Ic8T<7ObjDtv=nPBf^$QrT2-T>K5}mmw*=L~> zW2yQWBlydhjdGojBQ+mbK!}b75I4$LZhW_R_ zvDT_u+2-$B;%~$ZL#Ch4{e74lv+TT2bC;gcI7$q(U_2xuQQK~H)LopKi@y*bfdJxT z3TQ7EJc8pH%}TqGwJ>?c(Xwt6%Z`9Uh$8WNVLS%|GFz{B@Dkp?3__-j=fwI_NgA)1 z#v2MqOf=Vh+fJ@*s@uQ2K2cjZ|G*o1&6;b;5at{voQ)woB-YO8EE=Sg7+6{wk_jQG zAR}xA>&3zPah+n4X)=<4&PBJnk*s@6KX*FydkC2BIn&Z5`D4=46lnV-@mqT8I`W%K zvNarX7{dF2qibPKA4ZCtDtM~Hy}Ej>i1TeAx%!#A>g%bTRaY60uGi}Kx*th$ zcq~8@2)ez~FVjRFhWd|QIA)UIA0kIQ*wJQ7H!uWgpA4z|xb+oX*<4;Ox^<*5ezMM4 zfDY%0o+Mg@vc{c+$U= z>i0VVnvJa`&EARWCBjvM`l`~zQ-RK}lD!mg0nKowcyHw!B^ z`-E?u65>v(>@TAPk z!UhDmBnO1bg5CV-L-x2jv$iJR`h>P%5sSC^Fld%k_OMP~x|=_(bK?(Ke4cNvg2-!Trez@0lzT6HgPWD8YETduz-E92f0CH<>jt{!IH$6;K_m^mzS_-k{qKY*hBl$iJmF1XI~g? zN{7tem7}+&O9w}vYKfHKxovJ@q}lz0&_}uE?g({nAvzM9Q@ z?@v;l_l<@;-We6a!!+}pg$ha^E87>0xzKILx=e~OJc~-yNT1E@{QfY*Q{S}$zH^~? z$Rmliogs{7B{O4II8;P_Qu`R}kj}(*rd%N*!K6q1re^*6)fz@;Iqv+=mr3f_GD#wWH`0S`M$EsjCJX~KZ71fX5Tw(41No#Qcv$&?GA|< zZ6R=`yr?_E-Jz9tTq3v7x9yP4_59`pQ%-Qr=dZ|)-t5olxoS;-^M9_ntg;-SHMp%c zBW`V{p0&u`fJb;)$YSt%OJ4Op_7<`^bMK$ptJ7urwUlP&tjkIS*0^4Ax6@VdI>$=B zy&c*p;!1km7yX_u_d#A6Q!&2=Z1}_-68+Vo0*qLAXJx%rl3V*`>(SN9JuVR*LEAM% zpnR5b&V@w1yXdQAsx!-(L9qG?P`WKOfd?MoAwnyYE=#&t z?HKDD=I0l1Ti$hdAimV~`bxyDktLKMHkk_#t(S{DSk2zlD z2p|0E=ld>wR7)A-k?4uKqu|*Qvgps%vul+Ip3JVl>a-=HJ5ui5k+sL`nan@USifCh z$gixpB$xUcR~-GhV#H3ThV$XP@==2fh+3dlK+{z zG_#8*X3-X#2jYlVKJ!0L&d;JP`RD=%su-J=yYA2IsJ5PUNaXHi$=ZPXg$D z<~Qo8h_vctc8=tvSO;9m3KZ+gWXtz8c!fWf?U@X<1ETZXf^KcSGjE=Zo7!`ym@*mD zF23k=VI(SAT!7r>woqtg%b0Qp$O75l{u+bU>_jTQZ5JG2ndkWKC1pRvojdbY;Cq{r zH(Th2;HL~s%kBtSungg%e?iirO%rKqMJgrSzMgmfl<^4b!@dI+#s&_9OCjzKPI4!=wBhb@%*1& zxx!iXs2j&)wfSS{IFolijBLqoqf(6-P4K%X%g__dhh80Wyz_Pfda!+_@0l;g69JT* zX;u{v%1ea55noxgO^}`)iP#eH1dVf^8;>{}$RllEdu4?TvVvaWXG4Xu+sfP&AMR~< z{l$h);Xvr+_}I)q%ew1~_#kPLg&@_|FtlDAFcyO6w|m~tzoa~L#0(7Pb@i9W4oG~g zSP#Y=u7UcMAC8h{LnDr_uvZaar7I*3Dk z^Nsu`n;oRt#Ejgo3J>`Kn@5|U$d>ndsmDUAI~5;TZ5dWX?Ssa`#t*IDKw0g8>2hk)l2&9Dh2%2NR9Dc%$OR( zHVXDEyJQC5(8{`c3tCz?l3%YTS(fNt-DY^EMb>0-DPAmG6=A^Jk&%x}tm0EkaQ4b_ znOYi(Wp9|IvLQ&8&e~Qfmz8(D5G*QxWY-tMEAcE1B_Sx9K;wWMh27q{99V7q$KcA& zKuxPX*WnFoTgih^No~jb<$a)c)pVaRgZ2kgz5s#g6yH%?B%9Ivt$yN^PI1TJ(JY3c zmS8t^1eA=`Vu$pc|xX#|eo$n2VU!GaY}+@^KoWT%zv4F4b|2PHAd> zDu8vQE7pm33mhhia;|y#{P-r-Mz?t*{RXznrG%r5_IY3emYt(tx`lsE(61X4Y6+G; zNH-2@d)yp`^t@+aUr%jRp&H3s&dJ}ot-EV*RGa(lZAgU2#6t9!scYKv+S6y@=ndY$ zQE<9O%<=T%-Zs^>1LM-hE+H1@!6xJ8mZ&p`^br=KoW{L^rlX8QB(KN#qzx13kw;85MOZ@#p_+ zO#)xGn3ekY#hDGq54O^39AdUg4bb10#6RC0Pf=fV3 zQ?vo8LeV`WoTBQ+h7?UPMo@Id*ny%j6BK3tpC(q6|2-4yv;PW!I2)7!Wu+3u1LB3^ zUNb{+_n|D}NCXhXL3J8T=>ex3m@ak~bkYF;*_;5tWx)Twf@mS!MN>tJg|#UUNJffc zku3$rC7Cf%&TjmPZKVIf^tfYFu?weZRm#ZofF1+@%uxXV@c$VC3Zh%oem8rV{hIfw z84pNQgMzP^)8MAe&QmcNMcH5i>gwXs4vEfS0!4%y3 z6HCK?<4QO)j@yEXvLtH30}|Hxy%b=-1 if no buffering is active. + */ + public int getErrorBufferLength() { + if (errBuffer == null) + return -1; + return errBuffer.size(); + } + /** * Return the currently buffered error stream content, or null if no buffering is active. */ @@ -315,4 +324,4 @@ public class Meterpreter { ExtensionLoader loader = (ExtensionLoader) classLoader.loadClass(loaderName).newInstance(); loader.load(commandManager); } -} \ No newline at end of file +} diff --git a/external/source/meterpreter/java/src/stdapi/com/metasploit/meterpreter/stdapi/stdapi_fs_stat.java b/external/source/meterpreter/java/src/stdapi/com/metasploit/meterpreter/stdapi/stdapi_fs_stat.java index 321485482f..5b751a996a 100644 --- a/external/source/meterpreter/java/src/stdapi/com/metasploit/meterpreter/stdapi/stdapi_fs_stat.java +++ b/external/source/meterpreter/java/src/stdapi/com/metasploit/meterpreter/stdapi/stdapi_fs_stat.java @@ -14,6 +14,13 @@ public class stdapi_fs_stat implements Command { public int execute(Meterpreter meterpreter, TLVPacket request, TLVPacket response) throws Exception { String path = request.getStringValue(TLVType.TLV_TYPE_FILE_PATH); + if (path.equals("...")) { + long length = meterpreter.getErrorBufferLength(); + if (length != -1) { + response.add(TLVType.TLV_TYPE_STAT_BUF, stat(0444 | 0100000, length, System.currentTimeMillis())); + return ERROR_SUCCESS; + } + } File file = new File(path); if (!file.exists()) file = Loader.expand(path); @@ -24,24 +31,28 @@ public class stdapi_fs_stat implements Command { } public byte[] stat(File file) throws IOException { + int mode = (file.canRead() ? 0444 : 0) | (file.canWrite() ? 0222 : 0) | (canExecute(file) ? 0110 : 0) | (file.isHidden() ? 1 : 0) | (file.isDirectory() ? 040000 : 0) | (file.isFile() ? 0100000 : 0); + return stat(mode, file.length(), file.lastModified()); + } + + private byte[] stat(int mode, long length, long lastModified) throws IOException { ByteArrayOutputStream statbuf = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(statbuf); dos.writeInt(le(0)); // dev dos.writeShort(short_le(0)); // ino - int mode = (file.canRead() ? 0444 : 0) | (file.canWrite() ? 0222 : 0) | (canExecute(file) ? 0110 : 0) | (file.isHidden() ? 1 : 0) | (file.isDirectory() ? 040000 : 0) | (file.isFile() ? 0100000 : 0); dos.writeShort(short_le(mode)); // mode dos.writeShort(short_le(1)); // nlink dos.writeShort(short_le(65535)); // uid dos.writeShort(short_le(65535)); // gid dos.writeShort(short_le(0)); // padding dos.writeInt(le(0)); // rdev - dos.writeInt(le((int) file.length())); // size - int mtime = (int) (file.lastModified() / 1000); + dos.writeInt(le((int) length)); // size + int mtime = (int) (lastModified / 1000); dos.writeInt(le(mtime)); // atime dos.writeInt(le(mtime)); // mtime dos.writeInt(le(mtime)); // ctime dos.writeInt(le(1024)); // blksize - dos.writeInt(le((int) ((file.length() + 1023) / 1024))); // blocks + dos.writeInt(le((int) ((length + 1023) / 1024))); // blocks return statbuf.toByteArray(); }