搜档网
当前位置:搜档网 › SQL注入漏洞攻击研究及防范措施

SQL注入漏洞攻击研究及防范措施

SQL注入漏洞攻击研究及防范措施
SQL注入漏洞攻击研究及防范措施

基于SQL的Web系统安全防范——SQL注入漏洞

攻击研究及防范措施

SQL-Based Web System Security——Structured Query Language Injection Leak Attack Study And

Defense Measure

摘要:在当今的数字世界中,人们发现在维持公开的Internet连接的同时,保护网络和计算机系统的安全变得越来越困难。病毒、木马、后门、蠕虫等攻击层出不穷,虚假网站的钓鱼行为也让警惕性不高的公众深受其害。据有关部门统计,2008年一季度,我国有15万台主机被植入木马,网站篡改数量迅速增加,预计已达5835个,其中政府网站达484个,每月564次的安全事件报告。为了减轻信息泄露及系统攻击带来的风险,企业和机构开始对自己的系统进行渗透性测试,找出其中存在的漏洞和安全隐患。本文通过对目前最流行的SQL注入漏洞攻击的过程做了逐一的分析, 并提出了检测方法和防范措施。

关键字:SQL注入漏洞攻击脚本攻击 SQL注入点检测防范模型有害代码

SQL注入(SQL Injection)漏洞攻击是目前网上最流行最热门的黑客脚本攻击方法之一,那什么是SQL 注入漏洞攻击呢?它是指黑客利用一些Web应用程序(如:网站、论坛、留言本、文章发布系统等)中某些存在不安全代码或SQL语句不缜密的页面,精心构造SQL语句,把非法的SQL语句指令转译到系统实际SQL语句中并执行它,以获取用户名、口令等敏感信息,从而达到控制主机服务器的攻击方法。

1. SQL注入漏洞攻击原理

1. 1 SQL注入漏洞攻击实现原理

SQL(Structured Query Language)是一种用来和数据库交互的语言文本。SQL注入的攻击原理就是攻击者通过Web应用程序利用SQL语句或字符串将非法的数据插入到服务器端数据库中,获取数据库的管理用户权限,然后将数据库管理用户权限提升至操作系统管理用户权限,控制服务器操作系统,获取重要信息及机密文件。

SQL注入漏洞攻击主要是通过借助于HDSI、NBSI 和Domain等SQL注入漏洞扫描工具扫描出Web页面中存在的SQL注入漏洞,从而定位SQL注入点,通过执行非法的SQL语句或字符串达到入侵者想要的操

作。下面以一段身份验证的.NET代码为例,说明一下SQL 注入攻击的实现方法。

SqlConnection nwConn = new

SqlConnection((string)ConfigurationSettings.A ppSet

tings["DBconnStrings"]);

string queryStr = "SELECT userid, userpwd, username,type FROM users where userid='" + Txtusername.Text + "'";

DataSet userSet = new DataSet();

SqlDataAdapter userAdapter = new SqlDataAdapter(queryStr, nwConn);

userAdapter.Fill(userSet, "Users");

Session["UserID"] = Txtusername.Text.ToString();

Session["type"] = type.Text.ToString();

Response.Redirect("/Myweb/admin/login.asp x");

从上面的代码中可以看出,程序在与数据库建立连接得到用户数据之后,直接将username的值通过session传给login.aspx,没有进行任何的过滤和处理措施, 直接用来构造SQL 语句, 其危险系数是非

常高的, 攻击者只要根据SQL 语句的编写规则就可以绕过身份验证,从而达到入侵的目的。

1. 2 SQL注入漏洞攻击分析

SQL注入可以说是一种漏洞,也可以说是一种攻击。当程序中的变量处理不当,没有对用户提交的数据类型进行校验,编写不安全的代码,构造非法的SQL 语句或字符串,都可能产生这个漏洞。

例如Web系统有一个login页面,这个login页面控制着用户是否有权访问,要求用户输入一个用户名和口令,连接数据库的语句为:

“select * from users where username = 'username' and password = 'password'”

攻击者输入用户名为aa or 1=1口令为1234 or 1=1之类的内容。我们可以看出实际上攻击者并不知道真正的用户名、口令,该内容提交给服务器之后,服务器执行攻击者构造出的SQL命令,但由于攻击者输入的内容非常特殊,所以最后得到的SQL命令变成:“select * from users where username = 'aa' or 1=1 and password = '1234' or 1=1”;

