探索黑客技术攻防,实战研究与安全创新

导航菜单

注入初体验

最近我正在学习Oracle数据库的注入,在此就把学习的经过写下来和大家分享一下,本文的测试环境为.net+Oracle 9i。我是在本地电脑中搭建环境来进行测试的,因为自己搭建的环境方便测试,即使出了错误也能很快的找到原因,搞明白了原因后才能更好的去测试安全。

我自己使用net编写了一个存在搜索漏洞的脚本,关于注入原理我简单的说一下,注入的形成是由于程序员在编写代码的时候对获取的值过滤不严,直接带入数据库查询而产生的,这样我们就可以精心构造SQL语句达到测试的目的,也就形成了注入,危险漫步的粉丝们可以翻看一下以前的文章,在此就不多嗦了。

Oracle系统库默认的用户有Sys、System、Internal、Scott,前三个用户都是System权限。关于数据库的注释我简单的介绍一下:accesg支持“null和“%00”注释,Mssql支持“一”和“;”的注释,Mysql支持“/$”的注释,而Oracle支持“一”的注释。

在实际的注入过程中首先要做的就是判断是否存在注入,关于搜索型的注入我们可以使用“OR”=“一”或者“关键字1=1来进行测试,但是什么都没有查询出来,因为and  1=+2不成立,所以自然不会查询出结果了。比较这两个页面返回了不同的数据,由于就可以确定存在注入精洞。

}L@I$F`$%$460_CI7Z3F4BG.jpg

关于判断字段数,可以使用“Order by”,也可以使用NULL-个一个的递加去试,使用NULL可以匹配所有的类型。

可以确定字段数为4Aj,接着使用uion来爆破字段的位置,在Oracle注入点使用union的时候大家需要注意,Orale和IMYSQL、SqiServer不同,Orcale使用uriion的时候必须要有from表名,不然会报错dual是系统表。在使用Unton的时候需要注意两个表之间的类型问题,字段对应的类型必须一样才可以。接下来我们再模拟爆出管理员的密码,现在我们还不知道表名和字段名,先来爆破一下,爆出了当前用户下所有的表名和字段。语句中的tablename是表名称,colmn namle是列的名称.user_tab_coluns表是用来存放当前用户的表和字段信息的,adin表-中有passord和useramP个列,下面我们就来爆破管理员的密码和帐户,执标“e%+ad%-uion select usernme,2.pasword,41 frm adnun-”,成功的爆出了帐号和密码。

现在,我们搞定了管理员的帐号和密码后就可以登录进入后台了,关于Oracle据库的注入我就简单的介绍到这里。

本文为网络安全技术研究记录,文中技术研究环境为本地搭建或经过目标主体授权测试研究,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,在挖掘、提交相关漏洞的过程中,应严格遵守相关法律法规。

相关推荐