word基于SQL注入的渗透性测试技术研究.docx

上传人:b****1 文档编号:244346 上传时间:2022-10-07 格式:DOCX 页数:13 大小:23.53KB
下载 相关 举报
word基于SQL注入的渗透性测试技术研究.docx_第1页
第1页 / 共13页
word基于SQL注入的渗透性测试技术研究.docx_第2页
第2页 / 共13页
word基于SQL注入的渗透性测试技术研究.docx_第3页
第3页 / 共13页
word基于SQL注入的渗透性测试技术研究.docx_第4页
第4页 / 共13页
word基于SQL注入的渗透性测试技术研究.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

word基于SQL注入的渗透性测试技术研究.docx

《word基于SQL注入的渗透性测试技术研究.docx》由会员分享,可在线阅读,更多相关《word基于SQL注入的渗透性测试技术研究.docx(13页珍藏版)》请在冰豆网上搜索。

word基于SQL注入的渗透性测试技术研究.docx

基于SQL注入的渗透性测试技术研究第28卷

VO1.28

第l5期

NO.15

计算机工程与设计

ComputerEngineeringandDesign

2007年8月

Aug.2007

基于SQL注入的渗透性测试技术研究

余静,高丰,徐良华,朱鲁华

(江南计算技术研究所,江苏无锡214083)

摘要:

为了提高数据库系统的安全性,及时发现,防范网站中可能存在

的SQL注入漏洞,分析了基于SQL注入的渗透性测

试技术,在此基础上提出了渗透性测试的原型系统,给出了主要的功

能,通过对动网论坛的渗透性测试分析比较了原型系

统的效能.实验表明,该原型系统能较好发现系统的SQL注入的脆弱

点,从而帮助管理员提升系统的安全性.

关键词:

渗透测试;SQL注入;代码注入;函数注入;缓冲区溢出

中图法分类号:

TP393,08文献标识码:

A文章编号:

1000.7024(2007)15.3577.03

ResearchonpenetrationtestingbasedonSQLinjection

YUJing,GAOFeng,XULiang-hua,ZHULu-hua

(JiangnanInstituteofComputerTechnology,Wuxi214083,China)

Abstract:

InordertoimprovethesecurityofdatabasesystemandfindtheSQLi

njectionvulnerabilitiesintime,somekeypenetration

testingtechniquesarediscussedandbasedonwhichtheprototypesystemofpe

netrationtestingisintroducedThenthemainfunctions

aregivenandfinallythroughpenetrationtestingontheobjects,efficiencyofth

eprototypesystemiscomparedandanalyzed.Theex?

perimentshowsthattheprototypesystemCanfindSQLinjectionvulnerabiliti

eseffectuallyandhelptheadministratortoenhancethe

security.

Keywords:

penetrationtesting;SQLinjection;codeinjection;functioncallin

jection;bufferoverflow

0引言

很多Web系统存在脚本安全问题.攻击者利用与脚本有

关的安全漏洞(以下在不引起歧义的情况下将”安全漏洞”简称

为”漏洞”),可以访问原本不能访问的目录,甚至获取系统管理

员的权限”.主要的脚本攻击方法有结构化查询语言注入攻

击(SQL注入攻击)和跨站脚本攻击(css攻击).Web系统通常

的实现模式是在前端采用脚本语言,后端使用关系数据库服务器.而结构化查询语言(SQL)正是一种实现前端与关系数据

库进行交互的文本语言,也是目前使用最广泛的标准数据查

询语言.对于在前端采用ASP,JSP,PHP,PERL等脚本语言,

后端使用MSSQLServer,Access,Oracle,MYSQL,DB2,Informix

等数据库的Web系统,都可能存在SQL注入类型漏洞.

还没有一个严格的定义来解释什么是sOL注入漏洞,但

其本质是攻击者能够利用应用程序没有对用户输入的数据进

行严格约束和合法性检查等错误在程序中插入并执行自己构

造的sQL语句.例如,攻击者通过修改应用程序的Web表

单的输入域或页面请求的查询字符串等输入参数插入一系列

的SQL命令来改变数据库查询语句,从而欺骗服务器执行恶

意的SQL命令,实现对数据库未经授权的访问.

为降低甚至根除SQL注入漏洞带来的安全威胁,提高

Web系统的安全性,需要一种技术帮助系统管理员尽可能找

出系统中存在的SQL注入漏洞.渗透性测试通常运用成熟的

攻击性检测方法和技术,根据具体情况,对被测对象的网络和

计算环境实施实际的攻击性检测.其目的是检验被测对象网

络和计算环境的安全性和抗攻击的能力,从而更加准确掌握

被测对象整体的实际安全性和实际的抗网络攻击能力.本

文介绍一个基于SQL注入的渗透性测试原型系统以及相应的

测试技术,希望通过渗透测试的方法帮助系统管理员提高Web

系统的安全性.1SQL注入渗透性测试技术

根据SQL注入过程的不同阶段,SQL渗透测试技术大致

可以分为渗透准备技术和渗透实施技术.渗透准备技术包括

注入点的定位,数据库指纹识别和表结构的确定.寻找注入点

目前主要有单引号法和1=1,1=2的测试方法;数据库指纹识

别,根据不同数据库各自拥有的系统表以其在Web环境下的读