服务器执行查询或存储过程,将用户输入的身份信息和数据库users表中真实的身份信息进行核对,由于SQL命令实际上已被修改,存在永远成立的1=1

条件,因此已经不能真正验证用户身份,所以系统会错误地授权攻击者访问。

SQL 注入是通过目标服务器的80端口进行的,是正常的Web访问,防火墙不会对这种攻击发出警告或拦截。当Web服务器以普通用户的身份访问数据库时,利用SQL注入漏洞就可能进行创建、删除、修改数据库中所有数据的非法操作。而当数据库以管理用户权限的身份进行登录时,就可能控制整个数据库服务器。

SQL注入的方法很多,在以手动方式进行攻击时需要构造各种各样的SQL语句,所以一般攻击者需要丰富的经验和耐心,才能绕过检测和处理,提交语句,从而获得想要的有用信息。这个过程需要花费很多的时间,如果以这种手动方式进行SQL注入漏洞攻击,许多存在SQL注入漏洞的ASP、JSP、PHP、JAVA等网站就会安全很多了,不是漏洞不存在了,而是手动入侵者需要编程基础,但现在攻击者可以利用一些现成的黑客工具来辅助SQL注入漏洞攻击,加快入侵的速度,使SQL注入变得轻而易举。

由于SQL注入漏洞攻击利用的是通用的SQL语法,使得这种攻击具有广泛性。理论上说,对于所有基于SQL语言的数据库管理系统都是有效的,包括

MSSQLServer、Oracle、DB2、Sybase和MySQL等。当然,各种系统自身的SQL扩展功能会有所不同,因此最终的攻击代码可能不尽相同。

1. 3 SQL注入漏洞攻击过程

(1)绕过身份验证

如一个login界面,需要输入用户名和口令,然后Post到另一个页面,进行身份验证,因此攻击者只需在用户名和口令的输入框中都输入aa or’1’=’1’的内容,那么攻击者就可以通过欺骗的验证方式而直接进入下一个页面,并拥有和正常登录用户一样的全部特权。原因是什么呢? 我们比较一下正常用户登录和攻击者登录时的两种SQL语句:1)正常用户(如用户名为admin,口令为1234567) :

SQL= " select from users where username = ’admin’and password= ’1234567’ ";

2)攻击者(用户名和口令都为aa or’1’=’1’) :

SQL= " select * from users where username=' aa or’1’=’1’' and password = ' aa or’1’=’1’'";

可以看到由and连接的两个条件都被一个永远成

立的1=1所代替,执行的结果为true,数据库会认为条件恒成立,会返回一个true,让攻击者以合法身份登录进入下一个页面。

(2)执行非法操作

如一个查询页面select1.asp? id=1,编程人员原本设计意图是显示id为1的查询信息,而攻击者利用程序中没有对id内容进行检查的机制,插入自己的代码。

从select1.asp中摘录一段关键代码:

SQL= " select * from photo where photoid= 'id'";

可以看到,id没有进行任何的处理,直接构成SQL语句并执行,而攻击者在知道该系统数据库中表名及字段名的情况下,利用SQL语句特性(分号是将两句SQL 语句分开的符号),直接向数据库Tuser表中添加记录:

select1.asp? id= 1;Insert into Tuser (username,password,type) values ('hack','1234567','管理员'),然后攻击者就可以直接用hack进行登录了。通过这样的方法,攻击者还可以对系统做任何的事情,包括添加、删除、修改系统资源的操作。

(3)执行系统命令

如果Web主机使用MSSQL数据库管理系统,那么攻击者就可以用到xp_cmdshell这个扩展存储过程,xp_cmdshell是一个非常有用的扩展存储过程,用于执行系统命令,比如dir、net等,攻击者可以根据程序的不同,提交不同的语句:

exec master.dbo.xp_cmdshell " dir ";

exec master.dbo.xp_cmdshell " net user hack 1234567 /add ";

exec master.dbo.xp_cmdshell " net localgroup administrators hack /add ";

这样就可以向Web主机系统中成功添加了一个管理员帐户。

2. SQL注入漏洞攻击的检测方式及方法

2. 1检测方式

SQL注入漏洞攻击检测分为入侵前的检测和入侵后的检测。入侵前的检测,可以通过手工方式,也可以使用SQL注入漏洞扫描工具软件。检测的目的是为预防SQL注入漏洞攻击,而对于SQL注入漏洞攻击后的检测,主要是针对审计日志的查看,SQL注入漏洞攻击成功后,会在Web Service和数据库的审计日志中留下“痕迹”。

