|
关于Oblog 2.52 help.asp漏洞的修补问题 这是一件很有意思的事情。 OBlog是一套基于asp的Blog系统,目前的版本是2.52吧。 前些日子,出现了个help.asp文件漏洞, 可以查看任意文件的源文件,包括asp文件,后果自然是严重的。 现在,这个问题官方已经修补了,修改后的关键代码如下: <% fname=trim(request("file")) fname=lcase(fname) fname=replace(fname,"asp","") if fname="" then fname="help/h_sysmain.htm" end if if right(fname,4)=".htm" then show_help="当前位置:<a href='index.asp'>首页</a>→blog使用帮助<hr noshade>" show_help=show_help&adodb_loadfile(fname) show=replace(show,"$show_list$",show_help) response.Write show call bottom() else response.Write("输入文件不正确") end if %> 昨天某个QQ群里,一个用户突发奇想,说是修补后的上面这段代码依然有问题。 下面来看看他的分析思路: 修补的代码主要是两方面,一个是替换掉所有的asp字符串,防止查看asp文件,二是只有后缀是htm的文件才能用。 首先,看看替换asp的代码: fname=replace(fname,"asp","") 所以如果访问help.asp?file=conn.asp的时候,就变成了help.asp?file=conn.了 那么如果我们访问help.asp?file=conn.aaspsp呢,经过替换以后就变成了help.asp?file=conn.asp了。 所以,这个替换asp的保护措施不是很可靠的,还是可以绕过去的。 那么,再看第二点,就是怎么绕过后缀是.htm的检查 他的思路是这样的: 前段时间不是有个上传漏洞吗,我们一般都是先抓包,然后修改数据, 构造文件名,如a.asp%00.gif, 这样,上传程序还会以为这就是gif文件,而实际保存的时候只保存成a.asp了。 那么在这里,不是也可以吗? 构造一个conn.asp%00.htm的文件名,这样就能够欺骗过fname的检测, 然后在adodb_loadfile(fname)函数里,真正打开的是conn.asp文件, 这样就达到了目的。 从他的思路来看,还是比较合乎逻辑的, 而且,他分析的第一步,就是绕过对asp的检查也是正确的 只是第二步,他的理解还是有误的。 好多人知道上传漏洞,可是到底什么是上传漏洞, 好多人就不清楚了。 而且在asp中,和php,perl里面又有些不同。 具体可以参考一下这个文档, http://security-assessment.com/Papers/0x00_vs_ASP_File_Uploads.pdf 相信对大家理解上传漏洞还是比较有帮助的。 |
关于Oblog 2.52 help.asp漏洞的修补问题
最新推荐文章于 2024-09-02 13:07:12 发布