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

SDCMS后台绕过直接进入漏洞

[复制链接]
跳转到指定楼层
楼主
发表于 2013-7-26 12:42:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
要描述:
- ?6 R& i$ F$ u! }* q! c4 ~6 f) T' i  ~
SDCMS后台绕过直接进入:测试版本2.0 beta2 其他版本未测试
# R) N2 h1 z) h1 v详细说明:
1 L/ ?- @( I7 o6 B, p% N" gIslogin //判断登录的方法
& o0 h  ~2 `4 `1 a* | % \8 ]( P3 [+ m: r" i8 S: q
sub islogin()* U& D5 T. z! k! c4 F

" z2 A$ J9 I! |* H4 Wif sdcms.strlen(adminid)=0 or sdcms.strlen(adminname)=0 then
. J0 j. d# r# y% D
: E( p# c! h1 Q8 t) Udim t0,t1,t2 ! F0 P. t. W9 @
" t: n5 b8 M: m* w! q- |
t0=sdcms.getint(sdcms.loadcookie("adminid"),0) loadcookie
+ D& x" o5 |5 y' Q8 l7 l
, a5 d5 I0 y2 t3 v" Y4 |t1=sdcms.loadcookie("islogin")' g; v" V7 U+ v6 d/ h
( ~* G5 z9 H5 W& [1 ^5 [
t2=sdcms.loadcookie("loginkey")
6 t% A% y$ a3 J
+ H% u, R1 F8 z5 x5 ~, R, x- \. Cif sdcms.strlen(t0)=0 or sdcms.strlen(t1)=0 or sdcms.strlen(t2)<>50 then //这里判断很坑爹 sdcms.strlen(t2)<>50 loginkey 没有任何要求 只需要输入50个即可往下执行
0 C+ e( q6 O# M! x2 o6 i . u* T  e' {# `/ E
//
' Z! k# e0 ~' C, D& _1 O) B
9 i" K; d% J1 v- Qsdcms.go "login.asp?act=out"( ]$ |5 _: M) x1 M( U) \5 I
* z$ X- {, y( A) I: C0 d
exit sub
% W7 }  ^9 c: o- B0 Q6 ^1 f- L + T) h# V) U5 C3 X. E6 m
else
: E& F0 K. j4 A; {$ Y 8 R, L* F: L' G$ w: K4 S3 T
dim data
% \. c3 f" `; I+ [2 s
  C' v( G3 X+ {7 d6 \3 p. X' o, cdata=sdcms.db.dbload(1,"adminid,adminname,adminpass,islock,groupid,g.pagelever,g.catearray,g.catelever","sd_admin u left join sd_admin_group g on u.groupid=g.id","adminid="&t0&"","") //根据管理员ID查询 ID可控
  G0 M( l8 H8 ^% b7 u8 J% v
8 E( ~7 o* \% @( ?if ubound(data)<0 then: Y* `( l1 h: O0 i$ {8 W

1 W2 L* b7 P, _. [! F5 asdcms.go "login.asp?act=out"
" m0 g7 v" o  c& H' I) z) Y6 O + F; B6 z$ c& d
exit sub" F* Q0 l8 O& S& L* n

* K  z+ E0 K# D4 k2 V  P; uelse
* g" p% H- C, U/ C, s2 p. u
# V" Q- I  W( c% X, p. T2 P( qif instr(data(1,0)&data(2,0),sdcms.decrypt(t1,t2))<0 or data(3,0)=0 then
% w! ]0 ]9 `, E3 T' E8 e  n# @" B 1 p5 O; X0 N5 J+ A% t6 _% `
sdcms.go "login.asp?act=out"; c1 [& b& X! F; _
# \- _0 P2 }+ P' y$ f
exit sub
# C7 S. m4 x! k- b# `% F0 f8 ]
- \% r/ L$ @7 a4 ?else
7 O: k! s  ^8 ]% l6 G 4 ~" L) K5 }$ j% G  V5 @( s1 H
adminid=data(0,0)
: j# O3 ~- i& Q  N# b/ E, j . P( X7 ]) u8 B
adminname=data(1,0)2 F+ I* S+ s. q% t$ ^+ I- k+ x

# X: k' i1 H3 z6 x0 _( p2 I1 m, Qadmin_page_lever=data(5,0)5 N8 U" W: ~7 u" Z7 {, ?

/ D5 y6 \7 X( y* Wadmin_cate_array=data(6,0)
' ]: O$ v. i2 @  c
. ~! j/ P, R+ F  `0 a* Madmin_cate_lever=data(7,0)% P# r% B6 v$ \' m6 N* u

& @- _8 t3 ?" I8 @/ p; {- _1 l9 J  Vif sdcms.strlen(admin_page_lever)=0 then admin_page_lever=0
! T1 n& u+ K; e, _1 `. K: L* f
: m* m. `. y$ f( v; Aif sdcms.strlen(admin_cate_array)=0 then admin_cate_array=0/ }. i8 u  D) k  I; H- C  R7 R

8 s- t! }# f3 \! K6 Y/ m: Uif sdcms.strlen(admin_cate_lever)=0 then admin_cate_lever=0
! Z1 V" i# H, ?2 F& r 7 c  x& V, Z3 a9 V5 I' f2 Q% R
if clng(admingroupid)<>0 then3 H& d& h5 `0 y# C7 v
+ \! o- [$ ~( Y* p, j2 l
admin_lever_where=" and menuid in("&admin_page_lever&")"
! V* @; [# b  n- x 3 j/ o( N/ t7 q  y& d
end if
# A6 [7 @4 l8 F5 [
. h% }* G" P5 \sdcms.setsession "adminid",adminid4 S1 d2 I: l* Z* g

. d) p3 ^2 d) L3 m; asdcms.setsession "adminname",adminname  m( g# K4 n6 G. N1 |' y% N& ]
% [# W# W; U# F
sdcms.setsession "admingroupid",data(4,0)
* ~7 q$ G: l0 _& ~- P1 R " n4 Q% r% K7 q9 Q0 A
end if8 N1 n+ E0 I: }4 n. S* `$ O5 s
$ G( r* ]% J: k, t1 h' J' s+ g. c/ T
end if
6 o- g% u/ X# V9 N9 f0 N
* j' f1 C4 u' V. G8 Mend if
# m0 T* j/ @$ M. v9 ]/ t9 m  T " K* ^& ~; j- y3 k# {; r
else+ ]0 m" F/ E$ _* V: |6 S! w
% u7 |# M. G5 R  a; V
data=sdcms.db.dbload(1,"g.pagelever,g.catearray,g.catelever","sd_admin u left join sd_admin_group g on u.groupid=g.id","adminid="&adminid&"","")
2 u  D* S  ^0 Q9 p  P
5 t+ ~5 l& y& y7 ~1 v; X8 yif ubound(data)<0 then
% \% _6 q0 I4 a& n, C) ?
4 n  |- w9 ^  Ysdcms.go "login.asp?act=out"
8 N) v( V6 i' b# j1 X
4 _( ~: M, Y5 C/ {8 R) Q$ B8 Yexit sub% C, x1 D9 o& C) l6 y9 E; @
/ V0 k: i* S6 O
else
) ?9 y8 J. O, P  }0 |
' x7 W5 c& d. a) D! |. E/ Nadmin_page_lever=data(0,0)
0 `4 U+ D% A. m1 ^5 A$ a
+ `3 v! A3 {6 m2 ]8 G% Nadmin_cate_array=data(1,0)/ O$ k/ Z. u  ~- P5 h& t/ I# Y. E

; r/ F$ H2 Z* Zadmin_cate_lever=data(2,0)2 l" H% X* h( ]/ Z3 W# k
( k; c0 x4 M6 A0 x0 ^# P
if sdcms.strlen(admin_page_lever)=0 then admin_page_lever=05 u  v7 x9 B. D4 I2 @: _

3 d; G/ f2 |: T, y5 L. w" D7 yif sdcms.strlen(admin_cate_array)=0 then admin_cate_array=0, O& H6 g' c8 v! U0 Q
! o9 o' |2 e( S8 v& b9 @& i
if sdcms.strlen(admin_cate_lever)=0 then admin_cate_lever=0
, P' L4 g1 M- u  }- b # ~! k2 Q- N- P* l8 O
if clng(admingroupid)<>0 then& i$ c: g, f2 Z1 I
; D/ }4 d% d; I/ J' {  V: ~
admin_lever_where=" and menuid in("&admin_page_lever&")"
; r+ M* v0 W% d9 [& n/ D* |# P 8 _; m2 H: [& s
end if
4 [' i4 m* J' f" @% l- y " p, R. e' H! B# T4 p& d$ N
end if1 F2 w  R: s# y

: |3 Q- ^: ?' N; s4 K* g% tend if
! _/ ]1 m, r) m) c
% Q  L1 \- b! {$ u- g6 iend sub
' o: a) h. p. c% L& C1 U漏洞证明:) ~& y. M  a: V3 y5 F
看看操作COOKIE的函数
/ S5 c& o( s0 U8 r; Q% r
8 x: n: I6 J, i2 H5 c& Opublic function loadcookie(t0)
+ R  K* b9 K8 J5 a$ X; `, q
7 L- }2 ^1 t* _/ b# {8 J6 x/ q) |loadcookie=request.cookies(prefix&t0); Y: |( A4 S1 e6 K1 Z

% f* q7 N  m$ N. a7 t) Zend function
* C; i% c% E, N
. Q8 P# Z) ]% c9 N* f6 }4 _7 i5 xpublic sub setcookie(byval t0,byval t1)9 H+ F0 o7 b4 c9 i

/ p- e- i: C% C( e1 [8 _& fresponse.cookies(prefix&t0)=t1
7 L! ^- C, \0 {; Y0 n 1 _- {* w6 B5 R
end sub
/ H6 ^- J; t/ ]& `) C 2 k- c3 }: B( Q0 Q  J+ c
prefix
& d) ^2 f" L; Z7 C9 D& ^/ ]
) l# C% h& n; V$ a8 v'变量前缀,如一个空间下多次使用本程序的话,请每个程序配置不同的值
# K; X+ b" @  h! W: a- i 3 n& P* C& `2 e0 J
dim prefix2 o" }( c2 r& S7 D
( h6 q$ p( d$ R8 x$ Z
prefix="1Jb8Ob"
: }. b4 L/ z4 H. ] 4 Z* C9 K6 o- b! t' d
'这个值访问一下admin/login.asp?act=out 便可得到 在COOKIE里 1 D7 ^; Z# ~) h+ u. Z3 H
% V7 P; g8 y6 m' n% Q8 W
sub out
0 \+ f3 J2 V1 Y* l% i! } / }  J3 ^7 r/ w7 e
sdcms.setsession "adminid","". h% f- _1 J* {" a
6 k- [: B  z) p5 I
sdcms.setsession "adminname",""# d, y" D$ e0 `) U
& ?4 X2 o) G  v7 v" o' c, C2 h
sdcms.setsession "admingroupid",""
1 l0 P/ c5 M# S7 Q  m' `  { & O& E8 Y1 i' a$ s' i9 x; e' {9 O
sdcms.setcookie "adminid",""0 I0 W& e( r( U! _) [( `
& P5 V$ S% O7 a/ J3 q6 P
sdcms.setcookie "loginkey",""
+ c$ m& i. z) ^; Y; g7 _: c3 y- X ! o9 B2 ]" V2 p$ j; e* C3 D  v
sdcms.setcookie "islogin",""
( \6 b$ x8 W5 i6 L, n) e& n4 @( J8 ~ 0 z; C6 M$ a* t7 `# D
sdcms.go "login.asp"
/ w# q) }* L+ j* b. a: E% N) S6 V & p- ?! I* ^2 G4 E3 [+ H5 X
end sub
+ w3 q* P/ ?7 X4 _3 } 1 T: D+ K: @' S% B, u8 p

0 c9 F( B) ]" n! W! O3 G. D0 X% g3 Q利用方法:设置cookie prefixloginkey 50个字符 prefixislogin 随意 循环下prefixadminid 即可 默认1 然后访问后台,就可以了!
8 l+ ]3 {2 m; ~2 \" ?. C* |( K修复方案:
$ m% P0 J; w5 D) r6 C& ~修改函数!
$ v2 Y) d" X4 E5 r
回复

使用道具 举报

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

本版积分规则

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