2. 2检测方法

(1)动态SQL检查

动态的SQL语句是一个进行数据库查询的强大的工具,但把它和用户输入混合在一起就使SQL注入成为了可能。将动态的SQL语句替换成预编译的SQL或者存储过程对大多数应用程序是可行的。预编译的SQL或者存储过程可以将用户的输入作为参数而不是命令来执行,这样就限制了入侵者的行动。当然,它不适用于存储过程中利用用户输入来生成SQL命令的情况。在这种情况下,用户输入的SQL命令仍可能得到执行,数据库仍然存在SQL注入漏洞攻击的危险。

(2)有效性校验

如果一个输入框只可能包括数字,那么要通过验证确保用户输入的都是数字。如果可以接受字母,检查是不是存在不可接受的字符,那就需要设置字符串检查功能。确保应用程序要检查以下字符:分号、等号、破折号、括号以及SQL关键字。

(3)数据表检查

使用SQL注入漏洞攻击工具软件进行SQL注入漏洞攻击后,都会在数据库中生成一些临时表。通过查看数据库中最近新建的表的结构和内容,可以判断是否曾经发生过SQL注入漏洞攻击。

(4)审计日志检查

在Web服务器中如果启用了审计日志功能,则Web Service审计日志会记录访问者的IP地址、访问时间、访问文件等信息,SQL注入漏洞攻击往往会大量访问某一个页面文件(存在SQL注入点的动态网页),审计日志文件会急剧增加,通过查看审计日志文件的大小以及审计日志文件中的内容,可以判断是否发生过SQL注入漏洞攻击事件;另外还可以通过查看数据库审计日志,查询某个时间段是否有非法的插入、修改、删除操作。

(5)其他

SQL注入漏洞攻击成功后,入侵者往往会添加特权用户(如:administrator、root、sa等)、开放非法的远程服务以及安装木马后门程序等,可以通过查看用户帐户列表、远程服务开启情况、系统最近日期产生的一些文件等信息来判断是否发生过入侵。

3. SQL注入漏洞攻击检测防范模型及措施

3. 1 防范模型

本人通过深入的学习研究,吸取前人的经验成果,提出了一种通用的SQL注入漏洞攻击检测防范模型如图1所示,本模型中所有检测均在服务器端进行。首先是校验客户端提交数据的有效性,自动识别该数

据类型是否符合程序中设定的值,如果校验未通过将禁止访问,返回重新输入数据并记录该过程;其次将输入的字符串类型与SQL注入规则库字符串类型进行比对,检测字符串类型是否合法(验证是否存在SQL 注入漏洞),若不合法也将禁止访问,返回重新输入数据并记录该操作;最后检测是否超过访问权限,如果未超过访问权限,就可以正常访问页面,若超过访问权限,除禁止访问,返回重新输入数据并记录该操作外,同时发送Email给管理员,如果超过3次邮件告警管理员还未采取任何措施,那么将通过手机短信方式进行告警,直到管理员采取防范措施为止。

图1 SQL 注入漏洞攻击检测防范模型

本模型的最大特点是自动将攻击信息及时地传递给管理员,方便管理员及时做出响应。

3. 2 防范措施

SQL 注入漏洞攻击的防范方法有很多种,现阶段总结起来有以下方法:

(1)数据有效性校验。如果一个输入框只可能客户端输入

服务器检测

数据有效

性校验

校验未通过

禁止访问 校验通过

SQL 注入规则库字符串比对

字符串是否

合法

授权访问 是

提交数据

重新输入

审计日志记录 是否超过访问权限 否

Email 告警

短信告警 超过3次

包括数字,那么要通过校验确保用户输入的都是数字。如果可以接受字母,那就要检查是不是存在不可接受的字符,最好的方法是增加字符复杂度自动验证功能。确保应用程序要检查以下字符:分号、等号、破折号、括号以及SQL关键字。另外限制表单数据输入和查询字符串输入的长度也是一个好方法。如果用户的登录名最多只有10个字符,那么不要认可表单中输入10个以上的字符,这将大大增加攻击者在SQL 命令中插入有害代码的难度。

(2)封装数据信息。对客户端提交的数据进行封装,不要将数据直接存入cookie中,方法就是在编程的代码中,插入session、if、try、else,这样可以有效地防止攻击者获取cookie中的重要信息。

