网络安全第六讲数据库安全实例-sql注入

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数据库安全实例:SQL注射本讲目标了解网站的组成结构理解SQL注射的基本原理掌握工具及手工注射的方法如何防范SQL注射攻击一网站是如何构成的一般说来,网站基本构成方式为以下三部分:1、前台页面(供用户浏览)2、后台管理控制台(供管理员管理此站点)3、后台数据库(记录用户密码及其他数据)网站结构随页面类型和数据库类型不同而呈现多种组合.了解网页的类型准备工作网页的类型静态网页*.html*.htmHyperTextMarkupLanguage超文件标记语言动态网页*.asp*.aspx*.php*.cgi*.jsp思考:动态网站后台支持的数据库有哪些?动态网页的组合OnWindows:IIS+asp+acessIIS+asp+ms-sqlOnUnix/Linux:Apache+php+mysqlApache+jsp+oracle70%30%思考:网站前台脚本语言与后台数据库之间是如何连接的?如asp与access是如何连接的?如asp与ms-sql是如何连接的?数据库连接文件Asp+accessAsp+mssql二SQL注射的基本原理SQL注射的历史SQL注射的概念SQL注射的原理SQL注射的优点SQL注射的历史早在1999年SQL注射攻击已经在国外出现了,那时国内技术不成熟,直到2002年我国才逐步兴起SQL注射,2004年SQL注射技术达到顶峰,2005年和2006年WEB攻击技术却未出现大的进步。尽管SQL防御方法早已出现,但是注射攻击的灵活性和复杂性使得注射攻击仍然为当前WEB攻击方式的先锋军。什么是SQL注射及其原理我们可以通俗的理解为攻击者利用程序员对用户输入数据的合法性检测不严或不检测的特点,故意从客户端提交特殊的数据库查询代码,使数据库泄露敏感信息,如:网站后台管理员密码,甚至直接利用数据库高权限间接攻击服务器,从而达到入侵目的。这就是所谓的SQLInjection,即SQL注入。SQL注射的优点SQL注射是从正常的端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注射发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。但是,SQL注射的手法相当灵活,在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析,构造巧妙的SQL语句,是SQL注射成功的关键。三实施SQL注射攻击准备工作理清攻击思路利用SQL注射工具攻击手工注射攻击上传木马提权准备工作-概念什么是webshell?webshell是web入侵的脚本攻击工具。简单的说来,webshell就是一个asp或php木马后门,黑客在入侵了一个网站后,常常在将这些asp或php木马后门文件放置在网站服务器的web目录中,与正常的网页文件混在一起。然后黑客就可以用web的方式,通过asp或php木马后门控制网站服务器,包括上传下载文件、查看数据库、执行任意程序命令等。Webshell的优点webshell最大的优点就是可以穿越防火墙,由于与被控制的服务器或远程主机交换的数据都是通过80端口传递的,因此不会被防火墙拦截。并且使用webshell一般不会在系统日志中留下记录,只会在网站的web日志中留下一些数据提交记录,没有经验的管理员是很难看出入侵痕迹的。什么是“木马”?“木马”全称是“特洛伊木马(TrojanHorse)”,原指古希腊士兵藏在木马内进入敌方城市从而占领敌方城市的故事。在Internet上,“特洛伊木马”指一些程序设计人员在其可从网络上下载(Download)的应用程序或游戏中,包含了可以控制用户的计算机系统的程序,可能造成用户的系统被破坏甚至瘫痪。附:什么是特洛伊木马?“特洛伊木马”(trojanhorse)简称“木马”,据说这个名称来源于希腊神话《木马屠城记》。古希腊有大军围攻特洛伊城,久久无法攻下。于是有人献计制造一只高二丈的大木马,假装作战马神,让士兵藏匿于巨大的木马中,大部队假装撤退而将木马摈弃于特洛伊城下。城中得知解围的消息后,遂将“木马”作为奇异的战利品拖入城内,全城饮酒狂欢。到午夜时分,全城军民尽入梦乡,匿于木马中的将士开秘门游绳而下,开启城门及四处纵火,城外伏兵涌入,部队里应外合,焚屠特洛伊城。后世称这只大木马为“特洛伊木马”。如今黑客程序借用其名,有“一经潜入,后患无穷”之意。什么是后门?大家都知道,一台计算机上有65535个端口,那么如果把计算机看作是一间屋子,那么这65535个端口就可以它看做是计算机为了与外界连接所开的65535扇门。每个门的背后都是一个服务。有的门是主人特地打开迎接客人的(提供服务),有的门是主人为了出去访问客人而开设的(访问远程服务)——理论上,剩下的其他门都该是关闭着的,但偏偏由于各种原因,很多门都是开启的。于是就有好事者进入,主人的隐私被刺探,生活被打扰,甚至屋里的东西也被搞得一片狼迹。这扇悄然被开启的门——就是“后门”。友情提示:为了全面了解动态网页回答的信息,首选请调整IE的配置。把IE菜单-工具-Internet选项-高级-显示友好HTTP错误信息前面的勾去掉。否则,不论服务器返回什么错误,IE都只显示为HTTP500服务器错误,不能获得更多的提示信息。Web攻击思路1.踩点(尽可能分析一切信息)2.找上传漏洞(有,上传木马)3.暴库(下载成功-6)4.SQL注射(先工具后手工)5.获取Web管理员密码(否-另寻他法)6.登陆后台(否-万能密码;再否-另寻..)7.上传木马(有过滤-找备份或另寻..)8.提权(略)仅供参考,根据实际情况不同,应有所改变SQL注射思路1.判断url是否可以注射2.判断数据库类型3.确定XP_CMDSHELL可执行情况4.猜测或直接得出表名和字段名5.构造语句得出字段的值如果第3步中XP_CMDSHELL可执行,那么就可以直接获得服务器最高权限。仅供参考,根据实际情况不同,应有所改变利用工具注射针对Access数据库和Mssql数据库类型操作差不多。工具有很多:明小子啊DNBSI…….目的:获得后台管理员密码。DemoSQL注入的位置SQL注入一般存在于形如:=YY等带有参数的ASP动态网页中。“id=YY”即为页面查询条件。注:有时一个动态网页中可能只有一个参数,有时可能有N个参数,有时是整型参数,有时是字符串型参数,不能一概而论。总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入。如果ASP程序员没有安全意识,不进行必要的字符过滤,存在SQL注入的可能性就非常大。Asp参数页面,有可能存在注射点手工注射-注射点类型=YY在页面执行中的含义:当YY为整型参数时当输入的参数YY为整型时,通常abc.asp中SQL语句原貌大致如下:select*from表名whereid=YY当YY为字符串型参数时当输入的参数YY为字符串时,通常abc.asp中SQL语句原貌大致如下:select*from表名whereid='YY'注意:不做特殊说明时所有参数均为整型参数,所有字符均在英文输入法状态下输入,并且站点结构为IIS+asp判断当前url是否为注射点参数为字符串型参数时如何判断(YY为字符串型参数)=YY’(单引号)abc.asp运行异常;=YYand1=1abc.asp运行正常,而且与=YY’运行结果相同=YYand1=2abc.asp运行异常;如果以上三步满足,abc.asp中一定存在SQL注入漏洞。那么=YY就是一个注射点判断数据库类型利用单引号判断Access=49,我们在这个地址后面加上单引号’,服务器会返回下面的错误提示:MicrosoftJETDatabaseEngine错误'80040e14'字符串的语法错误在查询表达式'ID=49''中。/showdetail.asp,行8我们可以得出网站使用的是Access数据库,通过JET引擎连接数据库,而不是通过ODBC(mssql所用).判断数据库类型cont.利用单引号判断Mssql=49,我们在这个地址后面加上单引号’服务器会返回下面的错误提示:MicrosoftOLEDBProviderforODBCDrivers错误'80040e21'ODBC驱动程序不支持所需的属性。/zrxx.asp,行97这就是使用Mssql数据库的站点了判断数据库类型cont.利用系统表ACCESS的系统表是msysobjects,且在WEB环境下没有访问权限,而MS-SQL的系统表是sysobjects,在WEB环境下有访问权限。对于以下两条语句:1、=YYand(selectcount(*)fromsysobjects)02、=YYand(selectcount(*)frommsysobjects)0注:若数据库是MS-SQL,则第一条一定运行正常,第二条则异常;若是ACCESS则两条都会异常。确定XP_CMDSHELL执行情况=YYand1=(SELECTcount(*)FROMmaster.dbo.sysobjectsWHERExtype='X'ANDname='xp_cmdshell')判断XP_CMDSHELL是否存在,返回正常则存在.=YYexecmaster..xp_cmdshell’netuser123123/add’;--•增加一个用户123,密码也为123,此处可使用任何NET命令。注:此处注射必须要在Mssql下有SA权限,所以一旦成功可以直取服务器最高权限,不过成功率很低.猜解表名和字段名针对Access数据库….abc.asp?id=YYand0(selectcount(*)fromadmin)---判断是否存在admin这张表….abc.asp?id=YYand0(selectcount(username)fromadmin)---判断是否存在username这个字段….abc.asp?id=YYand0(selectcount(password)fromadmin)---判断是否存在password这个字段注意:如果上面两条注入语句返回正常就说明存在表名和字段名,否则根据常用表名和字段名多次更改和判断,这里只能凭借猜解运气.常用表名和字段名在明小子—SQL注入—设置检测区中可以找到实验:IIS+ASP+ACCESS某站点SQL注射DEMO本讲总结网站的组成IIS+asp+acessIIS+asp+ms-sqlSQL注射的基本原理攻击者从客户端提交特殊的数据库查询代码,使数据库泄露敏感信息.工具及手工注射的方法判断注射点—判断数据库类型—猜解表名和列名—得出字段值—找后台手工注射工具:明小子的使用方法实验IIS+ASP+ACCESS(某站点)IIS+ASP+ACCESSCLIENTWEBSERVER

1 / 42
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功