标题:
对最新动力文章&动网暴库漏洞的问题
[打印本页]
作者:
踏月不留痕
时间:
2004-2-10 01:18
标题:
对最新动力文章&动网暴库漏洞的问题
[这个贴子最后由踏月不留痕在 2004/02/10 08:23pm 第 2 次编辑] 好像是新公布的好东西,不知道这里怎么没人提啊? 对于动网我按照sniper的方法试了好几个论坛,结果令人郁闷。 动网版本不高,基本可以成功转移conn.asp文件,(不好意思,这个文件一转移,论坛就不能用了,所以又一个一个通知那几个站长再拷一个文件) 但是到暴库的关键时候就不行了,提示500内部服务器错误,并没有数据库信息。 文章里说这可能是由于使用绝对路径的关系,但我不至于试的衰到全是绝对论经吧,使用绝对路径比例大概有多少呢? 还有动力文章系统,不用移动文件,可是结果一样500内部服务器错误,无数据库信息。 我菜,是不是用的方法不对? 文章里只说与路径有关, 是不是也与服务器的设置有关? 副原文章 藏好了吗之轻松揪出数据库 -------------------------------------------------------------------------------- 本文作者:sniper 文章性质:原创 发布日期:2004-02-08 出自:www.4ngel.net E-Mail:sniper@77169.com 此文已在《黑客X档案》发表 ###################################### 前言 数据库作为一个站点的核心部分其重要性自然不言而喻,网管们也煞费苦心的把数据库改名、加上特殊符号来增加安全性。但是最近一些安全站点的数据库路径纷纷被人找到并下载,也就是最近讨论的很热的"暴库"技术。我和紫幻以及黑客X档案的各位朋友们也对这门技术进行了研究。虽说研究成果还不是很多,但希望能起一个抛转引玉的作用。下面我就拿两个系统来做实例分析: 动力文章系统 一般说来每一个站点程序文件中都会有一个连接数据的文件(一般是conn.asp),当然这个文件名和路径并不是固定的,有的是在站点根目录下,有的是放在专门的一个文件夹里,通常这个文件夹名为INC,文件名为conn.asp。如果把这和暴库联系起来,通常人们都会想到通过访问这个文件来得到关于数据库的信息,而实际上我们直接访问这个文件是不会得到我们想要的信息的,所以就需要结合一些漏洞来达到暴库的目的。 首先我来简单介绍一下这个程序,动力文章系统分为商业SQL版本和免费ACCESS版本,我们这里测试的当然是ACCESS版的。程序的conn.asp文件用于连接数据库,在/INC这个目录下,数据库文件在/Database目录下。连接数据库用的是相对路径:db="database/adsfkldfogowerjnokfdslwejhdfsjhk.mdb" 动力文章系统的这个数据库路径泄露隐患应该算是程序员的疏忽而造成的,由于conn.asp这个文件本身存在隐患,导致攻击者获得数据库路径。漏洞发现者:天天(即黑客X论坛叫sohu的那位MM:),参与研究者:怪狗、iceyes、sniper。(漏洞分析可以参考http://www.hackerxfiles.net/bbs/dispbbs.asp?boardID=4&ID=27293)。 开始的时候我们还以为editor.asp这个文件缺乏足够的验证,但是后来分析我们才发现不是editor.asp的问题。天天的那种做法只是利用editor.asp查看服务器返回信息。我们再来演示一下这攻击过程。在IE中打开这个页面,看看这个页面能够起到什么作用(如图一)。 显然,这个文件是用于编辑文章内容的时候用的,虽然没有什么别的权限,但是我们可以编辑更改HTML页面。点击"原代码"找到这样一段内容:
这是该页面进行身份验证的时候,将内容传递给Admin_ChkLogin.asp这个文件的内容,下面我们要做的就是把它改成conn.asp文件了:
改好后,点"预览",看到什么了?看到了吧!数据库路径出来了(图二)! 二 这是什么原因呢,让我们看看这个: 'D:\web\power\access\inc\database\adsfkldfogowerjnokfdslwejhdfsjhk.mdb'不是一个有效的路径。确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。 目录结构我开始已经说了主目录下存在INC目录(用于存放conn.asp)和DATABASE目录(数据库文件,即adsfkldfogowerjnokfdslwejhdfsjhk.mdb),那既然DATABASE目录并不在INC目录下,刚才暴露数据库的时候却显示\inc\database\呢。这就是编写人员的一大疏忽。由于INC和DATABASE属于同级目录,当我们用editor.asp连接访问conn.asp的时候,由于DATABASE并没有在INC目录下,而系统确认为你是在请求\inc\database\adsfkldfogowerjnokfdslwejhdfsjhk.mdb这个文件,而实际上没有这个文件,系统找不到这个文件自然就报错拉。要解决这个问题,最直接的方法就是和动网那样使conn.asp处于数据库文件的上级目录或同一个目录中。 动网论坛 根据上面动力文章系统的分析我们可以得到存在数据库路径泄露这个问题的程序的标志: 1 conn.asp和调用它的文件(如INDEX.ASP)不在同一目录。 2 conn.asp连接数据库用的是相对路径。 知道了漏洞的原理,再来理解动网得到数据库的方法也就不难了。前一段时间臭要饭的发现了动网论坛的一个大漏洞,可以转移任何文件。如果单纯利用这个漏洞,至多可以把别人论坛文件删除,却得不到任何权限。那天我和紫幻讨论这个问题的时候,突然想到了一个方法,只要我们将这个漏洞结合我们动力文章得到数据库的方法,我们很容易的就可以想到得到动网论坛数据库的方法。下面和我一起来看看动网我们该怎么做吧。 动网的漏洞出在mymodify.asp这个文件上,它在对用户自定义头像的部分处理的过于草率,我们可以利用/.\来跳转目录并移动文件,看下面代码: '****************** '对上传头象进行过滤与改名 if Cint(Forum_Setting(7))=1 then on error resume next dim objFSO,upfilename,newfilename dim upface,memberid set rs=conn.execute("select userid,face from [user] where userid="&userid) memberid=rs(0) upface=trim(rs(1)) newfilename="" upfilename=split(upface,"/") if ubound(upfilename)=1 and upfilename(0)="uploadFace" then if instr(upfilename(1),"_")=0 then newfilename="uploadFace/"&memberid&"_"&upfilename(1) /用户定义的头像变为uploadFace/用户ID Set objFSO = Server.CreateObject("Scripting.FileSystemObject") if objFSO.fileExists(Server.MapPath(upface)) then objFSO.movefile ""&Server.MapPath(upface)&"",""&Server.MapPath(newfilename)&"" end if If Err.Number = 0 Then conn.execute("update [user] set face='"&newfilename&"' where userid="&userid) end if set objFSO=nothing end if end if rs.close set rs=nothing end if '对上传头象进行过滤与改名结束 '**************** 看看这句: newfilename="uploadFace/"&memberid&"_"&upfilename(1) /newfilename=用户定义的头像变为uploadFace/用户ID_upfilename的另一部分 再看: if objFSO.fileExists(Server.MapPath(upface)) then objFSO.movefile ""&Server.MapPath(upface)&"",""&Server.MapPath(newfilename)&"" /看见没有?最关键的部分来了,如果检测到upface代表的文件存在,则对改文件进行移动并改名! 好了,代码分析完毕,看看我们到底应该怎么样利用它吧。注册一个用户,进入基本资料修改的页面后,关键部分就要来了。大家还记得在玩showfiles类文件的时候跳转目录来查看资料吗?类似下面的的URL,我们就利用../来跳转目录对passwd文件进行查看。提交: http://www.target.com/show.php?file=../../../../../etc/passwd%00 相信大家都在那里把/、\、.和..的作用了解了吧。呵呵,下面我们要做的就是跳转目录把conn.asp转移过来。在自定义头像地址那里添上这样的一句: uploadFace/.\..\conn.asp (注意大小写) 前面已经分析过代码了,这句话的意思应该看的懂了吧,我们把“头像”地址指向了上级目录的conn.asp。由于符合它的判断条件upface存在,所以它就会把conn.asp这个文件转移到uploadFace这个目录来,这样就符合我们玩动力文章系统的时候的第一个条件了。一般大家用的都是相对路径,所以下面我们只要调用这个文件就会知道数据库路径。新建一个HTML文件写上如下内容:
再打开这个HTML文件,看看,数据库路径出来了吧!(如图三) 图三 安全篇 看来问题都出在conn.asp本身,不打自招。为了安全我们得好好处理一下它。 最笨的方法就是把它改名了,让别人猜不到路径。但是它要被很多文件调用,还得改其它地方。 我们用相对路径的时候,数据库路径会随着调用conn.asp的文件而改变,从而产生了错误。那么我们就让连接数据库使用绝对路径,这样一来不管谁调用conn.asp数据库路径都不变了。 我在测试动网这个漏洞的时候,发现对一些比较新的版本,就是文件挪移成功了也暴不出数据库路径。但是有的6.0版本有效。看来新的版本动网论坛对conn.asp进行了特殊的处理。对比了一下两个不同的conn.asp,发现新的conn.asp里加了这么一句: On Error Resume Next 这样一来,就是出错了不提示数据库信息,打死了也不招!当然以上的那些方法结合起来使用就更好了!
作者:
darkeyes
时间:
2004-2-12 10:36
标题:
对最新动力文章&动网暴库漏洞的问题
我觉的,关键的地方是要在本机上新建一个html文件才能暴出数据库的地址,要不然只能得到500错误的提示!
作者:
踏月不留痕
时间:
2004-2-12 21:43
标题:
对最新动力文章&动网暴库漏洞的问题
[这个贴子最后由踏月不留痕在 2004/02/12 09:58pm 第 4 次编辑]
高见,
根据你的提示,我试了试,最后终于爆出来啦。
想想可能是IE问题,默认出错跳转的本地页面蒙蔽了真实的信息
不过建了html文件后直接打开还不会得到路径,但是不建文件就一定得不到路径。
不过又有新问题,数据库竟然无法下载。
第一个数据库是silly.asp 还有情可原 错误提示如下
Active Server Pages 错误 'ASP 0116'
缺少关闭脚本分隔符
/bbs/data/silly.asp,行8040
Script 块缺少脚本关闭标记 (% >) 。
的二个倒是个xx.mdb直接就找不到文件 ,我都快晕了。
还望高手再来指点一下为什么?
作者:
darkeyes
时间:
2004-2-13 10:24
标题:
对最新动力文章&动网暴库漏洞的问题
如果是mdb文件的话,可能是名字中有#号,则需要转换一下才能下载,
要不然就是你把路径弄错了,路径中不包括conn.asp的那个目录名!
作者:
踏月不留痕
时间:
2004-2-13 10:35
标题:
对最新动力文章&动网暴库漏洞的问题
是转换成16进制的字符吧,我试试看.
也可能管理员趁我转移后在这里问怎么把库爆出来的那一天的空已经把数据库移走了,但是论坛还是没有恢复,而且那几乎是三不管论坛.已经没人访问了.
我知道不包含CONN.ASP的目录路径
关于第一个,能不能注入一下,上面提示没有脚本结束符,我要是变着法给他加在合适的位置呢?
我asp菜,如果能注入也不知道具体怎样注
作者:
darkeyes
时间:
2004-2-14 09:59
标题:
对最新动力文章&动网暴库漏洞的问题
呵呵,要是你能找到一处存在注入的地方,再配合这个漏洞,就好办啦!
欢迎光临 黑色海岸线论坛 (http://bbs.thysea.com/)
Powered by Discuz! 7.2