(3)去除代码中的敏感信息。将在代码中存在的用户名、口令信息等敏感字段删除,替换成输入框。

如:SQL= " select from users where username = ’admin’and password= ’1234567’ "这样显然会暴露管理员的用户名、口令信息。可以将其修改成SQL= " select * from users where username='" + Txtuser.Text + "' and userpwd='" + Textpwd.Text + "'",这样就安全了很多,入侵者也是不会轻易的就获取到用户名、口令信息。

(4)替换或删除单引号。使用双引号替换掉所有用户输入的单引号,这个简单的预防措施将在很大程度上预防SQL注入漏洞攻击,单引号时常会无法约束插入数据的Value,可能给予输入者不必要的权限。用双引号替换掉单引号可以使大部分SQL注入漏洞攻击失败。

如:“select * from users where username='" + admin + "' and userpwd='" + 1234567 + "'”显然会得到与“select * from users where username='admin' and password= '1234567'”相同的结果。

(5)指定错误返回页面。攻击者有时从客户端尝试提交有害代码和攻击字符串,根据Web Service 给出的错误提示信息来收集程序及服务器的信息,从而获取想得到的资料。应在Web Service中指定一个不包含任何信息的错误提示页面。

(6)限制SQL字符串连接的配置文件。使用SQL 变量,因为变量不是可以执行的脚本,即在Web页面中将连接数据库的SQL字符串替换成指定的Value,然后将Web.config文件进行加密,拒绝访问。

(7)设置Web目录的访问权限。将虚拟站点的文件目录禁止游客用户(如:Guest用户等)访问,

将User用户权限修改成只读权限,切勿将管理权限的用户添加到访问列表。

(8)最小服务原则。Web服务器应以最小权限进行配置,只提供Web服务,这样可以有效地阻止系统的危险命令,如ftp、cmd、vbscript等。

(9)鉴别信息加密存储。将保存在数据库users 表中的用户名、口令信息以密文形式保存,也可以对users表进行加密处理,这样可以大大增加对鉴别信息访问的安全级别。

(10)用户权限分离。应尽可能的禁止或删除数据库中sa权限用户的访问,对不同的数据库划分不同的用户权限,这样不同的用户只能对授权给自己的数据库执行查询、插入、更新、删除操作,就可以防止不同用户对非授权的数据库进行访问。

4. 结束语

SQL注入漏洞攻击在网上非常普遍,许多ASP、PHP论坛和文章管理系统、下载系统以及新闻系统都存在这个漏洞。造成SQL注入漏洞攻击的主要原因是开发人员在系统开发的过程中编程不规范,没有形成良好的编程习惯,问题的解决只有依赖于规范编程。此外,也可以使用现有的SQL注入漏洞扫描器对整个网站中的关键代码进行扫描,查找网站页面中存在的

SQL注入点。对于有问题的页面,可以及时删除或更新。本文通过对SQL注入漏洞攻击的方法、原理以及攻击实施过程进行了阐述和总结,并给出了一些常见的SQL注入漏洞攻击防范的方法。

参考文献

[1] 高永强郭世泽网络安全技术与应用大典人民邮电出版社 2003.3

[2] 李匀等网络渗透测试-保护网络安全的技术、工具和过程电子工业出版社 2007.12

[3] 杨富国等网络操作系统安全清华大学出版社北京交通大学出版社 2007.2

[4] Mike Andrews等 Web入侵安全测试与对策清华大学出版社 2006.10

[5] 温鹏滕大鹏仲治国七剑黑客入门工具实例演练100 山东电子音像出版社 2005.10

[6] SQL注入攻击及其防范检测技术研究文章来自https://www.sodocs.net/doc/f614271676.html,

sql注入漏洞测试指南

sql注入漏洞测试指南 一、s ql注入的定义 一般是指在存在SQL注入漏洞的web应用上,攻击者将恶意构造的SQL语句通过web应用的输入点注入到后端数据库中 执行,以达到恶意操作数据库数据的目的。 SQL注入是通过正常的web应用服务器端口进行的,表面上与正常的数据请求没什么区别,如果不对这类恶意构造的SQL 语句进行防御的话,数据库很可能会因为SQL注入漏洞的存在 导致数据库中的信息受到威胁,比如数据被删除,挂马,留后 门,甚至被进一步利用而拿到操作系统的管理员权限。 二、s ql注入攻击是如何发生的 无论是内网环境还是外网环境(互联网),B/S模式架构的web应用(以下指网站)都直接或者间接地受到各种类型的web 攻击。对于后端数据库来说,以SQL注入带来的危害最为普遍, 由于网站服务端语言自身的缺陷与程序员编写代码的安全意识 不足导致了攻击者可以将恶意SQL语句注入到正常的数据库操 作指令上,从而在数据库中被解析执行。 注入之前需要找到网站的各类与数据库形成交互的输入点。 通常的一个网站的输入点包括: 表单提交,主要是POST请求,也包括GET请求等;