取权限来进行区分,当然对于SQLServer,利用user,db_nameO

等内置变量,函数在类型转换时出现的错误提示,来判断数据

库的类型也是常用的方法;表结构的确定,不同的测试环境,

收稿日期:

2006.09.03E-mail:

jxyujing@gmail.tom

作者简介:

余静(1982一),女,江西景德镇人,硕士,研究方向为网络安

全;高丰(1972一),男,浙江丽水人,博士,高级工程师,研究方向

为网络安全;徐良华(1963一),男,安徽无为人,博士,高级工程师,研究

方向为网络安全;朱鲁华(1964--),男,江苏盐城人,博士,教

授,高级工程师,博士生导师,研究方向为操作系统,网络安全

-——

3577-——

方法不同,比如在PHP+MYSQL的注入,就可以利用返回的数

据集或是构造特殊语句确定未知数据结构的字段及类型.

渗透实施技术则使用操作SQL语句,代码注入,函数注

入,缓冲区溢出等多种方式来实现重要信息的获取,木马上传,用户权限的提升.本文主要介绍渗透实施技术.

1.1操作SQL语句

通过添加WHERE子句的元素来修改已有的SQL语句,

或者是使用UNION,INTERSECT,ExCEPT(sYBAsE),MINUS

(0RACLE)等set操作来扩展SQL语句.

代表性的例子就是通过修改用户认证的WHERE子句,

使得WHERE条件始终成立,达到绕过认证的目的.SELECT

FROMusersWHEREusemame=Ibob‟andpassword=„mypass.

word‟这是一个检查用户身份的简单查询语句,如果密码输入

部分输入的不是mypassword而是mypassword‟ora=.a,于是

将SQL语句修改如下:

SELECTFROMuserSWHEREusemame=

„bob.andpassword_.mypassword.ora_‟a无论mypassword是

否正确,由于or语句的存在,使得WHERE子句始终成立,于

是就可以绕过认证访问应用程序.

UNION是在操作SQL攻击使用的最多的操作之一,可返

回其它表的数据集,实现跨表查询,SELECTproductname

FROMalljaroductsWHEREproduct..,攻击_namelike%Chairs%

者试图改变输入参数,执行SQL语句:

SELECTproductname

FROMall~aroductsWHEREproduct_

namelike‟%Chairs‟UNION

SELECTusemameFROMdba—

usersWHEREusemamelike%.不仅返回了allproducts表中所要查询产品的产品名而且也得到

了dbausers表中存储的所有数据库的用户账号.

1.2代码注入

代码注入指的是攻击者插入额外的SQL语句或是数据库

命令到SQL查询中,这种攻击在SQLSe~er服务器上频繁的

发生,而由于EXECUTE语句和MULTIPLESQL语句在Oracle

上的不到支持,因此这种攻击方式很少针对Oracle数据库的.

通过使用SELECT,DELETE,UPDATE,INSERT完成对用

户表users的查询,删除,更新,向表中添加自己构建的数据.

(1)SELECT语句

SELECTFROMusersWHEREusemame=„bob.andpass—

word=„mypassword‟:

SELECTFROMusers--‟

(2)DELETE语句

SELECTFROMusersWHEREusemame=.bob‟andpass-

word=.mypassword.:

DELETEFROMusersWHEREusemame=

„admin.

(3)UPDATE语句

SELECTFROMusersWHEREusemame=.bob.andpass-

word=.mypassword.:

UPDATE‟users.SET‟password‟=„newpas‟

WHEREusemame=„neo....

(4)sERT语句

SELECTFROMusersWHEREusemame=.bob‟andpass-word_‟mypassword‟;INSERTINTO.users‟usemame‟,.password‟)

VALUES(.neo2‟,‟newpas5‟)一一.

1.3函数注入

函数注入就是将数据库的内置函数或者是用户自己定义

——

3578——

的函数插入到存在注入漏洞的SQL语句中,实现对数据库中

的数据操作或是完成操作系统函数调用.

ORACLE数据库允许函数作为SQL语句的一部分执行,

缺省情况下ORACLE提供超过1000个函数,尽管其中只有小

部分能在注入攻击中使用,但是此类攻击能对数据库造成很

大的危害.

对于SELECTTRANSLATE(„userinput‟..0123456789AB.

CDEFGHIJKLMNOPQRSTUVWXYZ‟,‟0123456789‟)FROMdual;

这个查询语句其它几种注入方法都很难对其进行攻击,但是

函数注入却很好实现:

在用户输入部分注入数据库函数UTL

HTTP.request,可以向web服务器请求web页面:

SELECT

TRANSLATE(“llUTLHTTP.REQUESTttrI:

//192.168.1.1,)l_”,

.0l23456789ABCDEFGHIJKLMNOPQRSTUVWXYZ..

„0123456789.)FROMdual;也可以注入自己定义的函数,函数

adduser是用户包MYAPPADMIN中被标为”PRAGMATRANS.

ACTION”的自定义函数,语句SELECTTRANSLATE(.Cadmin.,.llmyappadmin.adduser.newpass‟)ll”,.0l23456789ABCDEFGH-

IJKLMNOPQRSTUVWXYZ‟,‟0123456789.)FROMdual;执行后

可以为应用程序

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1