前几天博客被入侵了,最终找出了zblog漏洞,今天就将漏洞发出来以及修补的方法。
测试版本:Z-blog 1.8
测试站点:http://blog.rainbowsoft.org
漏洞文件:cmd.asp
漏洞地址:http://blog.rainbowsoft.org/cmd.asp?act=gettburl&id=10"><iframe%20src=http://seo.noosky.com%20></iframe>
简要描述:对变量gettburl提交的参数过滤不严,最终导致跨站漏洞的形成。
漏洞解析:在cmd.asp中,程序对gettburl提交的id参数做如下处理:
Call GetRealUrlofTrackBackUrl((Request.QueryString("id")))
其中GetRealUrlofTrackBackUrl是引用日志TrackBack地址的函数,他的函数处理如下:
'plugin node For Each sAction_Plugin_TrackBackUrlGet_Begin in Action_Plugin_TrackBackUrlGet_Begin If Not IsEmpty(sAction_Plugin_TrackBackUrlGet_Begin) Then Call Execute(sAction_Plugin_TrackBackUrlGet_Begin) If bAction_Plugin_TrackBackUrlGet_Begin=True Then Exit Function Next
在做如上判断后对gettburl的id参数进行输出,在输出时候对id这个参数过滤不严,导致了跨站漏洞的产生,黑客可以利用这个漏洞盗取管理员的cookies以及添加管理员等,甚至直接getshell。
修补方法:
在博客根目录找到cmd.asp文件,找到
Call System_Initialize()
然后在上面添加
function checksql_c(text) if IsNumeric(text)=false then response.Redirect("default.asp") response.End() end if end function
找到
GetRealUrlofTrackBackUrl
将 Call GetRealUrlofTrackBackUrl(Request.QueryString("id")) ,改为Call GetRealUrlofTrackBackUrl(checksql_c(Request.QueryString("id")))
至此漏洞修补完毕
为方便朋友们修改,兰州seo提供修改后完整版cmd.asp下载,下载后直接传到更目录覆盖即可。
下载地址:zblog漏洞修补文件件
推荐阅读:说说这几天发现的一个zblog漏洞
昨天兰州seo的博客被入侵了,所幸发现的很及时,黑客只来得及留了一句话木马,没造成重大的损失,所以由此产生下文。
发现被入侵后,首先利用自己上传的ASP大马,扫描了一下网站有没有黑客留下的后门,然后在空间后台那里取消了整个网站的写权限,为了防止黑客再次入侵。
这写步骤过后就的分析自己网站是怎么被入侵的,把当天的日志下载下来后,看着1000K的IIS日志头很大,也没有头绪。思前想后,最终确定为黑客是由跨站漏洞而入侵成功的。
其实昨天晚上兰州seo在登陆后台是就有点不正常,登陆后台不是后台首页,而是“操作成功”这四个字,当时兰州seo就很疑惑,只不过没当回事,在后来的回忆中结合当时的情况,最终确定被入侵是由跨站漏洞所致,并且在随后的分析中兰州seo也发现了zblog确实存在跨站漏洞。
漏洞具体文件在上文,危害很大,一当黑客诱惑管理员点击某连接后,可以直接添加管理员、写webshell以及盗取cookies,已经通知zblog官方。
|