URL参数提交,GET请求; Cookie参数提交; HTTP请求头部的一些可修改的值,比如Referer、User_Agent等,cookie也是存在于HTTP请求头中; 一些边缘的输入点,比如mp3文件的一些文件信息等; 其实只要服务端从客户端直接或间接获取到数据这一过程都是一次输入过程,无论直接或间接,输入的数据都应该默认认为是不安全的。 上面的各类输入点,只要任何一点存在过滤不严,过滤缺陷等问题,都有可能发生SQL注入攻击。很多时候SQL注入的过程都是由工具完成的,甚至包括大批量注入工具的使用。三、s ql注入举例 假设DB中存在如下数据: +----+---------+----------+ | id | uid | password | +----+---------+----------+ | 1 | test | abc | | 3 | user | abc | | 5 | user2| abc | | 6 | admin | abc | +----+---------+----------+

五大著名免费SQL注入漏洞扫描工具

大量的现代企业采用Web应用程序与其客户无缝地连接到一起,但由于不正确的编码,造成了许多安全问题。Web应用程序中的漏洞可使黑客获取对敏感信息(如个人数据、登录信息等)的直接访问。 Web应用程序准许访问者提交数据,并可通过互联网从数据库中检索数据。而数据库是多数Web应用程序的心脏。数据库维持着Web应用程序将特定内容交给访问者的数据,Web应用程序在将信息交给客户、供应商时,也从数据库取得数据。 SQL注入攻击是最为常见的Web应用程序攻击技术,它会试图绕过SQL命令。在用户输入没有“净化”时,如果执行这种输入便会表现出一种SQL注入漏洞。 检查SQL注入漏洞主要涉及到两方面,一是审计用户的Web应用程序,二是通过使用自动化的SQL注入扫描器执行审记的最佳方法。在此,笔者罗列了一些对Web应用程序开发人员和专业的安全审计人员有价值的SQL注入扫描程序。 一、SQLIer SQLIer可以找到网站上一个有SQL注入漏洞的URL,并根据有关信息来生成利用SQL注入漏洞,但它不要求用户的交互。通过这种方法,它可以生成一个UNION SELECT查询,进而可以强力攻击数据库口令。这个程序在利用漏洞时并不使用引号,这意味着它可适应多种网站。 SQLIer通过“true/false”SQL注入漏洞强力口令。借助于“true/false” SQL注入漏洞强力口令,用户是无法从数据库查询数据的,只能查询一个可返回“true”、“false”值的语句。 据统计,一个八个字符的口令(包括十进制ASCII代码的任何字符)仅需要大约1分钟即可破解。 其使用语法如下,sqlier [选项] [URL] 。其选项如下: -c :[主机] 清除主机的漏洞利用信息 -s :[秒]在网页请求之间等待的秒数 -u:[用户名]从数据库中强力攻击的用户名,用逗号隔开。 -w:[选项]将[选项]交由wget 此外,此程序还支持猜测字段名,有如下几种选择: --table-names [表格名称]:可进行猜测的表格名称,用逗号隔开。 --user-fields[用户字段]:可进行猜测的用户名字段名称,用逗号隔开。 --pass-fields [口令字段]:可进行猜测的口令字段名称,用逗号隔开。 下面说一下其基本用法: 例如,假设在下面的URL中有一个SQL注入漏洞: https://www.sodocs.net/doc/f614271676.html,/sqlihole.php?id=1 我们运行下面这个命令: sqlier -s 10 https://www.sodocs.net/doc/f614271676.html,/sqlihole.php?id=1从数据库中得到足够的信息,以利用其口令,其中的数字“10”表示要在每次查询之间等待10秒钟。 如果表格、用户名字段、口令字段名猜测得正确,那么漏洞利用程序会把用户名交付查询,准备从数据库中强力攻击口令。 sqlier -s 10 https://www.sodocs.net/doc/f614271676.html, -u BCable,administrator,root,user4 然而,如果内建的字段/表格名称没有猜中正确的字段名,用户就可以执行: sqlier -s 10 https://www.sodocs.net/doc/f614271676.html, --table-names [table_names] --user-fields [user_fields] --pass-fields [pass_fields]

