L-Blog跨站漏洞补丁文件的不足之处
前几天l-blog出了跨站漏洞..具体说明见 _blank>http://www.ciker.org/blogview.asp?logID=317 不在本文讨论之内...虽然漏洞危害不是很大..但毕竟是有点影响...管理员要时时担心自己的cookies 是否会被窃取..出了漏洞后..我进后台就发现...黑基的一个兄弟badwolf正在试图偷我厂cookies了..我改密码..哈哈 _razz.gif" align=absMiddle border=0> 然后到了晚上..管方站就出了漏洞修补...具体见 _blank>http://www.loveyuki.com/blogview.asp?logID=987 为了安全..我也下了个..就三个文件admincp.asp及include下的function.asp和ubbcode.asp...覆盖了原来的文件后..再试下跨站..已经不行了..为此松了一口气.......可问题就这样来了..这几天发现我blog里文章的评论全成了 没有评论内容,只是引用 这样...开始就一个..以为是某位朋友故意留下的也没在意..今天又发现这样的话好几个..后来蕊儿姐姐来我BLOG发表评论也是发现不能评论...我才发现出了问题.. 如图 接着在发表新日志时..上传文件也发现出了点问题. 选择一图片点上传后回提示上传成功..并返回 [ img]attachments/month_0505/2005-05-28 23:15pmes_pinglun.jpg[ / img] 汗.文件名变成了2005-05-28 23:15pmes_pinglun.jpg这样的了...但是访问时却没这个文件..进FTP看同样也是..也就意味着文件没有上传成功.....再次对作者对漏洞修补的心态表示怀疑.... 没办法...只有自己研究了..可惜偶又不懂ASP...还好文件不是很多..仅三个而已..就算把所有的代码看完也不会花多久的时间..后来经过拿原代码和管方站发布的漏洞修补对比..才发现..起主要作用的文件也就function.asp这么一个.. 而admincp.asp文件代码并没改动多少..刚看了一眼代码就发现一个问题 <%'On Error Resume Next%>这句话记的是容错处理语句把..我记的好象是 <%On Error Resume Next%>的啊...这里多了一个'....不知道会不会对代码运行造成影响....郁闷...暂且不说这个..继续下面的,., ubbcode.asp这个文件大小为8KB而原来的文件是11KB...不知道这个算不算修改了呢?代码自然比原来的少了... 接着是function.asp文件了...function是功能的意思..看样子这个是主要的了.. 经过分析...发现..作者修补漏洞后的代码和原来的代码只有几处地方被改动..其中在对跨站漏洞中起主要作用的还就是这么一段代码 Function CheckLinkStr(Str) Str = Replace(Str, "document.cookie", ".") Str = Replace(Str, "document.write", ".") Str = Replace(Str, "javascript:", "javascript ") Str = Replace(Str, "vbscript:", "vbscript ") Str = Replace(Str, "javascript :", "javascript ") Str = Replace(Str, "vbscript :", "vbscript ") Str = Replace(Str, "[", "[") Str = Replace(Str, ]", "]") Str = Replace(Str, "<", "<") Str = Replace(Str, ">", ">") Str = Replace(Str, "{", "{") Str = Replace(Str, "}", "}") Str = Replace(Str, "|", "|") Str = Replace(Str, "script", "script") Str = Replace(Str, "SCRIPT", "SCRIPT") Str = Replace(Str, "Script", "Script") Str = Replace(Str, "script", "Script") Str = Replace(Str, "object", "object") Str = Replace(Str, "OBJECT", "OBJECT") Str = Replace(Str, "Object", "Object") Str = Replace(Str, "object", "Object") Str = Replace(Str, "applet", "applet") Str = Replace(Str, "APPLET", "APPLET") Str = Replace(Str, "Applet", "Applet") Str = Replace(Str, "applet", "Applet") Str = Replace(Str, "embed", "embed") Str = Replace(Str, "EMBED", "EMBED") Str = Replace(Str, "Embed", "Embed") Str = Replace(Str, "embed", "Embed") Str = Replace(Str, "document", "document") Str = Replace(Str, "DOCUMENT", "DOCUMENT") Str = Replace(Str, "Document", "Document") Str = Replace(Str, "document", "Document") Str = Replace(Str, "cookie", "cookie") Str = Replace(Str, "COOKIE", "COOKIE") Str = Replace(Str, "Cookie", "Cookie") Str = Replace(Str, "cookie", "Cookie") Str = Replace(Str, "event", "event") Str = Replace(Str, "EVENT", "EVENT") Str = Replace(Str, "Event", "Event") Str = Replace(Str, "event", "Event") CheckLinkStr = Str End Function 虽然我是看不大懂是什么意思...但感觉就是这个了...改了下后.在本地调试..成功...但那个评论的问题还是未得到解决...继续看代码.... 发现修补后的function.asp和原来的function.asp代码比..少了几段代码....开始推测是这段代码造成的影响.. 中间一段 Function GeneratorNum(Length) Dim i, tempS tempS = "1234567890" Generator = "" If isNumeric(Length) = False Then Exit Function End If For i = 1 to Length Randomize Generator = Generator & Mid(tempS,Int((Len(tempS) * Rnd) + 1),1) Next End Function 和最后一段 Function ChkBadWords(strContent) dim BadWord,aa BadWord = split(BadWordsStr, ",") for aa = 0 to ubound(BadWord) strContent = Replace(Lcase(strContent), Lcase(BadWord(aa)), string(len(BadWord(aa)),"*")) next ChkBadWords = strContent End Function %> 添加进文件后..把自己修改的文件覆盖掉...自己试下评论......怀着激动的心情看结果....呵呵... 成功了.........虽然我对ASP不是很懂..但抱着试一试的想法还是改成功了....感觉作者有点是在应付....太不小心了.....希望Loveyuke看到了不要骂我就好...毕竟这程序是你的嘛....呵呵.. 我也只是拿来就用而已..希望继续努力写出更好的程序... 我把我修改后的function.asp传来给有和我同样问题的朋友下载...由于本人不懂ASP..如果不妥之处还望见晾...大家就等 Loveyuke发布更完美的补丁把.. _0505/28233804olds_function.rar" target=_blank>点击下载此文件 本文出自 51CTO.COM技术博客 |


laoer劳尔
博客统计信息
热门文章
最新评论
友情链接