0x01预备知识
1、概念:
相对路径和绝对路径
绝对路径:例如D:/test/test.mdb
相对路径:例如/test/test.mdb
2、%5C暴库
简单点说,就是在打开页面的时候把网页中的/换成%5C,然后提交就可以得到数据库地址了,但并不是所有的页面都可以成功,而需要“asp?id="这样的网址。因为这样的网址表示该页面调用了数据库,也就是说如果你知道一个文件调用了数据库,如search.asp、vote.asp等,都有可能导致暴库漏洞。
Conn.asp里面有数据库的路径信息 database=“路径”,这里的路径是一个相对的路径,根据调用它的页面文件的不同,会有不同的物理路径的解析,如果路径是\data\*.mdb,(网站的根目录是D:\wwwroot,conn.asp的路径是D:\wwwroot\inc\conn.asp,数据库的物理路径是D:\wwwroot\data\*.mdb,),哪个页面文件调用conn.asp,数据库的路径就是调用conn.asp的页面文件的路径+\data\*.mdb,如果是网站根目录下的文件调用的话是对的,数据库物理路径解析为D:\wwwroot\data\*.mdb。但是,如果是inc下的页面调用的话,数据库的物理路径就被解析成D:\wwwroot\inc\data\*.mdb,而这个路径是不存在的,这里的相对路径是数据库相对于调用页面的而被解析的路径,所以如果直接浏览器访问/inc/conn.asp,将会出错,并暴出网站数据库的地址路径。
0x02实验目的:
通过该实验了解conn.asp暴库原理,学会暴库漏洞的利用,以及该漏洞的防范。
0x03实验过程:
步骤一:通过暴库漏洞获取管理员账号密码进入后台
1)利用网站后台扫描工具wwwscan对目标服务器进行扫描,扫描的结果如下:
能发现目标网站的后台地址和一个/inc/conn.asp页面
2)接下来我们尝试用火狐浏览器访问测试网站是否存在漏洞,
访问10.1.1.218/inc/conn.asp,可以直接暴出网站数据库地址,说明存在漏洞,如下图所示,这是一个后缀名为.asp的数据库
3)在实际测试中,我们需要经验和多去尝试,针对报错的信息,发现存在被利用的风险,此处我尝试输入物理路径为/hetian/#hetian_lab.asp
浏览器访问http://10.1.1.218/hetian/#hetian_lab.asp,
4)发现被拒绝了,其实这是由于数据库地址前面有个#号,而这个#
号的作用是防止黑客非法下载数据库,绕过这个防御也很简单,直接把#号换成%23即可实现绕过。
访问http://10.1.1.218/hetian/%23hetian_lab.asp
5)可见,可以访问数据库,通过火狐浏览器把它下载下来,在此页面按住CTRL+S,弹出保存框,保存类型选择为所有文件,文件名后缀 改为.mdb。点击保存
6)保存之后打开桌面的辅臣数据库浏览器,并打开刚才保存的数据库就能看到网站的数据库了。
7)可以在数据库里发现网站后台的管理员账号和密码md5值
admin 7a57a5a743894a0e
发现密码也为admin ,在结合之前发现的后台,这样我们就可以进入后台
步骤二:通过暴库漏洞获取网站webshell
1)这里我们通过提交一句话数据,拿到shell(实际测试过程未必成功,具体问题具体分析)
进入网站后台后,发现存在一个可以添加管理员的功能
2)通过前面的步骤一我们可以知道网站的数据库格式为asp的,而这里刚好可以添加管理员,于是可以添加一个用户名为asp一句话木马,密码为123456的管理员账户,这样这个包含一句话木马的账号就会插入数据库,从而得到一个webshell,地址就为数据库的地址
3)打开中国菜刀,右击添加,地址栏填入数据库地址为http://10.1.1.218/hetian/%23hetian_lab.asp
(注意这里仍然要使用%23代替#号),后面密码框填入1,如下图所示:
添加完成后,双击webshell网址,成功获得了目标的webshell
步骤三:暴库漏洞的防范
在conn.asp暴库中,如果我们限制这个文件暴库,也就是说让它没报错就继续执行,如果暴库就执行另外的代码,这样我们就可以人为的操作代码报错的返回信息。
加入 “on error resume next”它的意思是不理会报错
通过菜刀找到目标网站/inc/conn.asp,双击进行编辑,找到on Error Resume Next 这句话,把前面的单引号注释去掉,点击右上角的保存。
保存之后,我们再用浏览器访问一下inc/conn.asp,如下图所示,发现没有再爆出数据库的地址了
除了改代码以外,我们还可以利用IIS的特性来解决这一问题
进入服务器的主机,通过点击开始->管理工具->Internet信息服务(IIS)管理器,打开IIS服务器,先查看网站的“属性”(在网站名称处右击选择属性即可),选择“主目录”标签项,在其中“执行权限”的右侧,点击“配置”按钮,弹出“应用程序配置”对话框,我们选择“调试”标签项,在这页面我们需要关注的是“脚本错误的错误信息”,具体如下图所示:
在默认情况下,通常是选择了“向客户端发送详细的ASP错误消息”的,正因为如此,攻击者可以得到服务器的敏感信息,这里我们将其修改为选择第二项,即“向客户端发送下列文本错误消息”,这样在访问conn.asp文件时,便会出现如下图所示:
分析与思考:
1、为什么在后台添加一句话用户时不在密码处填入一句话木马?
答:在步骤一可看出,在数据库中的密码是经过md5加密过的,故可以推测是经过加密的算法,所以一句话木马放在密码处会加密,进而失去getshell的功能。
2、思考其它的防止暴库漏洞的方法
答:①为你的数据库文件名称起个复杂的非常规的名字,并把它放在几层目录下。所谓“非常规”,打个比方说,比如有个数据库要保存的是有关书籍的信息,可不要给它起个简单的类似“book.mdb”的名字,而要起个复杂难猜解的名称,比如a2d4kjkolg.mdb,并把它放在./wwwroot/inc/kds/i78/stud/的几层目录下,这样黑客要想通过猜解的方式得到你的Access数据库文件就难上加难了。
②不要把数据库名写在程序中。假如万一给人拿到了源程序,你的数据库名字就一览无余了。
③使用Access来为数据库文件编码及加密。首先在“工具——安全——加密/解密数据库”中选取数据库,然后按确定,接着会出现“数据库加密后另存为”的窗口。此处要注意的是,以上的动作并不是对数据库设置密码,而只是对数据库文件加以编码,目的是为了防止他人使用别的工具来查看数据库文件的内容。
个人总结:
经过这次实验,建立起我脑海中对暴库漏洞从无到有的认识程度,其实在实际测试的时候,时常会看到.asp?sid=或id=等字眼,此次的报错出现的数据库名称,确实少见,但是从总体看来,体会和理解此conn.asp暴库漏洞的原理,和可以连接到实战过程中,不为是一种思路,总好过没有吧,哈哈。一步一个脚印吧,厚积薄发,离梦想就会越来越近了。