SQL注入攻击实验报告

实验报告 (实验名称:SQL注入攻击)

一、实验目的 通过SQL注入攻击,掌握网站的工作机制,认识到SQL注入攻击的防范措施,加强对Web攻击的防范。 二、实验环境 描述实验开展所基于的网络环境,给出网络拓扑、IP地址、web服务器、客户机等信息。 宿主机(客户机):操作系统为Windows 10,IP为192.168.18.11,在主机上安装虚拟化软件Vmware Player,在此基础上创建虚拟机并安装操作系统,进行网络配置,采用环回适配器,桥接模式,实现宿主机与虚拟机之间的网络通信,虚拟机(Web服务器):操作系统为Windows XP,IP为192.168.18.9, 本实验利用windows 的iis 服务搭建了一个有SQL 注入漏洞的网站“ASP 新闻发布系统”,以该网站为目标,对其实施SQL 注入攻击。 本实验所需工具如下: IIS 是Internet Information Server 的缩写,是微软提供的Internet 服务器软件,包括Web、等服务器,也是目前常用的服务器软件。版本不限。 “啊D”注入工具:对“MSSQL 显错模式”、“MSSQL 不显错模式”、“Access”等数据库都有很好的注入检测能力,内集“跨库查询”、“注入点扫描”、“管理入口检测”、“目录查看”等等于一身的注入工具包。 “ASP 新闻发布系统”Ok3w v4.6 源码。 三、实验内容 (一)配置实验环境, 首先选择网络适配器,安装环回适配器,在主机上安装Vmware Player,成功启动虚拟机。接着配置宿主机和虚拟机的IP,如图 要注意的是,配置主机上的IP时,应该选择VMnet8,并且注意勾取Bridge

如何防范SQL注入漏洞

如何防范SQL注入漏洞,下面给出4个函数,足够你抵挡一切SQL注入漏洞!读懂代码,你就能融会贯通。 注意要对所有的request对象进行过滤:包括 request.cookie, request.Server Variables 等等容易被忽视的对象: function killn(byval s1) '过滤数值型参数 if not isnumeric(s1) then killn=0 else if s1<0 or s1>2147483647 then killn=0 else killn=clng(s1) end if end if end function function killc(byval s1) 过滤货币型参数 if not isnumeric(s1) then killc=0 else killc=formatnumber(s1,2,-1,0,0) end if end function function killw(byval s1) '过滤字符型参数 if len(s1)=0 then killw="" else killw=trim(replace(s1,"'","")) end if end function function killbad(byval s1) 过滤所有危险字符,包括跨站脚本 If len(s1) = 0 then killbad="" else killbad = trim(replace(replace(replace(replace (replace(replace(replace(replace(s1,Chr(10), "
"), Chr(34), """), ">", ">"), "<", "<"), "&", "&"), chr(39),"'"),chr(32)," "),chr(13),""))

921202-信息系统安全与对抗实践-9. sql注入漏洞(一)

信息系统安全与对抗实践 SQL 注入漏洞(一)

内容提要 ?SQL注入漏洞 -基本介绍 -基本原理 -攻击步骤 ?靶场搭建 -DVWA(综合型靶场) -Sqli-labs(SQL注入靶场) 2

3 ?SQL Injection ,即SQL 注入,是指攻击者通过注入恶意的SQL 命令,破坏SQL 查询语句的结构,从而达到执行恶意SQL 语句的目的。SQL 注入漏洞的危害是巨大的,常常会导致整个数据库被“脱裤”,尽管如此,SQL 注入仍是现在最常见的Web 漏洞之一。 ?原理 select *from user where username =‘$username ’,红色部分内容为用户可控的内容,如果我们尝试输入一个单引号(‘)。Sql 语句就变成了select *from user where username =’’’,前面两个单引号组成了一对,后面空出一个单引号不符合语法规则,所以产生报错。此时我们已经修改了原本SQL 语句的结构。 输入$username 参数的地方也叫做注入点,注入点可能存在于GET 参数内、POST 参数内、HTTP 头字段内等。SQL 注入漏洞

SQL注入漏洞 ?原理 如果我们输入’ or ‘1’=‘1,那么sql语句就会变成select * from user where username = ‘’or ‘1’=‘1’,此时该语句就等同于select * from user 。 ?实战 -绕过登录 select * from username = ‘$username’ and password =‘$password’ -方法 ?使用注释 ?闭合单引号 4

web安全性测试sql注入高级篇

看完入门篇和进阶篇后,稍加练习,破解一般的网站是没问题了。但如果碰到表名列名猜不到,或程序作者过滤了一些特殊字符,怎么提高注入的成功率?怎么样提高猜解效率?请大家接着往下看高级篇。 第一节、利用系统表注入SQLServer数据库 SQLServer是一个功能强大的数据库系统,与操作系统也有紧密的联系,这给开发者带来了很大的方便,但另一方面,也为注入者提供了一个跳板,我们先来看看几个具体的例子: ①;exec master..xp_cmdshell “net user name password /add”-- 分号;在SQLServer中表示隔开前后两句语句,--表示后面的语句为注释,所以,这句语句在SQLServer中将被分成两句执行,先是Select出ID=1的记录,然后执行存储过程xp_cmdshell,这个存储过程用于调用系统命令,于是,用net命令新建了用户名为name、密码为password的windows的帐号,接着: ②;exec master..xp_cmdshell “net localgroup name administrators /add”-- 将新建的帐号name加入管理员组,不用两分钟,你已经拿到了系统最高权限!当然,这种方法只适用于用sa连接数据库的情况,否则,是没有权限调用xp_cmdshell的。 ③;;and db_name()>0 前面有个类似的例子and user>0,作用是获取连接用户名,db_name()是另一个系统变量,返回的是连接的数据库名。 ④;backup database 数据库名to disk=’c:\inetpub\wwwroot\1.db’;-- 这是相当狠的一招,从③拿到的数据库名,加上某些IIS出错暴露出的绝对路径,将数据库备份到Web目录下面,再用HTTP把整个数据库就完完整整的下载回来,所有的管理员及用户密码都一览无遗!在不知道绝对路径的时候,还可以备份到网络地址的方法(如\\,但成功率不高。

Web应用SQL注入漏洞检测工具的设计与实现

龙源期刊网 https://www.sodocs.net/doc/f614271676.html, Web应用SQL注入漏洞检测工具的设计与实现 作者:张鑫张婷段新东林玉香 来源:《信息安全与技术》2014年第08期 【摘要】由于Web应用系统的开发周期较短,同时开发人员安全编程意识不足,Web 应用程序会存在漏洞。因此,检测Web应用系统的安全性是安全领域的亟待解决的问题。SQL注入漏洞检测工具模拟黑客攻击的方式,采用网络爬虫技术建立需检测的URL库,依据SQL注入模板精心构造URL,并从根据浏览器返回信息,判定是否存在SQL注入点。可以提前意识到Web应用存在的漏洞,并及时修补,降低系统受攻击的风险,是有效的Web安全防护手段。 【关键词】 SQL注入;漏洞检测;Web安全 【中图分类号】 TP311 1 引言 采用B/S架构,并通过HTTP或HTTPS协议提供访问的应用服务统称为Web应用。目前,几乎所有政府、通信、证券、银行以及电子商务都支持在线交易和查询服务,包括个人账户、用户信息、交易记录等在内的用户的敏感信息,都通过Web应用系统存储在数据库中,一旦数据被盗取或篡改,都会造成巨大损失。为降低系统受攻击的风险,可利用Web应用安全漏洞扫描技术,可以实现在线的Web应用健康检查,提醒网站管理员进行修补,是效果好的Web安全防护手段。 2 Web 应用中常见漏洞攻击 Web 应用大多涉及服务器端的动态处理,同时,开发人员可能在开发过程中疏忽参数的输入检查,因此会出现各种Web 应用安全问题,会产生相关漏洞,例如文件包含漏洞,目录遍历漏洞,信息泄露漏洞和SQL 注入漏洞给攻击者留下可乘之机。 由于SQL 注入漏洞利用Web应用开放的端口,通常防火墙等设备无法检测到,所以其隐蔽性高,如果攻击者不留下痕迹,或者管理员没有查看数据库日志的习惯,基本不会发现。 根据美国国家漏洞数据库(NVD)的统计,SQL注入在针对Web应用攻击手段中名列榜首,是互联网危害最大的安全漏洞。SQL注入攻击的几个过程。

五大著名免费SQL注入漏洞扫描工具

五大著名免费SQL注入漏洞扫描工具 大量的现代企业采用Web应用程序与其客户无缝地连接到一起,但由于不正确的编码,造成了许多安全问题。Web应用程序中的漏洞可使黑客获取对敏感信息(如个人数据、登录信息等)的直接访问。 Web应用程序准许访问者提交数据,并可通过互联网从数据库中检索数据。而数据库是多数Web应用程序的心脏。数据库维持着Web应用程序将特定内容交给访问者的数据,Web应用程序在将信息交给客户、供应商时,也从数据库取得数据。 SQL注入攻击是最为常见的Web应用程序攻击技术,它会试图绕过SQL命令。在用户输入没有“净化”时,如果执行这种输入便会表现出一种SQL注入漏洞。 检查SQL注入漏洞主要涉及到两方面,一是审计用户的Web应用程序,二是通过使用自动化的SQL注入扫描器执行审记的最佳方法。在此,笔者罗列了一些对Web应用程序开发人员和专业的安全审计人员有价值的SQL注入扫描程序。 一、SQLIer SQLIer可以找到网站上一个有SQL注入漏洞的URL,并根据有关信息来生成利用SQL 注入漏洞,但它不要求用户的交互。通过这种方法,它可以生成一个UNION SELECT查询,进而可以强力攻击数据库口令。这个程序在利用漏洞时并不使用引号,这意味着它可适应多种网站。 SQLIer通过“true/false”SQL注入漏洞强力口令。借助于“true/false” SQL注入漏洞强力口令,用户是无法从数据库查询数据的,只能查询一个可返回“true”、“false”值的语句。 据统计,一个八个字符的口令(包括十进制ASCII代码的任何字符)仅需要大约1分钟即可破解。 其使用语法如下,sqlier [选项] [URL] 其选项如下: -c :[主机] 清除主机的漏洞利用信息 -s :[秒]在网页请求之间等待的秒数 -u:[用户名]从数据库中强力攻击的用户名,用逗号隔开。 -w:[选项]将[选项]交由wget 此外,此程序还支持猜测字段名,有如下几种选择: --table-names [表格名称]:可进行猜测的表格名称,用逗号隔开。

SQL注入漏洞攻击研究及防范措施

基于SQL的Web系统安全防范——SQL注入漏洞 攻击研究及防范措施 SQL-Based Web System Security——Structured Query Language Injection Leak Attack Study And Defense Measure 摘要:在当今的数字世界中,人们发现在维持公开的Internet连接的同时,保护网络和计算机系统的安全变得越来越困难。病毒、木马、后门、蠕虫等攻击层出不穷,虚假网站的钓鱼行为也让警惕性不高的公众深受其害。据有关部门统计,2008年一季度,我国有15万台主机被植入木马,网站篡改数量迅速增加,预计已达5835个,其中政府网站达484个,每月564次的安全事件报告。为了减轻信息泄露及系统攻击带来的风险,企业和机构开始对自己的系统进行渗透性测试,找出其中存在的漏洞和安全隐患。本文通过对目前最流行的SQL注入漏洞攻击的过程做了逐一的分析, 并提出了检测方法和防范措施。 关键字:SQL注入漏洞攻击脚本攻击 SQL注入点检测防范模型有害代码

SQL注入(SQL Injection)漏洞攻击是目前网上最流行最热门的黑客脚本攻击方法之一,那什么是SQL 注入漏洞攻击呢?它是指黑客利用一些Web应用程序(如:网站、论坛、留言本、文章发布系统等)中某些存在不安全代码或SQL语句不缜密的页面,精心构造SQL语句,把非法的SQL语句指令转译到系统实际SQL语句中并执行它,以获取用户名、口令等敏感信息,从而达到控制主机服务器的攻击方法。 1. SQL注入漏洞攻击原理 1. 1 SQL注入漏洞攻击实现原理 SQL(Structured Query Language)是一种用来和数据库交互的语言文本。SQL注入的攻击原理就是攻击者通过Web应用程序利用SQL语句或字符串将非法的数据插入到服务器端数据库中,获取数据库的管理用户权限,然后将数据库管理用户权限提升至操作系统管理用户权限,控制服务器操作系统,获取重要信息及机密文件。 SQL注入漏洞攻击主要是通过借助于HDSI、NBSI 和Domain等SQL注入漏洞扫描工具扫描出Web页面中存在的SQL注入漏洞,从而定位SQL注入点,通过执行非法的SQL语句或字符串达到入侵者想要的操

相关主题